程序笔记   发布时间:2022-07-15  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了2021年8月前端面试题最新出炉(二)—HTTP协议大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

前言:本月博主去面试了,会分类写面试题分享给大家的,前端领域,共同进步!

文章目录

      • Q1: http协议中,从用户输入url地址,会发生什么?
      • A1:会发生从解析url到渲染页面的过程。
        • Q1-1:浏览器是怎么渲染的呢?CSS/DOM这些。
        • A1-1:过程如下。
      • Q2: http协议中,缓存机制有哪些,如何命中?
      • A2:强缓存、协商缓存。
      • Q3: http协议中,常见的状态码有哪些?
      • A3:以2开头的代表的成功的返回,以3开头代表重定向,以4开头是客户端、用户操作的问题,以5开头是服务器端的错误。
      • Q4:http协议 与 https协议 有什么区别?
      • A4:http协议是明文传输,https协议是http协议+ssl协议构建的,加密传输协议。
      • Q5: TCP和UDP的区别
      • A5: 区别如下。
上一篇是 TypeScript相关问题,点击超链接查看。

Q1: http协议中,从用户输入url地址,会发生什么?

A1:会发生从解析url到渲染页面的过程。

  1. 首先浏览器会解析url,查看本地缓存(浏览器缓存、系统缓存、路由缓存等),如果有则直接显示。
  2. 如果都没有,则进行DNS域名解析,解析出对应的IP地址。
  3. 浏览器与服务器三次握手,成功建立TCP连接,。
  4. 浏览器发出http请求
  5. 服务器收到请求,返回资源
  6. 浏览器接收数据后,进行解析、渲染
  7. 最后显示出页面。

由于提到了浏览器渲染,有些面试官就会接着问下去。

Q1-1:浏览器是怎么渲染的呢?CSS/DOM这些。

A1-1:过程如下。

  1. 解析HTML,生成DOM树
  2. 解析CSS,生成CSSOM树
  3. 将DOM和CSSOM合并,生成渲染树(Render-Tree)。
  4. 计算渲染树的布局Layout, 将布局Paint渲染到屏幕上。

如图所示(原创勿盗):

2021年8月前端面试题最新出炉(二)—HTTP协议

还可能涉及到回流、重绘的问题。

本篇文章主要是http协议相关,不过多赘述渲染问题。将文章看完,再点击 这里, 有很详细的浏览器渲染的资料推荐给大家。

Q2: http协议中,缓存机制有哪些,如何命中?

A2:强缓存、协商缓存。

强缓存与协商缓存的命中,由响应头Response Headers确定(服务器返回)。

  1. 强缓存:响应头中的 status 是 200,相关字段有expires(http1.0),cache-control(http1.1),两者同时出现时 cache-control 优先级更高。主要是利用 cache-controlmax-age值来进行判断。

    浏览器再次请求服务器时,浏览器会先判断max-age,如果到期则直接请求服务器,否则直接从缓存中读取。

    响应头的字段如图所示:

    2021年8月前端面试题最新出炉(二)—HTTP协议

  2. 协商缓存: 响应头中的 status 是 304,相关字段有 Etag / If-No-MatchLast-Modified / If-Modified-Since

    (1) ETag 和 If-None-Match

    Etag(服务器): 上次加载时,服务器的 response header 返回的; If-No-Match(浏览器): 浏览器请求时的 request header 里的,取的是 Etag 的值。

    服务器接收到If-None-Match的值后,会拿来跟该资源文件的 Etag 值做比较。 如果相同,则表示资源文件没有发生改变,命中协商缓存。

    服务器优先考虑Etag。

    (2) Last-Modified和If-Modified-Since

    Last-Modified(服务器):该资源文件最后一次更改时间,服务器的 response header 里返回; If-Modified-Since(浏览器):浏览器请求时的 request header 里的,取的是 Last-Modify 的值。 在下一次发送请求时,服务器在接收到会做比对,如果相同,则命中协商缓存。

    Etag 与 Last-Modifed 均是服务器的响应头返回的,如图所示:

    2021年8月前端面试题最新出炉(二)—HTTP协议

Q3: http协议中,常见的状态码有哪些?

A3:以2开头的代表的成功的返回,以3开头代表重定向,以4开头是客户端、用户操作的问题,以5开头是服务器端的错误。

状态码含义
200请求成功。
301永久重定向,请求的网页已永久移动到新位置,浏览器会自动重定向到新的 url 地址。
302临时重定向,服务器目前从不同位置的网页响应请求,可使用原有 url 地址。
303查看其它位置,重定向。
304Not Modified,资源未作修改。协商缓存。
305所访问资源必须通过代理访问。
401要求用户要进行身份验证,未登录等情形。
403请求已发出,但服务端禁止访问。
404页面无法找到。
500服务器内部错误。
501服务器不支持请求的功能。
502网关错误,通常需要后端找原因。
503服务器超载或系统维护。

Q4:http协议 与 https协议 有什么区别?

A4:http协议是明文传输,https协议是http协议+ssl协议构建的,加密传输协议。

  1. http 的连接很简单,是无状态的。
  2. http 传输的数据都是未加密的,是明文传输。
  3. https 协议是由 http和ssl协议构建的可进行加密传输和身份认证的网络协议,比http协议的安全性更高。可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
  4. https 协议需要ca证书,费用较高。ssl 证书也需要钱,功能越强大的证书费用越高。

Q5: TCP和UDP的区别

A5: 区别如下。

  1. TCP是面向连接的,UDP 是无连接的,即发送数据前不需要先建立链接。
  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。 并且因为tcp可靠,面向连接,不会丢失数据因此适合大数据量的交换。
  3. TCP是面向字节流,UDP面向报文,并且网络出现拥塞不会使得发送速率降低(因此会出现丢包,对实时的应用比如IP电话和视频会议等)。
  4. TCP只能是1对1的,UDP支持1对1,1对多。
  5. TCP是面向连接的可靠性传输,而UDP是不可靠的。

其他知识点,三次握手、四次挥手能说出来就可以了,详细过程点击这里

针对以上还可能会顺便问到 网站性能优化 等问题,大家自行再研究,本文主题暂不涉及。(文章持续维护中,如有不足,请指正。) 本文为原创文章,转载需经本人同意并注明出处。

大佬总结

以上是大佬教程为你收集整理的2021年8月前端面试题最新出炉(二)—HTTP协议全部内容,希望文章能够帮你解决2021年8月前端面试题最新出炉(二)—HTTP协议所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: