下面为你整理一份 系统化、可直接用于应聘准备的《最常被问到的面试题:Algorithms & Coding 篇(Frequently Asked Interview Questions)》。内容覆盖数据结构、算法思想、时间复杂度、代码实现、场景类题目等,适用范围包括:Java / Python / C++ / Go / 前后端开发岗位。

内容经过专业梳理,结构如下:

  1. 高频算法基础题(Big-O 等)
  2. 高频数据结构设计题
  3. 高频 Coding 题
  4. 高频场景类算法题(工程化)
  5. 高频系统设计相关的算法问法
  6. 面试官常追问的 Follow-up

如需,我可提供 完整答案 + 代码模板 + 解释视频脚本


一、Big-O 复杂度(必问)

1. What is the time and space complexity of common data structures?

必答内容应包括:

  • Array: O(1) access, O(n) insert/delete
  • LinkedList: O(n) access, O(1) insert/delete
  • HashMap / HashTable: O(1) average, O(n) worst-case
  • Binary Search Tree: O(log n) average, O(n) worst-case

2. Explain the difference between O(n), O(log n), O(n log n), and O(1).

面试官会追问:

  • 为什么二分查找是 O(log n)?
  • 归并排序为什么是 O(n log n)?

3. What is amortized analysis?

例子:ArrayList 的扩容成本。


二、数据结构(高频问题)

1. Implement a stack using two queues.

Follow-up:反过来实现 queue using two stacks。

2. Design a LRU Cache.

必须提到:

  • 双向链表(Doubly Linked List)
  • HashMap
  • put/get O(1)

3. Implement a queue that returns the minimum element in O(1).

MinQueue / MinStack 是经典题。

4. Explain the difference between BFS and DFS and when to use each.

5. Explain how a Trie works and its use cases.

(autocomplete / dictionary search)


三、Coding 高频题(必刷)

这些题大部分来自 LeetCode Top 100。

1. Two Sum

经典:HashMap

2. Reverse Linked List

Iterative & recursive both required.

3. Merge Two Sorted Lists

考基础指针操作。

4. Binary Search

Follow-up:

  • 搜索左边界
  • 搜索右边界
  • rotated sorted array

5. Valid Parentheses

Stack 题。

6. Longest Substring Without Repeating Characters

滑动窗口 Sliding Window。

7. Maximum Subarray(Kadane’s Algorithm)

8. Remove Nth Node from End of List

双指针 Two Pointers。

9. Level Order Traversal(层序遍历)

队列 BFS。

10. Top K Frequent Elements

堆(min-heap) or bucket sort。


四、工程化场景类算法题(高级岗位常问)

1. 如何检测一个服务是否“超时、重试、雪崩”?

算法关键词:

  • exponential backoff
  • circuit breaker
  • sliding window counters

2. 如何判断请求限流(rate limit)?

常见算法:

  • Token bucket
  • Leaky bucket
  • Sliding window

3. 如何快速查找日志中的最近 N 条记录?

  • min-heap
  • ring buffer
  • binary indexed tree(高级)

4. 如何实现 “Trending Topics” / 热点榜单?

常问结构:

  • heap
  • hash map
  • count-min sketch(大厂常问)

五、图论(高频考点)

1. Detect cycle in a directed graph.

DFS + recursion stack。

2. Shortest Path(最短路径)

  • Dijkstra
  • BFS(非加权图)

3. Number of Islands

BFS/DFS/Union-Find 三种写法。

4. Find connected components


六、动态规划(DP 高频题)

1. Climbing Stairs

经典 DP 入门。

2. Longest Increasing Subsequence(O(n log n) 解法是加分项)

3. Edit Distance

DP 重灾区:面试官必追问状态转移公式。

4. Knapsack

解释

  • 01 背包
  • 完全背包
    是区分优秀候选人的关键。

七、字符串算法(面试必考)

1. KMP 原理

要求回答:

  • next 数组(前缀函数)
  • 匹配过程

2. Sliding Window 分类题

  • 最长子串
  • 最小覆盖子串(最难)

3. 字符串加密 / 解密(简单 Caesar Cipher)


八、系统设计里会嵌入的算法问题(中高级常问)

1. 如何在海量请求中快速 deduplicate?

  • bitmap
  • bloom filter(高频考点)

2. 如何在大数据中找到 top 1%?

  • 分治(map-reduce)
  • Priority Queue + streaming

3. 如何在分布式系统中实现 leader election?

  • heartbeats
  • raft/follower/candidate roles(Google / Amazon 喜问)

九、面试官追问的 Follow-up 总结(很关键)

  1. 如果输入是极大规模数据怎么办?(Memory constraint)
    作用:考察你是否会优化空间复杂度。
  2. 如果数据是 streaming 而不是静态数组?
    作用:考察 heap / sliding window / monotonic queue。
  3. 如果要多线程支持?
  • synchronized / lock-free queue
  • volatile / CAS
  1. 如果需要持久化?
  • LRU + 写入磁盘
  • Bloom filter + count-min sketch