[21届]web前端开发实习生岗位面试准备----计算机网络

一、从地址栏输入URL到页面加载完成发生了什么?

  1. 浏览器开启一个线程来处理这个请求,对URL判断如果是http协议就按照web方式处理
  2. 浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容(此时没有向服务端发请求)。若没有,则进行下一步操作(后面需要向服务端发送请求)
  3. 过DNS解析获取网址的IP地址
  4. 向真实IP地址服务器发起tcp连接,与浏览器建立tcp三次握手
  5. 握手成功后,进行HTTP协议会话,浏览器发送报头(请求报头)
  6. 进入到web服务器上的 Web Server,如 Apache、Tomcat、Node.JS 等服务器
  7. 进入部署好的后端应用,如 PHP、Java、JavaScript、Python 等,找到对应的请求处理
  8. 处理结束回馈报头,将数据返回至浏览器
  9. 浏览器开始下载html文档(响应报头,状态码200),同时设置缓存
  10. 之后浏览器对整个 HTML 结构进行解析,形成 DOM 树;与此同时,它还需要对相应的 CSS 文件进行解析,形成 CSS 树(CSSOM)。接下来,需要结合 DOM + CSSOM,渲染形成一个绘制树(Render Tree)
  11. 得到绘制树之后,需要计算每个结点在页面中的位置,这一个过程称为layout
  12. layout的过程是在一个连续的二维平面上进行的,接下来,需要将这些结果栅格化,映射到屏幕的离散二维平面上,这一过程称为 paint ; 现代浏览器为提升性能,将页面划分多个 layer,各自进行 paint 然后组合成一个页面(composite layers)

二、TCP和UDP

  1. TCP是面向连接的运输层协议;UDP是无连接的,即发送数据之前不需要建立链接,因此减少了开销和发送数据的时延
  2. TCP提供可靠交付的服务,通过TCP连接传送的数据,无差错、不丢失、不重复、并且按时到达;UDP使用最大努力交付,即不保证可靠性交付,因此主机不需要维持复杂的连接状态
  3. TCP面向字节流,TCP中的“流”指的是流入到进程或从进程流出的字节序列;UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层
  4. UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低,符合很多实时应用(如IP电话、实时视频会议等)的要求
  5. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的;UDP支持一对一、一对多、多对一和多对多的交互通信
  6. UDP的首部开销小,只有8个字节,比TCP的20个字节的首部短
  7. TCP提供可靠的全双工通信(双向实时通信),TCP允许通信双方的应用进程在任何时候都能发送数据;UDP是不可靠信道

三、请求方式

  1. GET请求在浏览器回退时是无害的,POST会再次提交请求
  2. GET请求产生的URL地址可以被收藏,而POST不可以
  3. GET请求会被浏览器主动缓存,而POST不会,除非手动设置
  4. GET请求只能进行URL编码,而POST支持多种编码方式
  5. GET请求参数会被完整的保留在浏览器历史记录里,而POST中的参数不会被保留
  6. GET请求在URL中传递的参数是有长度限制的(不固定,因浏览器决定),而POST没有限制
  7. GET请求只接受ASC2字符,而对参数的数据类型POST没有限制
  8. GET请求比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感数据
  9. GET请求参数通过URL传递,而POST放在request.body上

四、cookie、localStorage、sessionStorage区别

  1. 从数据生命周期上来说
    • cookie:一般由服务器端生成,可设置失效时间,如果在浏览器端生成cookie,则默认关闭浏览器后失效。
    • localStorage: 永久保存,除非被清除。
    • sessionStorage: 仅在当前会话下有效,关闭页面或者浏览器被清除。
  2. 从数据存储方面来说
    • cookie大小为4KB左右
    • storage一般为5MB
  3. 从与服务器端通信方面
    • cookie每次都会携带在HTTP头中,如果cookie保存过多会带来性能问题
    • storage仅在客户端保存,不参与和服务器的通信
  4. 从易用性方面来说
    • cookie原生接口不友好
    • storage原生接口友好,也可自行封装

五、CDN

六、问题

  1. 请详细介绍一下TCP三次握手机制,为什么要三次握手?
    1.1 为什么要有握手?
    1.2 为什么是三次?
    可靠性、需要同步序列号,所以需要握手
  2. 简单介绍下HTTP协议中缓存的处理流程?
    2.1 缓存的应用流程是什么?
    2.2 与缓存相关的HTTP头部有哪些?
  3. 在地址栏键入URL后,网络世界发生么什么?
  4. 使用HTTP长连接有哪些优点?
  5. CLOSE_WAIT状态产生的原因?
  6. 介绍下多播是怎样实现的?
  7. 服务器的最大并发连接数是多少?
  8. TCP和UDP协议该如何选择?
  9. TLS/SSL协议是如何保障信息安全的?
  10. HTTP2协议有哪些优点?

你可能感兴趣的:(计算机网络,实习笔面试,前端,网络)