本章导读
本章内容主要分为三大类:实现类、设计类 和 手写题。
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 |