Android面试必考基础题
Posted 码农搬砖_2020
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android面试必考基础题相关的知识,希望对你有一定的参考价值。
(1)《必考题》请写出android系统架构有几层,分别是哪几层?
考点:Android系统架构
答案:有四层。分别是Linux内核、本地库和Java运行时环境、应用程序框架、应用程序。
(2)《必考题》请简要介绍Android的四大组件?
考点:Android四大组件
答案:Android系统有四种组件,这四种组件构成了Android应用的框架,然后由Intent联系这四种组件。Activity用来显示Android的程序界面,一个应用往往有多个界面,所以一个应用中会有多个Activity。Service没有界面的后台服务,会一直运行在后台。常被用来做数据处理,也可以做一些定时的任务。Broadcast Receiver是Android的广播接收器,在广播机制中充当广播的接受者的作用,Android中充满了各种广播,所有需要有选择地接收一些有用的广播,然后处理这些广播。ContentProvider可直译为内容提供者,它是用在不同的应用程序之间共享数据时,可以把一个应用的数据提供给其他的应用使用。
(3)《必考题》Activity或Fragment的生命周期?
答案:以前的文章介绍过了,这里就不详细说了。
(4)《必考题》Activity的四种基本状态分别是哪些?
答案:运行态(Running)、暂停态(Paused)、停止态(Stopped)、终止态(Destroyed)
(5)《必考题》activity的启动模式?
答案:standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。 singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。 singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。 singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。
(6)《必考题》Android中的五大布局?
答案:LinearLayout线性布局、RelativeLayout相对布局、TableLayout表格布局、FrameLayout帧布局和AbsoluteLayout绝对布局。
(7)《必考题》ListView的缓存原理?
考点:请简单介绍一下ListView的缓存机制。
答案:①如果有几千、几万甚至更多的项时,其中只有可见的项存在于内存中,其它的都在Recycler中,Recycler是Android中专门用来处理缓存的组件。②ListView先通过getView()方法请求一个View,然后请求其它可见的View。convertView在getView中是空的(null)。③当列表第一项滚出屏幕,并且一个新的项从屏幕低端上来时,ListView会再请求一个View,这时,convertView已经不是空值了,它的值是滚出屏幕的第一项,之后只需设定新的数据,然后返回convertView即可,而不必重新创建一个View。
(8)《必考题》谈谈android数据存储方式?
答案:Android提供了5种方式存储数据:
1.使用SharedPreferences存储数据;它是Android提供的用来存储一些简单配置信息的一种机制,采用了XML格式将数据存储到设备中。只能在同一个包内使用,不能在不同的包之间使用。
2.文件存储数据;文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与Java中实现I/O的程序是完全一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。
3.SQLite数据库存储数据;SQLite是Android所带的一个标准的数据库,它支持SQL语句,它是一个轻量级的嵌入式数据库。
4.使用ContentProvider存储数据;主要用于应用程序之间进行数据交换,从而能够让其他的应用保存或读取此Content Provider的各种数据类型。
5.网络存储数据;通过网络上提供给我们的存储空间来上传(存储)和下载(获取)我们存储在网络空间中的数据信息。
(9)《必考题》Service与广播机制?
考点:生命周期,使用方式。
(10)《必考题》handler机制的原理?
考点:Android线程间通信,Message,MessageQueue
答案:andriod提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。
3) Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。
(11)《必考题》请简析TCP和UDP的区别?
(12)《必考题》GET和POST方法主要的三点区别?
答案:①POST请求可以向服务器传送数据,而且数据放在htmlHEADER内一起传送到服务端URL地址,数据对用户不可见。而GET是把参数数据队列加到提交的URL中,值和表单内各个字段一一对应,例如(http://www.baidu.com/s?w=%C4&inputT=2710)。②GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。③GET安全性非常低,POST安全性较高。
以上是关于Android面试必考基础题的主要内容,如果未能解决你的问题,请参考以下文章
刚参加完阿里Android开发岗面试:一面+二面+三面+HR四面,定级P6,面试经验分享总结!(含必考题答案)
2022年最新的Android面试大厂必考174题(附带详细答案)