面试相关的问题(2)

1.http与https的区别

1.HTTPS更安全
HTTPS协议是由SSL+http协议构建的可进行加密传输、身份认证的网络协议、要比http协议安全
2.HTTPS需要申请证书
HTTPS协议需要到CA申请证书,
3.端口不同
http使用的是大家都常见的80端口,而https连接使用的是443端口;
4.状态不同
http的连接很简单,是无状态的,而https洗衣是由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议。

2.HTTP状态码

1** 服务器收到请求,需要请求者继续执行
2** 成功,操作被成功接收并处理
3** 重定向 需要进一步的操作以完成请求
4** 客户端错误。请求包含预防错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生错误

TCP协议中三次握手

1.第一次握手:建立连接时,客户端A发生SYN包(SYN=j)到服务器,并进入SYN_SEND状态,等待服务器B确认。
2.第二次握手:服务器B收到SYN包,必须去人客户端A的SYN(ACK=j+1),同时自己也发生一个SYN包(SYN=K),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
3.第三次握手:客户端A收到服务器的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手
完成三次握手,客户端与服务器开始传送数据

TCP协议中四次挥手

1.客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送
2.服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1,和SYN一样,一个FIN将占用一个序号;
3.服务端B关闭与客户端A的连接,发送一个FIN给客户端A;
4.客户端A发送ACK报文确认,并将确认序号设置为收到需要1。

数据结构

链表

栈和队列

二叉树

多线程什么时候用GCD什么时候用NSOperation

GCD是基于C语言的底层API,NSOperation属于OC类。iOS首先引入的是NSOperation,iOS4之后引入了GCD和NSOperationQueue并且其内部是用GCD实现的。
GCD的优点:GCD主要与block结合使用,代码简洁高效,执行效率稍微高点

NSOperation相比于GCD:
1.NSOperation拥有更多函数可用,NSOperationQueue是在GCD基础上实现的,只不过是GCD更高一层的抽象
2.在NSOperationQueue中,可以建立多个NSOperation之间的依赖关系;
3.NSOperationQueue支持KVO,可以检测operation是否正在执行,是否结束,是否取消;
4.GCD只支持FIFO的队列,而NSOperationQueue可以调整队列的执行顺序,NSOperationQueue可以方便管理并发、NSOperation之间的优先级。

使用NSOperation的情况:各个操作之间有依赖关系、操作需要取消暂停、并发管理、控制操作之间优先级,限制同时能执行的线程数量,让线程在某时刻停止/继续等。
使用GCD的情况:一般的需求很简单的多线程操作,用GCD都可以了,简单高效。

你可能感兴趣的:(面试相关的问题(2))