2道面试题:输入URL按回车&HTTP2

发布时间:2019-08-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了2道面试题:输入URL按回车&HTTP2脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

通过几轮面试,我发现真正那种问答的技面,写一堆项目真不如去刷技术文章作用大,因此刷了一段时间的博客和掘金,整理下曾经被问到的2道面试题

  • 从浏览器输入URL按回车到页面显示都发生了什么

  • 说说你了解的HTTP/2

讲真,这2个问题笔者都没有试验过,纯粹整理其他文章成“可以用来答面试”的格式,如有错误欢迎指正。

从浏览器输入URL按回车到页面显示都发生了什么

  1. 浏览器根据URL进行DNS查询

    • 首先从DNS缓存中查询

    • 若未在缓存中找到,则不停的向上一级级请求DNS服务器

  2. 取得IP地址,建立TCP连

  3. 构造HTTP请求报

    • 添加一些HTTP首部

    • 根据同政策添加cookie

  4. 在TCP连接上发送HTTP报文,等待响应

  5. 服务器处理HTTP请求报文,返回响应HTTP响应报文

  6. 浏览器处理服务器返回的HTTP响应报文,若为HTML则渲染页面,不包括脚本的简单渲染流程如下

    1. 解析DOMCSSOM

    2. 根据DOMCSSOM计算render tree

    3. 根据render tree进行layout

    4. paint,至此,用户可以看到页面了

说说你了解的HTTP/2

讲真,看了那么多关于HTTP/2的文章,虽然没用过但是也能感觉出HTTP/2与HTTP/1.1的差距不是一点

这里整理的是“具体来说,对比HTTP/1.1,HTTP/2有哪些不同”

  • 在浏览器端,HTTP/2仅能在TLS下运行,也就是HTTPS。这不是因为HTTP/2标准强制要求,而是全球两大浏览器领导者 —— Firefox和Chrome都明确地表示,他们只会实现基于TLS的HTTP/2

  • HTTP/2取消了大量头字段,并且取消了小版本号。也就是说服务器和客户端都必须确定自己是否完整兼容http2或者彻底不兼容

  • 重要的一点,HTTP/2不再是一个基于文本的协议,通过新增的二进制分帧层变成了一个二进制协议,这意味着:

    • HTTP/2使用二进制帧进行数据交换。HTTP/2规范中一共定义了10种帧,其中最基础的两种分别对应于HTTP/1.1的DATA和HEADERS帧

    • HTTP/2可以对压缩头信息进行压缩了。反正是二进制帧

  • 利用帧,HTTP/2可以在单个TCP连接上高效传输所有资源

    • 通过在单个连接上建立多个流,实现流的多路复用

    • 流可以指派一个优先级,也可以为流建立依赖关系。这样可以避免“浏览器明明在等关键的CSS和JS,服务器却还在发图片”

    • 完全避免线头阻塞

  • 服务器可以利用RST_STREam帧随时中断某个chunk的发送

  • 服务器可以主动向客户端推送资源让客户端缓存。当然,客户端可以使用RST_STREAM帧拒绝掉服务器的“好意”

  • HTTP/2的流可以进行流量控制,通过公示流量窗口来限制另一端发送数据

如果让你用JS写个爬虫,你怎么写?

分an享li下自己用纯客户端javascript写的pixiv.net爬虫,在学习ES6或对js爬虫感兴趣的小伙伴欢迎Star一波哟~~

参考文献

脚本宝典总结

以上是脚本宝典为你收集整理的2道面试题:输入URL按回车&HTTP2全部内容,希望文章能够帮你解决2道面试题:输入URL按回车&HTTP2所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

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