正则表达式面试通关
面试高频:test/exec/match/matchAll 怎么选、g 标志的 lastIndex 陷阱、贪婪与惰性、四种零宽断言、灾难性回溯 ReDoS,以及动态构造正则为什么必须转义。
面试高频:test/exec/match/matchAll 怎么选、g 标志的 lastIndex 陷阱、贪婪与惰性、四种零宽断言、灾难性回溯 ReDoS,以及动态构造正则为什么必须转义。
面试高频:JS 有 GC 为什么还会泄漏、常见的七类泄漏场景、怎么用 Chrome DevTools 三步定位到具体代码行、React/Vue 里正确的清理姿势。
面试高频:Set/Map 怎么用、WeakMap/WeakSet 的"弱引用"到底是什么、为什么它们不能遍历也没有 size、什么时候该用弱引用避免内存泄漏。
面试高频:Proxy 怎么拦截对象操作、为什么一定要配合 Reflect、receiver 是什么、Vue 3 为什么从 defineProperty 换成 Proxy,以及 Proxy 的边界与性能坑。
ES2018 异步迭代协议:用 Symbol.asyncIterator 描述"随时间到达的数据流",for-await-of 消费异步可迭代对象,配合 async 生成器实现分页拉取与流式处理。
for...of、展开运算符、解构背后的底层协议;Generator 如何用 function* 与 yield 优雅实现可暂停、可双向通信的迭代器,面试高频辨析。
面试动手题:手写通用 curry、partial、compose、pipe。讲清原理(fn.length + 闭包)、执行顺序(右到左 vs 左到右)与两个高频易错点。
面试高频三连问:什么是纯函数?柯里化和偏函数到底有什么区别?函数式编程到底在解决什么问题、业务里怎么用。
面试必问的隐式转换输出题:+ 号何时拼接何时相加、关系比较的字典序陷阱、 0 和空字符串怎么判断——以及 ?? 和 || 到底怎么选。
面试必考的类型转换输出题:== 与 === 的区别、对象转原始值的 ToPrimitive 机制、 8 个假值,从规范推导 [] == ![] 为什么是 true。