Skip to main content

手撕代码(前端面试)

JS 高频「手撕代码」合集,按主题归类。每篇尽量给出可运行实现 + 核心要点 + 常见追问,面向高级前端面试。

高频必会(务必能默写)

主题考察点
深拷贝循环引用(WeakMap)、特殊类型(Date/RegExp/Map/Set)、Symbol 键
Promise状态机、链式调用、then 返回新 Promise、all/race/allSettled/any
防抖节流this/参数透传、leading/trailing、cancel
原型相关手写 new/call/apply/bind/instanceof/继承
函数柯里化闭包、参数收集、fn.length
EventEmitter发布订阅、once/off 的边界处理

数组与数据结构

异步与并发

框架原理

函数式与其他

答题建议

  1. 先确认需求边界:是否要处理 this、参数、异常、循环引用、空输入等,再动手。
  2. 从简到繁:先写能跑的「启蒙版」,再逐步加边界与优化,体现思路。
  3. 主动讲复杂度与权衡:时间/空间复杂度、为什么用 WeakMap、为什么用微任务等。
  4. 准备追问:每个题都有经典延伸(如 bind 支持 new、节流的 leading/trailing),提前想好。