面试题集合(真题篇)

1. 性能优化 :项⽬⾥做过哪些性能优化,怎么检测性能,有没有实际测过优化的数据有多少提升

性能优化

性能优化

  • 避免过多的回流与重绘

    实质上是避免过多的 render tree 操作,避免使用table布局;DOM结构避免嵌套过深

  • JavaScript、Css、Html压缩

  • splitChunks 拆包

  • 网页中可视化部分(图片,视频等)采用骨架

  • 函数的频繁调用考虑使用防抖节流

  • 多利用缓存(多跟服务器端有关)

  • 大的基础库使用CDN

  • 用上懒加载和预加载

  • 使用Service Worker

检测性能

  • 很直观的看network页面的load时间
  • lighthouse进行检测
  • 用webpack-bundle-analyzer查看打包后资源情况

2. http2.0有哪些特性?https是怎么加密的,https强缓存在项目中怎么用的

http2.0的特性

  • 二进制分帧

    HTTP 1.x 的解析是基于文本,HTTP 2之后将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码,提高传输效率

  • 多路复用

    一次链接成功后,只要链接还没断开,那么 client 端就可以在一个链接中并发地发起多个请求,每个请求及该请求的响应不需要等待其他的请求,某个请求任务耗时严重,不会影响到其它连接的正常执行

  • 头部压缩

    由于 HTTP 是无状态的,每一个请求都需要头部信息标识这次请求相关信息,所以会造成传输很多重复的信息,当请求数量增大的时候,消耗的资源就会慢慢积累上去。所以 HTTP 2 可以维护一个头部信息字典,差量进行更新头信息,减少头部信息传输占用的资源

HTTP 与 HTTPS

  • HTTP 是明文传输,HTTPS 通过 SSL\TLS 进行了加密
  • HTTP 的端口号是 80,HTTPS 是 443
  • HTTPS 需要到 CA 申请证书,一般免费证书很少,需要交费
  • HTTPS 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

浏览器缓存策略

3. web安全(xss/csrf)

xss(Cross-Site Scripting)

定义

跨站脚本攻击,简称脚本注入

原理

恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。

防范

  • HttpOnly 防止劫取 Cookie,浏览器将禁止页面的Javascript 访问带有 HttpOnly 属性的Cookie。
  • 输入检查,对 <> 进行转译,使得恶意的脚本内容无法执行(React DOM 会在渲染的时候把内容(字符串)进行转义)

csrf

定义

跨站请求伪造,是一种劫持受信任用户向服务器发送非预期请求的攻击方式

原理

利用同域下cookie可以共享,在A页面中嵌入B页面的请求,如果用户登录过B页面,即在A中的B请求可以获取B服务器信任。

防范

  • Token验证

4. 前端能在Http缓存上做哪些优化

  • 对于经常不改动的静态资源可以在 nginx 上增加相关的缓存配置,尽可能的命中强缓存
  • 正确使用好前端资源打包的 hash
  • Service Worke 也可以针对缓存做一些优化

5. bff如何做鉴权

6. setTimeout


Profile

不正经的人机交互工程师