基本回答都是
- 在浏览器地址栏输入URL
- 浏览器解析URL获取协议,主机,端口,path
- 浏览器组装一个HTTP(GET)请求报文
- 浏览器获取主机ip地址
- 打开一个socket与目标IP地址,端口建立TCP链
- TCP链接建立后发送HTTP请求
- 服务器将响应报文通过TCP连接发送回浏览器,浏览器接收HTTP响应
- 根据资源类型决定如何处理(假设资源为HTML文档)
- 解析HTML文档,构件DOM树,下载资源,构造CSSOM树,执行js脚本
- 最后展现出来给用户
基本如果应聘者只回到了上述步骤,很多关键步骤(前端应该了解的知识点)没有提及,那么基本凉凉一半了。这里简述下笔者感觉,这其中你应该具体展开说明的。
- 浏览器发送请求,是否需要查看缓存?是否请求资源在缓存中并且新鲜,跳转到转码步骤?如果资源已经缓存,是否新鲜?如何检查?怎么判断、http1.0 和 http1.1 的区别是什么,这些字段的优先级是怎么样子的。
- 浏览器解析 url 获取协议,过程是什么?DNS 递归查询可否介绍下?
- 建立 TCP 链接的三次握手是否可以介绍下
- 服务器接受到请求,是否需要检查缓存?检查什么字段?什么样的缓存会需要服务端检查?
- 服务端发送 TCP 链接,浏览器接受 http 相应后,根据什么来决定是否需要关闭连接?关闭 TCP 的四次挥手是什么?
- 浏览器是否需要检查状态码,有哪些状态码?(笔者高频考码:304、200)
- 在解析的时候,具体如何解析、是否有顺序。(重绘重排高频考题就在这里)
- 总结如上、我们是否可以给出一些基本的网站优化手段???
上述题目的每一步展开,都将会是下一个面试题。