面试专栏

精选面试知识,经验与见解

安卓开发工程师的常见面试问答

1.Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念?

DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运 行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念。

2.Android中五种数据存储方式分别是什么?他们的特点?

答:Android提供了五种存取数据的方式:

(1) SharedPreference,存放较少的五种类型的数据,只能在同一个包内使用,生成XML的格式存放在设备中;

(2) SQLite数据库,存放各种数据,是一个轻量级的嵌入式数据库

(3) File文件,通过读取写入方式生成文件存放数据;

(4) ContentProvider,主要用于让其他应用程序使用保存的数据;

(5)通过网络获取数据和写入数据到网络存储空间。

3.ContentProvider与SQLite有何区别?

答:Sql只能在该工程的内部共享数据,ContentProvider能在工程之间实现数据共享。

4.简述通过contentResolver获取。

ContentProvider内容的基本步骤:

第一:得到ContentResolver类对象:ContentResolver cr = getContentResolver();

第二:定义要查询的字段String数组;

第三:使用cr.query();返回一个Cursor对象;

第四:使用while循环得到Cursor里面的内容。

5.简述Handler机制原理。

Andriod提供了Handler和Looper来满足线程间的通信。Android不允许UI线程之外的线程改变UI组件的值,所以要想在其他线程里面改变UI组件的值,必须使用Handler来实现。

(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。

Handler、Looper、MessageQueue的初始化流程如下所示:

Hander持有对UI主线程消息队列UI_MQ和消息循环Looper的引用,子线程可以通过Handler将消息发送到UI线程的消息队列UI_MQ中。Handler处理消息,UI主线程通过Looper循环查询消息队列UI_MQ,当发现有消息存在时会将消息从消息队列中取出。首先分析消息,通过消息的参数判断该 消息对应的Handler,然后将消息分发到指定的Handler进行处理。

6.ListView的优化方案?

(1)、如果自定义适配器,那么在getView方法中要考虑方法传进来的参 数contentView是否为null,如果为null就创建contentView并返回, 如果不为null则直接使用。在这个方法中尽可能少创建view。

(2)、给contentView设置tag(setTag() ),传入一个viewHolder对 象,用于缓存要显示的数据,可以达到图像数据异步加载的效果。

(3)、如果listview需要显示的item很多,就要考虑分页加载。比如一 共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候再去加载接下来的20条。

7.MVC设计模式在Android中的应用?

(1).模型层(model) :对数据库操作,对网络等操作都应在model中处理,对业务的计算等操作都应在该层。可以简单的理解为Android中 的Java源文件。

(2).视图层(view) :一般采用XML进行描述,使用的时候可以方便的引入,可以简单的理解为Android中Layout文件。Android中也可以用JavaScript+HTML等方式作为view层。

(3).控制层(controller) :控制model和view的协调工作。简单的理 解为Android中manifest文件。

8.TCP、UDP的区别?

TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

2年前
5903
1484
0
热门岗位
  • 热门岗位 热门
    软件测试工程师
    优惠价 ¥ 8
  • 热门岗位 热门
    产品经理
    优惠价 ¥ 8
  • 热门岗位 热门
    初级理财顾问
    优惠价 ¥ 8
  • 热门岗位 热门
    金融客户经理
    优惠价 ¥ 8
  • 热门岗位 热门
    有机合成助理研究员
    优惠价 ¥ 8
  • 热门岗位 热门
    药剂师
    优惠价 ¥ 8