面试题:前端的性能优化、页面的生命周期

184 阅读4分钟

常见的靠背的面试题做个Mark:

面试官:你做过哪些性能优化?
我:...

今天晚上总结了下:

  • 移除阻塞渲染的资源
  • 提前连接请求的源
  • 降低服务端的响应时间
  • 适当调整图片的大小(压缩图片大小)
  • 移除未使用的资源js,css等
  • 静态资源做好的缓存策略
  • 减少主线程的工作
  • 避免较大资源的请求
  • 延迟加载暂时不需要的资源
  • 压缩css文件,文本压缩,
  • ........
面试官:优化的具体实践呢?
我:...
  • 如淘宝中很多跨域的域名进行性能提升:<link rel="dns-prefetch" href="//tui.taobao.com">,且dns域名解析是非阻塞的
  • 避免多次页面重定向造成的页面延迟,比如引入compress包,实现压缩哦功能
  • 浏览器的并发是有域名限制的 ,域名发散:浏览器对同一域名下的最大连接数做了限制,为了让浏览器并发加载,将资源分散到不同域名下,缺点是需要DNS解析更多的域名。 域名收敛:解决DNS解析耗时问题将资源汇总到一个或更少的域名下
面试官:这其中涉及到了长连接和短连接,谈谈你对他们的理解?
我:...
  • 长连接(也叫持久连接):一次连接,进行多次请求数据的传输,比如你在请求头中看到的 conection:keep-alive 就是长连接

  • 短连接:每一次的数据传输都需要建立一个新的连接,用完再马上关闭它,下次再用的时候重新建立一个新的连接

面试官:页面的生命周期(从浏览器输入url到显示页面的步骤)?
我:...
  1. 进行网络请求,开启系统的进程线程
  2. 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三握四挥 (三握:客户端给服务端发送一个请求连接的报文段;服务端收到这个报文段,返回给客户端一个 连接的报文段和一个确认的报文段;客户端收到服务端的回应后,给服务端发送了一个确认的报文段。 四挥:客服端给服务端发送一个断开报文段和确认报文段;服务端收到后给客户端发送确认报文段, 服务端再给客户端发送一个断开的报文段和确认的报文段,客户端接收上面发的报文段后,给服务端 发送一个确认报文,进入一个等待的状态,结果完全断开)

  3. 前后端的交互,进入后端的反向代理服务器,后端一层层的数据验证,完成计算后把数据包装成报文发给客户端
  4. 浏览器收到资源后解析渲染
    • 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做过哪些优化?
我:打扰了,贵公司是我不配去搬砖吧,再见。

这个问题,自行百度,来自阿祥五一前最后的倔强!