百度面试
一面
上来先是自我介绍,然后开始问问题。
iOS的基础知识,runtime,runloop,多线程等等
问到一个“alloc之前都做了什么? ”没答上来
alloc调用了_objc_rootAlloc方法,_objc_rootAlloc方法又调用了callAlloc方法。callAlloc方法经过一系列判断,最终会调用class_createInstance方法来创建对象,其内部实际上是调用class_createInstanceFromZone方法,并在其中进行size计算,内存申请,和isa指针初始化等操作。size计算是通过cls->instanceSize方法,64位系统下,系统分配内存按照16字节对齐分配。
拓展:
init方法,唯一的作用是规范代码,交给子类去重写,没有任何实质性的功能。
New方法:实际上就是alloc+init。
整体进行的还挺愉快,最后问什么时候有时间二面。
二面
上来先是自我介绍,然后开始问问题。
1.http的请求头里面,有什么字段。返回的状态码有哪些,分别代表什么含义。
状态码: 1XX,接受的请求正在处理。
2XX,请求成功。
3XX,重定向,
4XX,客户端请求失败。
5XX,服务端出现问题导致请求失败。
请求头字段:
Cache-Control 控制缓存的行为
Connection 连接的管理
Date 创建报文的时间
Pragma 报文指令
Trailer 报文末端的首部一览
Transfer-Encoding 报文主体的编码方式
Upgrade 升级为其他协议
Via 代理服务器相关信息
Warning 错误通知
Accept 用户代理课处理的媒体类型
Accept-Charset 优先的字符集
Accept-Encoding 优先的内容编码
Accept-Language 优先的语言
Authorization Web认证信息
Host 服务器地址
User-Agent HTTP客户端程序信息
2.为什么https自带了安全机制,还要自己实现一套加密机制(跟项目有关)
因为Https自带的证书是可以被伪造的,并不是完全的安全的。
3.https的实现流程
首先客户端向服务端发送一个含有TLS版本号、支持的协议以及随机数c的报文,服务端收到后,向客户端回传一个包含商定协议、随机数S以及证书。客户端验证证书的正确性,验证成功后,根据生产