Android面试问题

1.SurfaceView何时用,相对于View的优点是什么
答:当刷新频率较高或者刷新时处理数据量较大时.
SurfaceView开启了工作线程对视图进行绘制,在底层使用了双缓冲区.
View在UI线程中即执行了view更新又执行了逻辑操作,无法保证刷新速度.而SurfaceView在新的线程中更新画面,所以可以保证速度.

参考:SurfaceView

2.Tcp为什么3次握手,两次行不?3次后一定能成功连接吗,举个例子
答:两次不行,因为无法确定是否是对该次的响应,客户端的应答可能是以前的因为网络延迟现在才到的.
3次握手后不一定成功连接,因为在第三次服务器可能并没有受到客户端的ACK信号,
服务器就会设置定时重传,如果超时则会关闭连接.

参考:在tcp连接的三次握手 丢包?,TCP协议中的三次握手和四次挥手(图解)
   
3.Tcp四次挥手过程,最后为什么等2个MSL,如果超过2个MSL没收到消息怎么办?
答:是为了等待服务器的因未接受到客户端的信号而重传,还有防止已经失效的请求出现在本报文段(2MSL可让本连接持续时间内的所有报文段消失).
 超过2Msl没接收到消息客户端会关闭连接.
 
参考:TCP协议中的三次握手和四次挥手(图解)

4.为什么有了抽象类还要接口,何时只能使用接口不能使用抽象类,举个例子?
答:类是对事物的抽象,对属性,行为的抽象,接口是对行为的抽象
  飞机与鸟的故事,飞机是AirPlane类,鸟是Bird类,它们有共同的行为飞,可以将Fly设计为一个接口,但是不能设计为一个类.
 
参考:深入理解Java的接口和抽象类
 
5.AsyncTask的onPostExecute是在主线程还是工作线程
答:onPostExecute是更新ui的在主线程
 
6.有不有研究过什么源码
  看过Handler,AsyncTask的源码,也研究过Android-Universal-ImageLoader的源码,并仿照写了一个加载图片的框架.

参考:我的源码分析

7.如何正确的写出单例模式
参考:如何正确写单例模式

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hujinglovekmg/article/details/52318525
文章标签: android 面试
个人分类: Android 生活
所属专栏: Android学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭