网易春招实习面试

http缓存

304状态码 Not Modify

通过http协议头进行缓存控制,cache-control。

服务器会返回设置相关的缓存控制信息,例如缓存时间max-age,缓存内容标记tag,控制是否缓存等信息。

if-None-Match 中有ETag令牌,由服务器检查是否资源被修改。如果未改变,由服务器返回304 Not Modify 状态码。目标是尽可能减少向服务器的数据请求,减少带宽压力。

使用一致的网址:如果您在不同的网址上提供相同的内容,将会多次获取和存储该内容。提示:注意,网址区分大小写!

确保服务器提供验证令牌 (ETag):通过验证令牌,如果服务器上的资源未被更改,就不必传输相同的字节。

确定中继缓存可以缓存哪些资源:对所有用户的响应完全相同的资源很适合由 CDN 或其他中继缓存进行缓存。

确定每个资源的最优缓存周期:不同的资源可能有不同的更新要求。审查并确定每个资源适合的 max-age。

确定网站的最佳缓存层级:对 HTML 文档组合使用包含内容指纹码的资源网址以及短时间或 no-cache 的生命周期,可以控制客户端获取更新的速度。

搅动最小化:有些资源的更新比其他资源频繁。如果资源的特定部分(例如 JavaScript 函数或一组 CSS 样式)会经常更新,应考虑将其代码作为单独的文件提供。这样,每次获取更新时,剩余内容(例如不会频繁更新的库代码)可以从缓存中获取,确保下载的内容量最少。

https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=zh-cn
http://www.cnblogs.com/TankXiao/archive/2012/11/28/2793365.html#noverify

http Cookie http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html

https 三次握手。SSL交换密钥

端口443 。https就是在http的基础上添加了ssl加密协议,利用密钥交换协议进行了密钥交换
具体分析。。。
验证CA证书。
http://www.freebuf.com/articles/system/37900.html

http2.0

http代理

HTTP的代理服务器即是Web服务器又是Web客户端。
http://www.cnblogs.com/TankXiao/archive/2012/12/12/2794160.html

HTTP协议是无状态的,对于一个浏览器发出的多次请求,WEB服务器无法区分 是不是来源于同一个浏览器。 因此需要cookie的实现。
cookie与session的区别。
http Cookie的实现,字符串保存于浏览器中
可以利用cookie保存少量数据,使用数据序列化分方式。
session是基于cookie实现的。
cookie安全。

libcap抓包原理

libpcap的包捕获机制就是在数据链路层加一个旁路处理。当一个数据包到达网络接口时,libpcap首先利用已经创建的Socket从链路层驱动程序中获得该数据包的拷贝,再通过Tap函数将数据包发给BPF过滤器。BPF过滤器根据用户已经定义好的过滤规则对数据包进行逐一匹配,匹配成功则放入内核缓冲区,并传递给用户缓冲区,匹配失败则直接丢弃。如果没有设置过滤规则,所有数据包都将放入内核缓冲区,并传递给用户层缓冲区。
其实pcap的应用程序格式很简单,总的来说可以可以分为以下5部分:
1.我们从决定用哪一个接口进行嗅探开始。在Linux中,这可能是eth0,而在BSD系统中则可能是xl1等等。我们也可以用一个字符串来定义这个设备,或者采用pcap提供的接口名来工作。
2.初始化pcap。在这里我们要告诉pcap对什么设备进行嗅探。假如愿意的话,我们还可以嗅探多个设备。怎样区分它们呢?使用 文件句柄。就像打开一个文件进行读写一样,必须命名我们的嗅探“会话”,以此使它们各自区别开来。
3.假如我们只想嗅探特定的传输(如TCP/IP包,发往端口23的包等等),我们必须创建一个规则集合,编译并且使用它。这个过程分为三个相互紧密关联的阶段。规则集合被置于一个字符串内,并且被转换成能被pcap读的格式(因此编译它)。编译实际上就是在我们的程序里调用一个不被外部程序使用的函数。接下来我们要告诉 pcap使用它来过滤出我们想要的那一个会话。
4.最后,我们告诉pcap进入它的主体执行循环。在这个阶段内pcap一直工作到它接收了所有我们想要的包为止。每当它收到一个包就调用另一个已经定义好的函数,这个函数可以做我们想要的任何工作,它可以剖析所部获的包并给用户打印出结果,它可以将结果保存为一个文件,或者什么也不作。
5.在嗅探到所需的数据后,我们要关闭会话并结束。
http://blog.csdn.net/stoneliul/article/details/8615105

git分支操作

$ git branch xxx
$ git checkout xxx

runtime底层实现。

runtime相关,运行时的所有类,对象。
关于变量,属性,协议,方法,消息转发等
消息的返回类型,参量类型
运行时,工程加载的所有二进制库或者framework等等
能够动态修改指针的强弱
可以通过runtime创建不是继承于NSObject 的OC 根对象

手机端网络分层对应情况

arc底层机制,即C实现原理。c的内存管理实现。