程序员面试经典刷题清单

242 阅读3分钟

以下是一份针对程序员面试的经典刷题清单,涵盖算法与数据结构的核心考点,适合准备技术面试(如 LeetCode、剑指 Offer、大厂面试等)。题目按类别和难度分级,帮助你系统化复习。


一、数组与字符串

  1. Two Sum(两数之和)

  2. Container With Most Water(盛最多水的容器)

  3. Longest Substring Without Repeating Characters(无重复字符的最长子串)

    • 考察点:滑动窗口 + 哈希表
    • 题目:LeetCode 3
  4. 3Sum(三数之和)

    • 考察点:排序 + 双指针去重
    • 题目:LeetCode 15

二、链表

  1. Merge Two Sorted Lists(合并两个有序链表)

  2. Reverse Linked List(反转链表)

  3. Linked List Cycle(环形链表)

    • 考察点:快慢指针(Floyd 算法)
    • 题目:LeetCode 141
  4. Copy List with Random Pointer(复制带随机指针的链表)


三、树与图

  1. Binary Tree Inorder Traversal(二叉树的中序遍历)

  2. Validate Binary Search Tree(验证二叉搜索树)

  3. Number of Islands(岛屿数量)

  4. Course Schedule(课程表)

    • 考察点:拓扑排序(入度表 + BFS)
    • 题目:LeetCode 207

四、动态规划(DP)

  1. Climbing Stairs(爬楼梯)

    • 考察点:斐波那契数列变种
    • 题目:LeetCode 70
  2. Longest Palindromic Substring(最长回文子串)

    • 考察点:中心扩展法或 DP
    • 题目:LeetCode 5
  3. Coin Change(零钱兑换)

  4. Edit Distance(编辑距离)


五、回溯与递归

  1. Subsets(子集)

    • 考察点:回溯法生成所有组合
    • 题目:LeetCode 78
  2. Permutations(全排列)

    • 考察点:回溯法 + 交换元素
    • 题目:LeetCode 46
  3. N-Queens(N 皇后)


六、其他高频题

  1. Implement Trie (Prefix Tree)(实现前缀树)

  2. LRU Cache(LRU 缓存机制)

    • 考察点:哈希表 + 双向链表
    • 题目:LeetCode 146
  3. Merge Intervals(合并区间)

    • 考察点:排序 + 区间合并逻辑
    • 题目:LeetCode 56
  4. Top K Frequent Elements(前 K 个高频元素)

    • 考察点:堆(Heap)或快速选择(Quickselect)
    • 题目:LeetCode 347

七、系统设计(高级)

  1. 设计 TinyURL

    • 考察点:哈希短网址生成 + 碰撞处理
    • 题目:LeetCode 535
  2. 设计停车场系统

    • 考察点:面向对象设计 + 状态管理
  3. 设计消息队列

    • 考察点:分布式系统基础

刷题建议

  1. 按类型刷:集中攻克同一类问题(如先刷完所有链表题)。
  2. 高频优先:优先解决高频面试题(如 Two Sum、LRU Cache)。
  3. 手写代码:模拟面试环境,白板或纸笔写代码。
  4. 总结规律:如动态规划的“状态转移方程”、回溯的“剪枝条件”等。

推荐资源

  • 书籍:《算法导论》《剑指 Offer》《Cracking the Coding Interview》
  • 网站:LeetCode、LintCode、牛客网
  • 视频:MIT 算法课、B 站《花花酱 LeetCode》

根据目标公司(如 Google、字节跳动)调整刷题重点,大厂常考「动态规划」「图论」「系统设计」等高阶题。