今天生日,就收到了面试邀请,内心还是很开心的。
加油。
// 1. 未来规划
/** 我的看法:
* 1> 未来规划在3内成为一个懂业务、产品的技术专家
* 2> 接下来的时间内完成一个类似YYKit库
* 3> 同时我希望自己在接下来的时间内:
* 一:第一阶段,我希望在最少3年内,在目前的职位上沉淀下来;
* 二:第二阶段,我希望我能够成为一个懂业务的人,能够提前发现问题,并解决问题;
* 三:第三阶段,我希望我能成为该领域内比较前沿的专家,在工作中能有创新和发展,能为公司带来更大的价值。
*/
// 1. viewController生命周期
/** 我的看法:
* 1> init(xib、code)
* 2> loadView(加载view->view为nil时,加载view,如果是xib加载view,务必不能重写该方法,重写该方法后,要创建
self.view,否则在viewDidView中调用self.view会造成死循环而卡死程序,它会一直调用loadView创建
self.view);
* 3> viewWillAppear(view将要渲染到屏幕上)
* 4> 如果是第一次进来或更新了frame或调用更新frame的方法则调用viewWillLayoutSubView/viewDidLayoutSubView
* 5> 如果是第二次或没有更新frame或没调用更新frame的方法则调用viewDidAppear方法
* 6> 显示完界面后,之后再退出界面则调用viewWillDissapear/viewDidDissappear
* 7> 如果发生内存警告,则调用didReceiveMemoryWarnning方法
* 8> dealloc方法(销毁viewController)
*/
// 网络层的知识总结:
// 1. 简介TCP/UDP的区别,他们位于那一层?
/** 我的看法:
* 1> TCP要经过3次握手(在吗?我给你发包啦?好,我发完啦,你收到了吗?)、4次挥手(我在。好,你发吧。确认我收到啦。断开连
接)
UDP只管发,不管是否接受
* 2> TCP/UDP位于传输层,简称socket
*/
/** 标准答案:
* 1> TCP/IP协议簇是一个集,其中包括了UDP,因为TCP、IP是其中很重要的一部分,所以,就以它们命名了。
* 2> TCP/UDP位于应用层、传输层、网络层等。
* 3> 其中:
应用层包括:HTTP协议、TFTP协议、Telnet协议、SNMP简单网络管理协议、DNS域名系统(各个用途可google)
网络层包括:IP协议、ICMP协议、ARP协议、RARP协议
*/
// 2. 路由器和交换机的工作原理大概是什么,他们分别用到什么协议,位于哪一层?
/** 我的看法:
* 1> 路由器是将网络层的数据包路由给其他设备(终端),交换机是将高频数据包解析为短频数据包,我们机器需要的那些数据包。
* 2> 路由器使用的是路由协议,交换机使用的是交换协议,位于网络层
*/
// 3. 描述TCP 协议三次握手,四次释放的过程。
/** 我的看法:
* 1> 发送一个连接数据包给对方,以确认连接关系(1次握手)
* 2> 要准备给对方发送数据包,问对方准备好了吗?(2次握手)
* 3> 发送一个数据包给对方,以确认对方收到数据与否?(3次握手)
* 4> 收到对方连接数据包后,告诉对方,我们连接好了(1次挥手)
* 5> 收到对方准备发送数据包后,告诉对方,我们准备好了(2次挥手)
* 6> 收到对方数据包后,告诉对方,我们收到数据包了(3次挥手)
* 7> 发送我们断开连接数据包(4次挥手)
*/
/** 标准答案:
* 3次握手
* 1> 主机A向主机B发送一个带序列号的数据包,然后主机B收到这个数据包后,和主机A建立连接。这个数据包主要向主机B传达两
个意思:一个是我要和你建立连接,另一个是你可以决定用哪个序列号来和我建立连接。
* 2> 主机B收到数据包后,给主机B发送一个带确认以及序列号的数据包,主机A收到这个数据包后,知道主机B已经和我建立连接,
并且用它给我的序列号来进行通信。
* 3> 主机A收到主机B的数据包后,知道了咱俩已经建立连接,并且可以正常通讯,并且再发送一个确认应答给主机B。
* 4次挥手
* 1> 当主机A完成TCP通讯后,提出停止TCP连接请求。
* 2> 主机B收到停止请求后,确认断开这一方向上的TCP连接。
* 3> 再由主机B确认反方向的关闭请求。
* 4> 主机A对主机B的关闭请求确认,这时,双方向的连接关闭。
*/
// 4. TCP 协议是如何进行流量控制,拥塞控制的?
/** 我的看法:
* 1>
*/
// 5. 为什么建立连接时是三次握手,两次行不行?如果第三次握手失败了怎么处理?
/** 我的看法:
* 1> 假如第三次握手失败,也就是对方没有收到消息,则重发数据包
*/
// 6. 关闭连接时,第四次挥手失败怎么处理?
/** 我的看法:
* 1> 当你发送完数据包,准备断开连接时,挥手失败,则重发断开连接数据包,以确认断开连接
*/
// 7. 你怎么理解分层和协议?
/** 我的看法:
* 1> 所谓的分层就是条理化、结构化,在合适的层做合适的工作,这样耦合度低,效率高。
* 2> 协议就是在这一层能通过的数据包格式只有那些,或只有哪一种。
*/
// 8. HTTP 请求中的 GET 和 POST 的区别,Session 和 Cookie 的区别。
/** 我的看法:
* 1> get方法参数以及post结构体内容都暴露在http连接中
* 2> post方法是参数暴露在连接中,而post结构体隐藏起来了
* 3> session是与服务器进行缓存的机制
* 4> cookie是与浏览器进行缓存的机制
*/
/** 标准答案:
* session与cookie
* 1> session是将数据存在服务器,而cookie将数据存在浏览器(客户端)
* 2> cookie不是很安全,别人可以利用技术对浏览器中的cookie进行解析和欺骗
* 3> session会比较占用服务器的资源,当访问增加时,会影响服务器一定的性能,应当多考虑cookie
* 4> 单个浏览器中的cookie一般保留的数据不超过4KB,并且在它身上最多只能保存20个cookie
* 5> 所以一般账号、密码等敏感信息一般保存在session中,其他保存在cookie
* post与get:首先post优点多,但get效率高
* 6> get把请求头与参数和数据放在url上,post将数据放在http包体内,即body
* 7> get提交的数据不能超过2K,但根据浏览器限制不同而不同,而post理论上没有限制,但有的也不能超过80KB,或100KB
* 8> get在退回浏览器时,是无害的,而post会再次请求
* 9> get只产生一个tcp包,包header和参数、数据等一起带过去,post会产生两个tcp包,一个带header,一个带data
* 10> get请求参数会被完整保留在浏览器历史记录中,而post不会。
*/
// 9. 谈谈你对 HTTP 1.1,2.0 和 HTTPS 的理解。
/** 我的看法:
* 1> http1.1是比较简单的短连接网络请求和响应
* 2> http2.0在网络请求和响应中加...
* 3> https是在网络中加了一把锁,确定网络环境以及请求的安全性
*/
/** 标准答案:
* http与https的不同:
* http在传输时不会检验服务器,内容也不会进行加密,别人拿到即可破解
* https在传输是会进行加密,也会对服务器进行检查,是否输入合法访问等。
* http1.1与http2.0的不同
* ...
*/