移动互联周考面试题 http://blog.csdn.net/w00w12l/article/details/8143591?locationNum=14&fps=1
来源:互联网 发布:淘宝数据表格 编辑:程序博客网 时间:2024/06/14 16:57
简答题:(20分)
1 简述AsyncTask 原理
1、 AsyncTask的本质是一个静态的线程池,AsyncTask派生出的子类可以实现不同的异步任务,这些任务都是提交到静态的线程池中执行。
2、线程池中的工作线程执行doInBackground(mParams)方法执行异步任务
3、当任务状态改变之后,工作线程会向UI线程发送消息,AsyncTask内部的InternalHandler响应这些消息,并调用相关的回调函数
2 简述socket通信原理
Socket原理,大致分为以下几个步骤。 服务器端的步骤如下。
(1)首先,在实用Socket之前,要首先初始化Socket,就是实用AfxSocketInit()函数。 (2)在初始化完成以后,就可以建立服务端的Socket,然后实用该Sokcet开始侦听整个网络中的连接请求。
(3)当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接。连接的过程中,在MFC的框架中会触发一个前面创建的服务端Socket的消息响应函数OnAccept(),我们将建立的连接的代码放到该响应函数里面,在建立连接的过程中,会产生一个新的Socket,我们使用找个Socket来进行数据的通信。
(4)在通信的过程中,服务器端的产生的新的Socket会通过一个消息响应函数OnReceive()来接受到达的数据。数据的发送可以使用Send()来完成
(5)当完成通信后,服务器关闭与客户端的Socket连接。
客户端的步骤如下。
(1)同样的,初始化Socket,并建立客户端的Socket,确定要连接的服务器的主机名和端口。
(2)发送连接请求到服务器(MFC中使用Connect()),并等待服务器的回馈信息。
(3)连接成功后,与服务器进行数据的交互。
(4)数据的读取同服务端一样,也是通过OnReceive()来完成的,数据的发送通过Send()即可。
(5)数据处理完毕后,关闭自身的Socket连接。
这就是网络Socket的原理的简单介绍,大家有什么疑问可以提出来,另外,在服务器端建立Socket连接的过程中,如何支持并发的最大数量,以及服务器端的负载问题,大家可以多加研究一下。
3 简述HttpURLConnection和HttpClient之间的区别
HttpClient
Apache公司提供的库,提供高效的、最新的、功能丰富的支持HTTP协议工具包,支持HTTP协议最新的版本和建议,是个很不错的开源框架,封装了http的请求,参数,内容体,响应等,拥有众多API。
•HttpURLConnection
Sun公司提供的库,也是Java的标准类库java.net中的一员,但这个类什么都没封装,用起来很原始,若需要高级功能,则会显得不太方便,比如重访问的自定义,会话和cookie等一些高级功能。
功能用法对比
•从功能上对比,HttpClient库要丰富很多,提供了很多工具,封装了http的请求头,参数,内容体,响应,还有一些高级功能,代理、COOKIE、鉴权、压缩、连接池的处理。
•HttpClient高级功能代码写起来比较复杂,对开发人员的要求会高一些,而HttpURLConnection对大部分工作进行了包装,屏蔽了不需要的细节,适合开发人员直接调用。
•另外,HttpURLConnection在2.3版本增加了一些HTTPS方面的改进,4.0版本增加一些响应的缓存。
•性能对比
•HttpUrlConnection直接支持GZIP压缩;HttpClient也支持,但要自己写代码处理。
•HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭,在一段时间内所有程序可共用;HttpClient当然也能做到,但毕竟不如官方直接系统底层支持好。
•HttpUrlConnection直接在系统层面做了缓存策略处理(4.0版本以上),加快了重复请求的速度。
从发展的眼光来看HttpUrlConnection比较有前途一些
4 简述ImageLoader包含几级缓存,及区别
1、内存缓存 优先加载,速度最快
2、本地缓存 次优先加载 速度稍快
3、网络缓存 最后加载 速度由网络速度决定(浪费流量)
- 移动互联周考面试题 http://blog.csdn.net/w00w12l/article/details/8143591?locationNum=14&fps=1
- http://blog.csdn.net/w00w12l/article/details/8143591?locationNum=14&fps=1 转载请注明出处 Android异步处理系列文章索引
- http://blog.csdn.net/mytestmy/article/details/16903537?locationNum=2
- http://geek.csdn.net/news/detail/108595?locationNum=1&fps=1
- http://m.blog.csdn.net/article/details?id=46348827
- http://blog.csdn.net/a123demi/article/details/41021513?utm_source=tuicool&utm_medium=referral
- http://blog.csdn.net/name_Uncle_Wang/article/details/46438641?ref=myread
- http://blog.csdn.net/zlzlei/article/details/7730253?ticket=ST-425403-Oh04mQ4anIF1Hbf2qJHQ-passport.c
- http://blog.csdn.net/csr_yang/article/details/33325543?utm_source=tuicool
- http://blog.csdn.net/lpjishu/article/details/51842185?ref=myread#comments
- Java classpath的作用 http://m.blog.csdn.net/article/details?id=43155707
- setsockopt :SO_LINGER 选项设置 .http://blog.csdn.net/factor2000/article/details/3929816?ticket=ST-143210
- http://blog.csdn.net/wlmnzf/article/details/72855610?utm_source=itdadao
- 移动WebApp开发-phoneGap+android入门(http://blog.csdn.net/cwb1128/article/details/18004505)
- 百度面试题Top K算法 出处:http://blog.csdn.net/v_JULY_v/article/details/6256463
- JAVA经典面试题(http://blog.csdn.net/chow__zh/article/details/7723977)
- BAT面试题 转载自DERRANTCM http://blog.csdn.net/derrantcm/article/details/46658823
- http://blog.csdn.net/IBM_hoojo/article/details/5688947
- Matlab 查阅、读取nc数据
- Gradle构建Android项目
- git本地分支与远端建立联系
- Pillow简单使用--数组到图片、图片到数组转换
- linux基础命令
- 移动互联周考面试题 http://blog.csdn.net/w00w12l/article/details/8143591?locationNum=14&fps=1
- HDU 2795 Billboard【线段树】
- 浏览器解析HTML,CSS过程
- Vim没有任何反应了怎么办?ctrl+q即可解除!
- IDEA中使用maven编辑项目然后Tomcat运行项目
- MongoDB命令及SQL语法对比
- 脑洞大开,布萌区块链在IT领域的3个解决方案
- B
- 链表翻转(每K个结点进行一次逆置)