这次的面经,基于在第三次面试过程中面试官问到的一些问题,自己做一个查漏补缺。
首先他询问了一些计算机网络部分的问题,不过上次被问到还是校招的时候找工作,工作中真正应用到的其实不多,所以有些遗忘了。
TCP和HTTP协议有什么不同
TCP是传输层的协议,HTTP是应用层的协议,TCP是长连接,而HTTP是短连接。计算机网络有几层?
计算机网络按照OSI的划分有7层,也可以根据TCP/IP的划分有5层或者4层。
按照OSI分别是,物理层,数据连接层,网络层,传输层,会话层,表示层,应用层;
物理层,相当于是硬件层面,就是说人的身体一样,重要设备是集线器和中继器;
数据链接层,通过数据帧来传输,把数据变成一个个的组块,相当于大脑学习知识,划分成一个个小的切割片,对应的协议有以太网协议,重要设备是网桥和交换机,为网络层提供可靠的数据;
网络层,简单的理解就是,我们设置网络都会用路由器,而网络层就是负责路由寻址,它就是给IP数据报指路到对应的目标网络去,对应的协议有IP(因特网报文协议),ICMP(因特网控制报文协议),ARP(地址解析协议),RARP(逆地址解析协议)。
传输层,相当于网管了,主机到主机之间的数据传输,把网络层传过来的数据,送到目标主机端口那,负责网络连接的建立,维护和取消,而常常被问到的TCP等协议就是来自于这一层,还有UDP协议也属于这一层,重要的设备有网关;
会话层,负责管理主机中的会话进程,建立,管理和取消,会在数据中设置校验点来确保数据的同步;
表示层,负责把一个主机中的应用层的数据让另一个主机中的应用可以理解,我把这个想象为一个翻译,它会对数据做加密,格式变化,压缩等;
应用层,在主机中为操作系统和各种网络应用程序提供服务的接口;
在传输层之后的网络层次中传输的数据单位都是报文,并且主要采用FTP(文件传输协议),HTTP(超文本传输协议),POP3(邮局协议),SMTP(简单邮件协议),DNS(域名解析协议);
计算机网络的核心就是各种协议的学习,它让你知道你是咋上网的。
每一层的协议再细分又可以用很多可以写的,不过针对这次面试的问题,就先总结这一部分对自己快忘记的知识进行一个查漏补缺吧。浏览器如何渲染页面
概述来说,
1、从HTML解析开始,生成一个DOM树,
2、之后预加载处理器扫描需要请求外部资源的内容,可以在不影响dom继续解析的情况下请求外部资源,
3、把css解析构建CSSOM树,与此同时,javascript也被解析成抽象语法树,浏览器还会构建AOM无障碍树,针对于残障人士的网页浏览,对各种内容有alt的描述,
4、根据CSSOM和DOM树进行整合,得出相关的样式,变成渲染树,
5、布局页面中所有元素的盒子模型大小,
6、再绘制样式上去,包括元素阴影,描边,颜色等,绘制会把不同元素分成多个层,
7、最后把这些层合成,确保页面按照正确的顺序渲染;
8、如果有defer async延迟的javascript脚本,页面绘制完成后还会解析脚本,到用户可以交互,滚动,点击等;
这些经验用于个人总结学习,如有帮助,我会感到很开心,如果想自己看看详细的内容,可以直接查看我在下方设置的知识来源链接。
找工作的友友们都加油,任何的经历都是经验的一部分,无论你回答的好还是不好,都是一种反馈,只要有反馈,就有可以提升的空间。
参考链接:
https://www.runoob.com/w3cnote/summary-of-network.html
https://developer.mozilla.org/zh-CN/docs/Web/Performance/How_browsers_work