1、检测网页空闲状态
监听鼠标和键盘事件从而判断用户有没有在当前页面进行操作
2、JS放在head里和放在body里有什么区别
放在head会在页面加载之前执行,放在body里会在页面加载之后执行
放在head里,js可能会阻塞页面的渲染
如果js依赖某些页面元素,放在body里可以确保拿到这些信息
发在head里,全局变量和函数在页面的整个生命周期里都能访问得到
3、什么是尾递归
尾递归是一种特殊的递归形式,在尾递归中,递归是函数的最后一步操作且结果直接返回不进行额外操作
所以,尾递归并不会造成调用栈的增长,每次递归调用都会覆盖当前函数帧,会避免调用栈溢出
4、常见网络协议
应用层:http,https,ftp,sftp、websocket 传输层:tcp、udp
5、怎么保持用户登录态
6、git迁移仓库
git clone --mirror <仓库 A URL>
cd <仓库 A 目录>
使用 --mirror 选项克隆仓库会保留所有分支、标签和提交历史
将地址改为新仓库的地址
git remote set-url --push origin <仓库 B URL>
git push --mirror
7、JS 执行 100 万个任务, 如何保证浏览器不卡顿
使用web work线程 使用requestAnimationFrame将任务分块执行 使用requestIdleCallback在浏览器空闲的时候执行
8、http 中 CSP 是什么
是一种安全策略,通过指定浏览器只能加载特定来源的资源,来减少恶意代码的执行 可以预防跨站脚本攻击和数据注入攻击 csp可以通过http头部设置,也可以使用meta标签写在html中
9、http 中 HSTS 是什么
是一种安全策略,可以强制浏览器通过https访问网页 可以防止中间人攻击
10、CORS请求中,是如何触发预检请求的
developer.mozilla.org/zh-CN/docs/… 对于可能对服务器数据产生副作用的http请求,浏览器必须以options方法发起一个预检请求,从而获取服务端是否允许跨源请求