android 开发面试题以及答案

  • 格式:doc
  • 大小:27.00 KB
  • 文档页数:7

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在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快

9.Socket通信编程

客户端编程步骤:

1、 创建客户端套接字(指定服务器端IP地址与端口号)

2、 连接(Android 创建Socket时会自动连接)

3、 与服务器端进行通信

4、 关闭套接字

服务器端:

1.创建一个ServerSocket,用于监听客户端Socket的连接请求

2.采用循环不断接受来自客户端的请求

3.每当接受到客户端Socket的请求,服务器端也对应产生一个Socket

10.双缓冲技术原理以及优缺点

创建一幅后台图像,将每一帧画入图像,然后调用drawImage()方法将整个后台图像一次画到屏幕上去。

优点:双缓冲技术的优点在于大部分绘制是离屏的。 将离屏图像一次绘至屏幕上,比直接在屏幕上绘制要有效得多。

双缓冲技术可以使动画平滑。

缺点:要分配一个后台图像的缓冲,如果图像相当大,这将占用很大一块内存。