10. 手撕代码面试表达技巧
手撕代码面试不只是写出答案,还要让面试官看到你的思路、沟通能力、边界意识和调试能力。很多候选人明明会做题,但面试时一紧张就直接闷头写,写完也不解释,出了错也不知道怎么定位。测试岗位尤其要体现测试思维:确认需求、分析边界、设计样例、验证结果。
面试官看手撕代码,不只是看最终代码是否完美,还会看你解决问题的过程。你能不能先问清题意,能不能讲出为什么用 Map 或双指针,能不能主动补空数组和重复元素,能不能发现自己的 bug 并修正,这些都会影响评价。
一、不要一上来就写代码
拿到题目后,先复述题意:
我确认一下:输入是一个整数数组和目标值,输出是两个下标。如果不存在就返回空数组,对吗?数组里可能有重复元素吗?
这样做有三个好处:
- 避免理解错题;
- 获取边界条件;
- 展示沟通能力。
二、先讲思路
写代码前先说方法。
例如两数之和:
暴力法是双层循环,时间复杂度 O(n²)。我可以用 Map 保存遍历过的数字和下标,遍历当前数字时查 target - num 是否出现过,这样时间复杂度可以降到 O(n)。
这会让面试官知道你不是蒙代码。
三、写代码要清晰
代码风格尽量简单:
- 变量名有意义;
- 不写过度炫技的一行代码;
- 分支清晰;
- 边界先处理;
- 返回值明确。
测试岗面试更看重稳定和可读,不需要为了炫技写难懂代码。
四、边写边解释关键点
不用每行都解释,但关键逻辑要说:
这里先保存 next_node,是为了反转链表时不丢失后面的节点。
这里 left 移动到 seen[ch] + 1,是为了保证窗口内没有重复字符。
关键解释能体现你真的理解。
五、写完一定要跑样例
写完后不要说“好了”。要主动用样例走一遍。
例如二分查找:
用 nums=[1,3,5,7], target=5。left=0,right=3,mid=1 值为 3,小于目标,所以 left=2;mid=2 命中,返回 2。
跑样例可以暴露很多边界错误。
六、主动补边界用例
测试岗位尤其要主动补边界。
常见边界:
- 空数组;
- 单元素;
- 重复元素;
- 目标不存在;
- 全部相同;
- 字符串为空;
- 链表为空;
- 结果在开头或结尾;
- 大数据量。
你可以这样说:
我再补几个边界:空数组返回 -1;单元素命中返回 0;目标在首尾都能覆盖;重复元素如果要求第一个位置,需要改成继续向左找。
七、说复杂度
面试最后可以补一句复杂度。
这个解法遍历一次数组,时间复杂度 O(n),使用了 Map,空间复杂度 O(n)。
复杂度表达不用很长,但要准确。
八、写错了怎么办
写错很正常,关键是不要慌。
处理方式:
- 停下来复盘样例;
- 找到变量变化;
- 修正循环条件或边界;
- 解释原因。
可以说:
这里我发现 while 条件会漏掉最后一个元素,因为我使用的是闭区间,所以应该是 left <= right。
能自查并修正,反而是加分项。
九、测试岗表达优势
测试工程师可以在代码题中突出:
- 需求确认;
- 边界意识;
- 自测样例;
- 异常输入;
- 可读性;
- 结果验证;
- 问题定位。
不要和算法岗拼难度,要展示测试岗位该有的严谨性。
十、不同题型表达模板
数组题
我先看数组是否有序、是否允许修改原数组、是否有重复。如果是查找类,我考虑 Map;如果是原地移动或有序数组,我考虑双指针。
字符串题
我先确认是否区分大小写、是否包含空格特殊字符。回文和反转用双指针,频次统计用 Map,最长无重复子串用滑动窗口。
链表题
链表题我会先处理空链表和单节点,然后画指针关系。反转链表要先保存 next,避免断链。
二分题
我会先确认数组有序,并明确使用闭区间模板,循环条件是 left <= right。
十一、常见扣分点
- 不确认题意直接写;
- 写完不验证;
- 不处理空输入;
- 变量名混乱;
- 复杂度说错;
- 明显 bug 不自查;
- 只会背代码,解释不清;
- 遇到追问直接沉默。
十二、面试回答模板
如果面试官问“手撕代码面试怎么表达”,可以这样回答:
我手撕代码时会按固定流程来:先确认题意和边界,比如输入是否为空、是否有重复、是否要求原地修改;然后讲解思路,比如用 Map、双指针、滑动窗口还是二分;接着写清晰可读的代码;写完后用正常样例跑一遍,再补充边界样例;最后说明时间和空间复杂度。如果代码中发现问题,我会通过样例回溯变量变化来修正。测试岗面试中,我会特别强调边界用例和结果验证。
十三、练习清单
- 每道题先复述题意;
- 每道题先讲思路;
- 写完跑一个样例;
- 补三个边界;
- 说复杂度;
- 练习两数之和表达;
- 练习反转链表表达;
- 练习二分查找表达;
- 录音复盘表达;
- 做一次模拟面试。
手撕代码面试的核心不是沉默写代码,而是把解决问题的过程展示出来。测试岗尤其要把边界验证和自测能力讲出来。
配套刷题:

