面试策略
本章目标:掌握算法面试的五步法,学会沟通技巧,从容应对各种面试场景。
你将学到
- 面试五步法标准流程
- 沟通与白板技巧
- 复杂度口述方法
- 遇到没思路时的破局方法
- 最容易翻车的边界用例清单
面试五步法
算法面试不是默写代码,而是展示思维过程的舞台。以下五步法适用于绝大多数面试场景:
第一步:澄清题意(2-3 分钟)
目标:确保你完全理解了题目。
- 主动问问题:数据范围?有没有负数?数组是否有序?是否可以修改输入?
- 复述题目:用你自己的话把题意说一遍,确认理解无误
- 举几个例子:用小例子验证你对题目的理解
常见澄清问题清单:
- 输入可以为空吗?大小为零?
- 数组可以有重复元素吗?
- 元素可以是负数吗?
- 需要原地修改吗?
- 对时间/空间复杂度有要求吗?
- 需要返回所有解还是解的数量?第二步:暴力解(2-3 分钟)
目标:先给出一个正确的解法,再逐步优化。
- 从最直观的暴力解开始说,即使你知道是 O(n²) 甚至 O(2ⁿ)
- 说清楚暴力解的思路和复杂度
- 明确指出瓶颈在哪里——"这部分的 O(n²) 可以用哈希表优化"
面试官想看到的是你的推理过程,而不是直接跳到最优解。
第三步:优化方案(3-5 分钟)
目标:从暴力解推导出更优解。
- 分析瓶颈:时间花在哪里?空间花在哪里?
- 尝试已知模式:这个问题像什么类型?(双指针?DP?二分?)
- 用小例子手动模拟优化思路,确认正确性
优化思路清单:
O(n²) → O(n):哈希表、双指针、滑动窗口、单调栈
O(n) → O(log n):二分查找
O(2ⁿ) → O(n²):动态规划(记忆化)
O(n) 空间 → O(1):滚动数组、原地修改第四步:编码(10-15 分钟)
目标:写出干净、正确的代码。
- 先写注释列出主要步骤(等于打草稿)
- 变量命名要有意义(
left/right而非a/b) - 边写边解释关键逻辑
- 写完后快速 review 一遍
第五步:测试(3-5 分钟)
目标:验证代码正确性,展示严谨态度。
- 用题目给的例子走一遍
- 用空输入、单元素测试
- 检查边界和特殊条件
沟通技巧
边想边说
面试官不在意你是否沉默思考 30 秒,但长时间的沉默会让面试官无法帮你。养成边想边说出声的习惯:
"我在考虑用滑动窗口,因为这道题要求连续子数组的最值……窗口需要维护一个最大值,我可以用单调队列……"
应对"没思路"
如果拿到题目完全没思路,试试以下策略:
- 画几个小例子:手动算 2-3 个例子,找规律
- 从暴力开始:哪怕 O(2ⁿ) 也写出来,然后找冗余
- 分类讨论:把问题拆成几种情况
- 联想类似题目:"这和 XX 题很像"
- 寻求提示:礼貌地请求——"我想确认一下,这里是否可以修改输入?"
白板技巧
- 先在角落写小例子
- 代码不要写太挤
- 变量名短但有含义
- 留出修改空间
复杂度口述模板
"时间复杂度是 O(n log n),因为排序需要 n log n,后面的双指针扫描是 O(n),
总体由排序主导。空间复杂度取决于排序实现,快排是 O(log n) 的递归栈空间。"要点:
- 说清楚为什么是这个复杂度
- 区分最坏情况和平均情况
- 别忘了空间复杂度(包括递归栈)
最容易翻车的边界用例
| 场景 | 示例 | 容易出什么问题 |
|---|---|---|
| 空输入 | [], "" | 数组越界、空指针 |
| 单元素 | [1] | 循环不执行、返回默认值 |
| 负数 | [-3, -2, -1] | 最大值/乘积逻辑错误 |
| 全相同 | [1, 1, 1] | 去重/比较逻辑遗漏 |
| 已排序 | [1, 2, 3, 4] | 二分边界、快速排序退化 |
| 逆序 | [4, 3, 2, 1] | 排序算法退化 |
| 超大输入 | n = 10⁶ | O(n²) 超时、整数溢出 |
| 循环 | 环形链表 | 死循环、栈溢出 |
| 最值边界 | INT_MAX, INT_MIN | 溢出、abs() 对 INT_MIN |
| 二进制 | 全 0 或全 1 | 位运算边界 |
时间管理建议
一场 45 分钟的算法面试时间分配:
澄清题意: 3 分钟
讨论方案: 7 分钟
编码: 20 分钟
测试调试: 10 分钟
提问环节: 5 分钟如果 20 分钟还没写出代码,果断简化方案——一个正确的暴力解远好于一个写不完的最优解。
面试后的复盘
每次面试后记录:
- 题目是什么?
- 我用了什么方法?
- 哪里卡住了?
- 面试官给了什么提示?
- 最优解是什么?
面试是最好的训练。每次失败都是查漏补缺的机会。
延伸阅读
- LeetCode 官方
- 代码随想录
- 《剑指 Offer》— 面试专项
- 《Cracking the Coding Interview》— 英文面试经典