本章导读
本章内容主要分为三大类:实现类、设计类 和 手写题。
1. 实现类:手写原生JS核心功能 (Polyfill)
这类题目要求你在不使用原生函数或现代语法糖的情况下,手动实现它们。这是对你JS底层知识最直接的考验。
- 常见题目:
实现 call, apply, bind:考察 this 指向、函数调用和参数处理。实现 new 操作符:考察原型链、构造函数和实例创建过程。实现 Promise:考察异步编程、事件循环和状态管理,是面试的绝对重点。实现 instanceof:考察原型链的查找机制。实现深拷贝 (Deep Clone):考察数据类型判断、递归以及循环引用的处理。
2. 设计类:构建前端系统与模块
这类题目会给你一个相对开放的需求场景,要求你设计出一套完整的技术方案。它不仅考察你的代码能力,更看重你的架构设计思维。
- 常见题目:
设计一个图片懒加载/预加载方案:考察性能优化、DOM 操作和浏览器API的运用。设计一个前端路由 (Router):考察 Hash 与 History API、状态管理和组件化思想。设计一个发布/订阅模式 (EventEmitter):考察设计模式、模块解耦和事件管理。设计一个无限滚动 (Infinite Scroll):考察性能、事件节流/防抖和用户体验。如何设计一个前端监控系统(SDK):考察错误捕获、性能监控和数据上报。
3. 手写题:通用工具函数与算法
这类题目通常是日常开发中频繁使用的工具函数,或者是一些经典算法在前端场景下的应用。它们考察你解决具体问题的能力和代码的健壮性。
常见题目:
实现函数节流 (throttle) 与防抖 (debounce):考察高阶函数、定时器和性能优化。实现一个柯里化函数 (curry):考察函数式编程思想和参数处理。实现数组扁平化 (flatten):考察递归、迭代和数组API的熟练度。实现一个模板引擎:考察字符串处理、正则表达式和编译原理的初步应用。用 reduce 实现 map, filter:考察对高阶函数的深刻理解。
异步编程
Promise
| 问题名称 | 创建时间 | 最后更新时间 |
|---|---|---|
| 实现 Promise | 2025-07-03 | 2025-07-03 |
| 实现 Promise.all | 2025-07-03 | 2025-07-03 |
| 实现 Promise.race | 2025-07-03 | 2025-07-03 |
| 实现带重试功能的 Promise | 2025-07-03 | 2025-07-03 |
| 实现带并发限制的 Promise | 2025-07-03 | 2025-07-03 |
跨域通信
| 问题名称 | 创建时间 | 最后更新时间 |
|---|---|---|
| JSONP | 2025-07-03 | 2025-07-03 |
核心原理模拟
This 指针
| 问题名称 | 创建时间 | 最后更新时间 |
|---|---|---|
操作符
| 问题名称 | 创建时间 | 最后更新时间 |
|---|---|---|
编程范式应用
函数式编程
| 问题名称 | 创建时间 | 最后更新时间 |
|---|---|---|
| 函数柯里化 | 2025-07-03 | 2025-07-03 |
| 实现 compose 方法 | 2025-07-03 | 2025-07-03 |
| 实现 before 方法 | 2025-07-03 | 2025-07-03 |
设计模式
| 问题名称 | 创建时间 | 最后更新时间 |
|---|---|---|
| EventEmitter | 2025-07-03 | 2025-07-03 |
通用函数工具
性能优化
| 问题名称 | 创建时间 | 最后更新时间 |
|---|---|---|
| 防抖 | 2025-07-03 | 2025-07-03 |
| 节流 | 2025-07-03 | 2025-07-03 |
| 实现函数缓存 | 2025-07-03 | 2025-07-03 |
数据处理
| 问题名称 | 创建时间 | 最后更新时间 |
|---|---|---|
| 深拷贝 | 2025-07-03 | 2025-07-03 |
| 实现数组 flatten 方法 | 2025-07-03 | 2025-07-03 |
| 实现 lodash.get | 2025-07-03 | 2025-07-03 |
其他
| 问题名称 | 创建时间 | 最后更新时间 |
|---|---|---|
| 实现 Apply 方法 | 2025-07-03 | 2025-07-03 |
| 实现 Bind 方法 | 2025-07-03 | 2025-07-03 |
| 实现 Call 方法 | 2025-07-03 | 2025-07-03 |
| 实现 InstanceOf 操作符 | 2025-07-03 | 2025-07-03 |
| 实现 New 操作符 | 2025-07-03 | 2025-07-03 |
| 巧记 Call, Apply, Bind 的实现 | 2025-07-03 | 2025-07-03 |