android面试题整理

一、Android5.0(Lollipop)十大新特性:
1、全新的Material Design设计风格;
2、支持多种设备;
3、全新的通知中心设计;
4、支持64位的ART虚拟机;
5、Project Volta电池续航改进计划;
6、全新的“最近应用程序”
7、改进了安全性;
8、不同数据独立保存;
9、改进搜索;
10、新的API支持,蓝牙4.1、USB Audio、多人分享等其它特性;

二、get和post的区别:
1、get方式有长度的限制,post方式没有长度的限制;
一方面是说http客户端(如IE限定URL的长度为2083字节,opera是4050,netscape死8192)的限制;另一方面是服务器的实现也加入了限制(如果URL的长度过长,http服务器会报414错误)。 但是Http协议以及URL官方说明均没有规定长度的限制;
2、get是从服务器上获取数据,post是向服务器传送数据;
不论是get还是post都可以向服务器传送数据,只是传送的位置不同;同样的也都可以从服务器获取数据。关键的问题是:get的主要任务是获得数据,但是在获得数据前也可以向服务器提交一些数据;post的主要任务是提交数据,但是在提交数据后服务器也会向客户端返回一些显示用的数据。
3、get不安全,用户能从地址栏上看到传送的数据,post安全,用户不能从地址栏上看到传送的数据;
Post方式看不到传送的数据是因为浏览器做了限制,但通过第三方工具同样可以看到,理论上说二者都是不安全的,不然就用不着研究https了。

三、HttpURLConnection和HttpClient的区别:
相同点:在Android中主要使用HttpURLConnection和HttpClient两种方式进行Http操作,这两种方式都支持https协议、以流的形式进行上传和下载、配置超时时间、IPv6、以及连接池等功能;
区别:
1、HttpClient的具体实现类defaultHttpClient和AndroidHttpClient都拥有很多的API,而且实现比较稳定,bug数量也很少,但这同时影响了它的升级和拓展;而HttpURLConnection的API提供的比较简单,使得它的使用和拓展更为容易,不过在Android2.3版本以前,它的bug不少,但在2.3版本以后有了很好的改进;
2、httpClient是Apache的开源实现,而HttpURLConnection是安卓的标准实现,安卓的sdk虽然集成了HttpClient,但httpURLconnection才是官方所支持的;
3、httpURLconnection直接支持gzip压缩,HttpClient也支持,但要直接写代码处理;
4、httpURLconnection直接支持系统级连接池,即打开的连接不会关闭,在一段时间内所有程序可使用;HttpClient也可以做到,但不如人家官方系统底层支持好;
5、HttpURLconnection直接在系统层面做了缓存策略处理,加快重复请求的速度;

四、Handler和Asynctask的区别:
1、asynctask原理:是Android提供的轻量级异步类,可以直接继承Asynctask,并提供接口反馈当前异步执行的程度,最后反馈执行的结果给UI主线程;
优点是简单快捷、过程可控,缺点是在使用多个异步操作并需要进行UI变更时,就变得复杂;
2、handler原理:在handler异步实现时,涉及到handler/looper/message/thread四个对象,实现异步的流程是主线程启动子线程,子线程运行并生成message,looper获取message并传递给handler,handler逐个获取looper中的message,并进行ui的更新;
优点是结构清晰、功能定义明确,对于多个后台任务时简单、清晰;缺点是在单个后台异步处理时,代码显得过多,结构过于复杂(相对性);

使用Asynctask代替Thread+handler的方式,不仅调用上更为简单,经过实测更可靠、易于维护一些,但对于某些应用来说后者可能更灵活。

五、DOM、SAX、Pull的区别:
1、DOM解析是将xml文件全部载入,组装成一个dom树,通过节点与节点之间的关系来解析xml文件,对于特别大的文档,解析和加载整个文档可能很慢而且很好资源;
2、SAX是一个解析速度快并且占用内存少的xml解析器,它采用的是事件驱动,因此不需要解析完整个文档,在按内容顺序解析文档的过程中,sax会判断当前读到的字符是否符合xml语法中的某部分,如果符合则发出事件,所谓的事件其实就是一个回调函数;
3、Pull解析和SAX解析很相似,都是轻量级的解析,在安卓的内核中已经嵌入了pull,pull和sax不一样的地方有:pull想解析到哪里就可以停止解析,触发事件返回的是数字。

六、xml和json的区别:
1、可读性,一边是建议的写法、一遍是规范的标签形式,可读性不分上下;
2、可扩展性,都有很好的扩展性;
3、编码难度,都有丰富的编码工具,但不借助工具编写的话json更胜一筹;
4、解码难度,xml的解析得考虑子节点与父节点的关系,而json的解析难度几乎为0;
5、流行度,xml已经被业界广泛的使用,而json才刚刚开始,但在ajax这个特定的领域,未来的发展一定是xml让位于json。

你可能感兴趣的:(android)