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()方法将整个后台图像一次画到屏幕上去。
优点:双缓冲技术的优点在于大部分绘制是离屏的。 将离屏图像一次绘至屏幕上,比直接在屏幕上绘制要有效得多。
双缓冲技术可以使动画平滑。
缺点:要分配一个后台图像的缓冲,如果图像相当大,这将占用很大一块内存。