前端面试题详解整理17|settimeout会有不准的情况吗,防抖节流,http2多路复用 ,webworker,文件切片上传,轮询,抓包工具,csrf前端性能

124 阅读4分钟

wxg前端日常实习一面(已挂)_牛客网 (nowcoder.com)

wxg前端日常实习一面(已挂)

30分钟算法30分钟提问
算法题:
1. 数组第k个最大元素
2. 有效的括号
3. 搜索旋转排序数组
八股项目:
1. settimeout会有不准的情况吗?有没有可能会提前?如果让你去构造这样一个场景, 要怎么样写代码让他延迟执行
2.  setTimeout 不准时原因及 弥补办法_settimeout没有立即发生-CSDN博客

当前任务执行时间过久会导致定期是设置的任务呗延迟执行的

嵌套调用setTimeout存在最小时间延迟4ms 没有被激活的页面当中的定时器最小值大于1000ms 切换了标签页或者把浏览器最小化, 延迟执行时间有最大值, 函数的嵌套导致的,嵌套层级达到一定的深度,

requestAnimationFrame是因为定时器机制导致的,,宏任务 使用requestAniationFrame不需要设置具体的时间

3. 项目里写了通过防抖节流提升页面性能, 为什么防抖节流可以提升页面性能, 有没有一些具体的衡量指标体现他的性能

前端性能优化之防抖与节流,大幅度降低你的事件处理性能-腾讯云开发者社区-腾讯云 (tencent.com) 防抖:从频繁触发执行变为最后一次才执行的 节流:从频繁触发执行变为每个一段时间执行一次

如果在指定的时间内又触发了该事件,则毁掉函数的执行时间又会基于此重新开始计算

var debounce = function(fn, delayTime) {
 var timeId;
 return function () {
 var context = this, args = arguments;
    timeId && clearTimeout(timeout);
    timeId = setTimeout(function {
      fn.apply(context, args);
    }, delayTime)
  }
}

节流:频繁触发的事件,只会在制定的时间段内执行事件的毁掉,即触发事件间隔大于等于制定的事件才会执行回调函数 函数防抖只会在最后一次触发事件只会才会执行回调内容

5. 浏览器同域名请求的最大并发数限制
前端性能优化篇——浏览器http同域名并发请求对限制_http并发限制-CSDN博客 突破浏览器域名并发限制的解决方案 - 掘金 (juejin.cn)

7. http2多路复用
深入理解http2.0协议,看这篇就够了! - 知乎 (zhihu.com) http2引入了二进制数据帧和刘,二进制数据帧和流, 9. csrf怎么发生的
CSRF攻击理解、简单演示与预防-腾讯云开发者社区-腾讯云 (tencent.com)

止CSRF策略

CSRF 的两个重要特点

  • 伪造请求的网站必须利用用户在被攻击的网站的会话
  • 伪造请求的网站并没有访问被攻击网站的页面

策略一 从上可以看出,可以在form表单中添加csrf token,服务器端验证比对来防止csrf。

另外两点和浏览器本身及同源策略有关的是

  • 你在domain a 的页面发送一个请求向domain b的时候可以自动带上domain b的cookie。( 这点给了CSRF的机会)
  • 你在domain a的页面无法读取domain b的cookie (这里引出了另一个策略)

策略二 domain b的交易比对请求头中的csrf token和cookie中的token;b网站只需要在请求的时候从cookie中读取csrf token 放入请求头中个, 在服务器端进行比对即可。

11. 浏览器的同源策略为什么不能完全阻止csrf攻击
存在不受同源策略限制的内容,同源策略主要用于限制不同于下的网页之间的交互,html标签ig,video等一些资源的文件(如图片,视频)不受同源策略的限制, 13. 怎样有效防范csrf攻击
什么是CSRF?如何防御CSRF攻击?知了堂告诉你 - 知乎 (zhihu.com)

15. 文件切片上传如果文件非常大会产生什么问题
前端大文件上传解决方案—分片上传 - 知乎 (zhihu.com)

17. 秒传的实现原理
18. webworker
webworker是独立的线程,同时运行,互不干扰, 一文彻底学会使用web worker - 掘金 (juejin.cn) 14. websocket建立连接的过程
15. 轮询
setInterval:请求响应结果会受到限制网络或者服务器处理速度,setInterval这种固定间隔并不适合 promise+setTimeoutsleep: 16. 抓包工具怎么抓到https的包 测试必备工具之抓包神器 Charles 如何抓取 https 数据包? - 知乎 (zhihu.com)

来源:牛客网