得物两面凉经
一面
- 在执行过程中,执行上下文都包含哪些内容?❌
- 换个问法:执行过程中,this 的绑定关系有哪些情况?this 的指向分别是什么?
- 我们有哪些方式可以改变 this 的指向?
- 箭头函数的 this 可以被改变吗?
- 箭头函数和普通函数,除了 this 指向不同以外,还有哪些区别?
- 你刚才提到 arguments。现在如果要实现一个函数的“柯里化(currying)”,应该怎么做?
- 一个函数执行完以后,它的内部变量仍然能被外部访问,这种现象叫什么?闭包有哪些常见使用场景?
- 滥用闭包会导致哪些问题?
- 除了闭包之外,还有哪些常见场景会导致内存泄漏?(超高频)
- 简单介绍一下 JS 的垃圾回收(GC)机制。
- 如果我们已经发现应用存在内存泄漏,如何定位到导致泄漏的源码位置?有哪些方法?❌
- 事件循环(Event Loop)的工作流程/机制是怎样的?
- 在 React 环境下,setState 属于宏任务还是微任务?它是同步还是异步的?
- 在 React 环境下,如果我想拿到浏览器中真实的 DOM 引用(reference),可以怎么做?
- 如何保证拿到的是真正“已渲染完成”的 DOM?应该在什么时机获取?
- requestAnimationFrame 在事件循环里的哪个阶段执行?那 requestIdleCallback 呢?
- 浏览器把 HTML/DOM 渲染为可见页面的过程中,关键步骤有哪些?(从接收 HTML 到最终渲染)
- 哪些情况会导致重排(回流)?有哪些方法可以减少重排(回流)?
- pnpm 相比 npm 做了哪些改动、带来哪些提升?为什么会更快?
- 如果一个应用“首屏加载”很慢,可能的原因有哪些?有哪些常规优化手段可以提升首屏加载速度?
二面
- 你前面提到的双 Token 无感登录是怎么理解的?
- 为什么要用双 Token?为什么不能只用长 Token 发请求,而要同时设计短 Token 和长 Token?
- 长 Token 为什么更容易受到攻击?
- 短 Token 放在 sessionStorage 就能防 XSS 的原因是什么?XSS 具体如何窃取 Token?
- 前端怎么用 Token 判断权限?这部分和服务端鉴权的关系是什么?
- 把 Token 等信息放在 Cookie 的传统方式相比,你们现在的做法区别在哪里?
- 「构建音视频功能,支持单人及群组通话」这一块,前端主要做了什么?
- 你提到做了性能优化,具体做了哪些?
- 除了包体积优化和 HTTP/2 / HTTP/3 多路复用,还有哪些优化手段?
- HTTP/2 的多路复用与 HTTP/1.1 的 keep-alive 有什么区别?
- UDP 相比 TCP 效率高在哪里?缺点是什么?为什么还长期使用 HTTP/1.1/HTTPS(基于 TCP)?
- 你们说渲染耗时 P90 从 1.8s 降到 0.6s:这个是线上真实统计吗?渲染耗时该如何统计?时间起点和“绘制完成”的终点分别取哪里?P90 是什么意思?能举例说明吗?
- 手撕:无重复最长子串,改编为返回子串,如果有长度一样的返回第一个