手撕环节方法论
手撕代码考的不是代码,是解题过程:沟通、思路、实现、测试。主线:四步流程 + 常见失分点。
四步流程
手撕四步: 沟通贯穿全程
1. 澄清(2-3 分钟):
- 复述题目确认理解(“我的理解是…对吗?”)
- 问边界:空输入、重复元素、负数、超大数、内存限制
- 问复杂度要求(“有没有时间空间要求?”)
2. 思路:
- 先说暴力解再优化(展示思维过程)
- 说清算法 + 复杂度(“哈希表 O(n) 时间 O(n) 空间”)
- 面试官确认后再动手(方向错了及时止损)
3. 实现:
- 边写边讲(“这里用哈希记录出现次数”)
- 变量命名清晰、处理边界(空数组、单元素)
- 卡住了说思路,别闷头想
4. 验证:
- 跑一个正常用例(口头走一遍)
- 跑边界用例(空、单元素、重复)
- 复杂度复盘:“还有优化空间吗?”
常见失分点
| 失分点 | 解法 |
|---|---|
| 不澄清直接写 | 先问边界,展示严谨 |
| 闷头写不说话 | 边写边讲思路 |
| 写完不测试 | 主动跑用例 |
| 卡住硬想 | 说出来,面试官会引导 |
| 只给最优解不给过程 | 暴力 → 优化,展示思维 |
语言选择
- 用最熟的语言(不是最炫的):Python 简洁适合算法题,Go/Java 展示工程能力
- 高频模板提前背熟:二分、快排、双指针、BFS/DFS、堆、并查集
- 内置库放心用(Python 的 collections、heapq),面试官看的是思路
面试追问
- 手撕第一步? 澄清:复述 + 问边界(空、重复、负数、复杂度要求)。别急着写
- 思路怎么说? 先暴力后优化,讲清算法和复杂度,面试官确认再动手
- 卡住了怎么办? 说出来:“我在想怎么优化这部分”,面试官会引导。别硬扛
- 写完做什么? 主动测试:正常用例 + 边界用例,再复盘复杂度
- 怎么准备? 背熟高频模板(二分/双指针/BFS/堆),每天 1-2 题保持手感