Skip to content

数据结构和算法

大厂前端面试,算法题通常不会考得特别偏,但会反复考察相同套路。

这份题单的目标不是“题海战术”,而是把前端面试最常出现的套路一次性梳理清楚,面试前可以按频率快速复习。

TIP

  1. 这份清单按 2026-04-09 可见的 LeetCode 「面试经典 150 题」整理。
  2. 对前端同学来说,不需要平均发力,应该优先刷高频分类,再补全长尾题。
  3. 如果时间不够,先刷 P0 必刷,再刷 P1 高频,最后再补 P2 扩展

TIP

如有疑问,可免费 加群 讨论咨询,也可参与 1v1 面试咨询服务,专业、系统、高效、全流程准备前端面试。

算法基础 Basic

磨刀不误砍柴工。刷题之前,先把数据结构、复杂度、常见解题套路补齐。

前端常见的数据结构有哪些?有什么应用场景?

数组 / 字符串

应用场景:

  • 列表渲染、批量处理、表单数据处理
  • URL / query 解析
  • 文本搜索、编辑器、日志处理

基础算法:

  • 排序、去重、二分查找
  • 双指针、滑动窗口、前缀和

链表

应用场景:

  • React Fiber
  • LRU 缓存
  • 任务调度、撤销重做

基础算法:

  • 遍历、反转
  • 快慢指针
  • 虚拟头结点

应用场景:

  • 括号匹配
  • 表达式求值
  • 浏览器前进后退、撤销重做

基础算法:

  • push
  • pop
  • 单调栈

队列

应用场景:

  • Event Loop
  • 消息队列
  • BFS 层序遍历

基础算法:

  • enqueue
  • dequeue

树 / 二叉树

应用场景:

  • DOM 树、VDOM
  • 菜单树、权限树、评论树

基础算法:

  • DFS
  • BFS
  • 前序 / 中序 / 后序遍历

应用场景:

  • TopK
  • 优先级任务调度
  • 实时中位数

基础算法:

  • 堆化
  • 堆排序
  • 优先队列

应用场景:

  • 流程图、关系图
  • 依赖分析
  • 课程 / 任务拓扑排序

基础算法:

  • DFS
  • BFS
  • 最短路径
  • 拓扑排序

什么是时间复杂度?

算法的时间复杂度,定性(数量级)地描述算法运行时间,用 O 表示。

常见时间复杂度:

  • O(1) 常数级
  • O(n) 线性
  • O(logn) 二分
  • O(nlogn) 排序 / 分治常见
  • O(n^2) 双层循环
  • O(n^3) 通常不可接受

什么是空间复杂度?

空间复杂度描述算法额外使用的内存规模。面试里经常会同时问:

  • 能不能从 O(n) 优化到 O(1) 额外空间?
  • 能不能原地修改?
  • 能不能避免递归栈?

前端面试怎么刷算法最有效?

P0 必刷分类

这几类是前端面试最常见的,出现频率明显高于其他分类:

  • 数组 / 字符串
  • 哈希表
  • 双指针
  • 滑动窗口
  • 链表
  • 二叉树 DFS / BFS
  • 二分查找
  • 一维动态规划

P1 高频分类

  • 矩阵
  • 区间合并
  • 堆 / TopK
  • 回溯
  • 多维动态规划

P2 扩展分类

  • Trie
  • 位运算
  • 数学
  • 分治
  • Kadane

面试前冲刺顺序

  1. 先把 数组 + 哈希 + 双指针 + 滑动窗口 刷透。
  2. 再刷 链表 + 栈 + 二叉树 + 二分
  3. 最后补 DP + 图 + 堆 + 回溯

前端高频必刷 50 题

如果你只剩 1 到 2 周,建议至少把下面这些题刷熟。

数组 / 哈希 / 双指针

滑动窗口 / 字符串

栈 / 链表

二叉树 / 图

二分 / 堆 / DP

面试经典 Top 150 全量题单

下面按官方分类整理成适合前端复习的结构。建议复习时按分类批量刷,不要随机跳题。

分类跳转

1. 数组 / 字符串 Array and String 24 题

2. 双指针 Two Pointers 6 题

3. 滑动窗口 Sliding Window 4 题

4. 矩阵 Matrix 5 题

5. 哈希表 Hashmap 8 题

6. 区间 Intervals 4 题

7. 栈 Stack 5 题

8. 链表 Linked List 11 题

9. 二叉树 Binary Tree - General 14 题

10. 二叉树 Binary Tree - BFS 7 题

11. 图 Graph - General 6 题

12. 图 Graph - BFS 3 题

13. Trie 3 题

14. 回溯 Backtracking 7 题

15. 分治 Divide and Conquer 4 题

16. Kadane 2 题

17. 二分查找 Binary Search 7 题

18. 堆 Heap 4 题

19. 位运算 Bit Manipulation 6 题

20. 数学 Math 6 题

21. 一维动态规划 1D Dynamic Programming 5 题

22. 多维动态规划 Multidimensional Dynamic Programming 9 题

高频分类速查

1. 数组 / 哈希

重点套路:

  • 原地修改
  • 哈希计数
  • 前缀积 / 前缀和
  • 贪心

必会题:

2. 双指针 / 滑动窗口

重点套路:

  • 左右指针逼近
  • 快慢指针
  • 维护窗口合法性

必会题:

3. 链表

重点套路:

  • 虚拟头结点
  • 快慢指针
  • 原地反转
  • 多指针重连

必会题:

4. 栈

重点套路:

  • 括号匹配
  • 表达式求值
  • 路径规整

必会题:

5. 树 / 图

重点套路:

  • DFS
  • BFS
  • 递归定义子问题
  • 拓扑排序

必会题:

6. 二分 / 堆

重点套路:

  • 有序区间判定
  • 左闭右闭模板
  • TopK
  • 优先队列

必会题:

7. 动态规划

重点套路:

  • 状态定义
  • 状态转移
  • 初始化
  • 滚动数组优化

必会题:

面试使用建议

一面

重点复习:

  • 数组 / 哈希 / 双指针 / 滑动窗口
  • 链表
  • 二叉树基础遍历

二面

重点复习:

  • 二叉树综合题
  • 二分
  • DP

面试前一天

只看这些:

  • 每个分类 2 到 3 道模板题
  • 自己以前做错过的题
  • 复杂度和边界条件总结

不要再刷新难题,重点是保证熟练度、表达清晰度和模板稳定性。