android 面试答案:
一面
1.ANR 具体产生的类型有哪些,具体说下其产生的最大超时时间。
KeyDispatchTimeout(5 seconds) –主要类型:
按键或触摸事件在特定时间内无响应BroadcastTimeout(10 seconds):
BroadcastReceiver在特定时间内无法处理完成ServiceTimeout(20 seconds) –小概率类型:
Service在特定的时间内无法处理完成
2.多线程多点下载的过程
3.http协议的理解和用法
HTTP是一个基于请求与响应模式的、无状态的、应用层的协议,属于应用层的面向对象的协议,常基于TCP的连接方式
具备以下特点
- 1.支持客户/服务器模式。
- 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
- 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
- 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
URL格式以及对应的含义
- 格式 http://host[":"port][abs_path]
- http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。
http 请求
- http请求由三部分组成,分别是:请求行、消息报头、请求正文
http 响应
- HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文
- 利用telnet观察http协议的通讯过程
- 实验目的及原理
- 利用MS的telnet工具,通过手动输入http请求信息的方式,向服务器发出请求,服务器接收、解释和接受请求后,会返回一个响应,该响应会在telnet窗口上显示出来,从而从感性上加深对http协议的通讯过程的认识。
- http协议的安全
- HTTP本身并不提供安全,然而通过在传输层和应用层中使用安全套接层(SSL)可以使HTTP运行在安全的环境下,即HTTPS,HTTPS可以提供保密性,客户和服务器鉴别以及数据的完整性。
- SSL的设计时为了给应用层生成的数据提供安全以及压缩服务,一般来说SSL能接收来自任何应用层协议的数据,但最多情况下这个应用层的协议就是HTTP,SSL对应用层传来的数据提供多种服务:
- 分片:SSL把数据划分为长度小于或者等于2的14次字节的数据分片
- 压缩:数据分片通过使用一种由客户端和服务器协商好的无损压缩方式进行压缩,这个服务是可选的。
- 报文完整性:为了保护数据的完整性,SSL使用密钥散列函数来创建MAC。
- 保密:为了提供保密性,原始的数据和MAC一起用对称密钥加密技术来加密。
- 组帧:先在被加密的有效载荷上添加一个首部,然后再把这个恶有效载荷传递给可靠的运输层协议。
4.安卓如何实现多线程并解决线程并发问题
继承Thread类,重写run函数方法:
class xx extends Thread{
public void run(){
Thread.sleep(1000); //线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源
}
}
xx.start(); //启动线程,run函数运行
实现Runnable接口,重写run函数方法:
Runnable run =new Runnable() {
@Override
public void run() {
}
}
实现Callable接口,重写call函数方法:
Callable call =new Callable() {
@Override
public Object call() throws Exception {
return null;
}
}
- AsyncTask
- Handler + Looper
- ThreadPool
- 同步(Synchronized),易变(volatile),内存模型
5.你知道的数据结构有哪些,说下具体实现机制
- Map
- List
- 栈/队列
- 树
- 图