常见的靠背的面试题做个Mark:
面试官:你做过哪些性能优化?
我:...
今天晚上总结了下:
- 移除阻塞渲染的资源
- 提前连接请求的源
- 降低服务端的响应时间
- 适当调整图片的大小(压缩图片大小)
- 移除未使用的资源js,css等
- 静态资源做好的缓存策略
- 减少主线程的工作
- 避免较大资源的请求
- 延迟加载暂时不需要的资源
- 压缩css文件,文本压缩,
- ........
面试官:优化的具体实践呢?
我:...
- 如淘宝中很多跨域的域名进行性能提升:
<link rel="dns-prefetch" href="//tui.taobao.com">,且dns域名解析是非阻塞的 - 避免多次页面重定向造成的页面延迟,比如引入compress包,实现压缩哦功能
- 浏览器的并发是有域名限制的 ,域名发散:浏览器对同一域名下的最大连接数做了限制,为了让浏览器并发加载,将资源分散到不同域名下,缺点是需要DNS解析更多的域名。 域名收敛:解决DNS解析耗时问题将资源汇总到一个或更少的域名下
面试官:这其中涉及到了长连接和短连接,谈谈你对他们的理解?
我:...
-
长连接(也叫持久连接):一次连接,进行多次请求数据的传输,比如你在请求头中看到的 conection:keep-alive 就是长连接
-
短连接:每一次的数据传输都需要建立一个新的连接,用完再马上关闭它,下次再用的时候重新建立一个新的连接
面试官:页面的生命周期(从浏览器输入url到显示页面的步骤)?
我:...
- 进行网络请求,开启系统的进程线程
- DNS域名解析(解析为ip地址)
-
查缓存(expires和catch-control):
浏览器缓存 => 系统缓存(一般存在host文件中)=>路由器缓存,浏览器缓存和系统缓存都 没有就找路由器缓存。 先查强缓存(expires:过期时间和cache-control,且cache-control的优先级高)再查协商缓存(需要请求服务器,看有这个资源没有,用到catch-control:no-cache;last-modified:'xxxxx' ,etag:'xxxxx'文件内容的一个hash值或者是是标签值 就是协商缓存,且etag的优先级高,状态码从200变为304走协商缓存),
-
域名解析
根域名解析=>顶级域名解析=>权限域名解析=>DNS服务器查询用(递归查询) =>tcp三握四挥 (三握:客户端给服务端发送一个请求连接的报文段;服务端收到这个报文段,返回给客户端一个 连接的报文段和一个确认的报文段;客户端收到服务端的回应后,给服务端发送了一个确认的报文段。 四挥:客服端给服务端发送一个断开报文段和确认报文段;服务端收到后给客户端发送确认报文段, 服务端再给客户端发送一个断开的报文段和确认的报文段,客户端接收上面发的报文段后,给服务端 发送一个确认报文,进入一个等待的状态,结果完全断开)
-
- 前后端的交互,进入后端的反向代理服务器,后端一层层的数据验证,完成计算后把数据包装成报文发给客户端
- 浏览器收到资源后解析渲染
- html,css,js=>渲染树(dom树结构和cssdom树)=>通过浏览器的引擎把dom解析,遇到js文件会阻塞dom的渲染,暂停构建dom有浏览器的引擎从中断的地方恢复dom构建,再根据节点解析重绘和回流来渲染页面
面试官:为什么需要3次握手,2次不行吗?为什么需要4次挥手,3次不行吗?
我:...
- 需要三次握手才能确认双方的接收与发送能力是否正常,有一个确认的过程,等待响应的过程所以不能一起发送,必须是三次握手四次挥手。
面试官:常见的http请求头信息和http响应头信息有哪些?
我:...
请求头:
- conection:keep-alive(长连接)
- content-length:'xxx'(请求体长度,超过一定的数据大小放到下一个请求中)
- Authorization:token值
- Cookie:通过Set-Cookie设置
- Date:发送日期
- Host:服务器的域名和端口号
- Origin:源信息
- Referer:调整前一个页面地址
- Cache-Control:是否使用缓存机制
- ...
响应头:
- Server:服务器的名称
- Cache-Control:是否使用缓存机制
- conection:keep-alive(连接选项)
- ETag:标识符,资源的hash值
- Expires:过期时间
- ...
面试官:说下http1、http2、http3做过哪些优化?
我:打扰了,贵公司是我不配去搬砖吧,再见。
这个问题,自行百度,来自阿祥五一前最后的倔强!