订阅更新

候选人在白板上写代码卡住了——怎么引导而不变成送分?

面试官手册手册 第 9 题 约 7 分钟读完

本文目录
  1. 先说结论
  2. 先理解候选人为什么卡住
  3. 五级引导阶梯
  4. 引导的话术模板
  5. 引导时的「软规则」
  6. 一个真实场景:五级引导实战
  7. 不同岗位的「容错引导级别」
  8. 面试高频追问
  9. 实战踩坑:太热情的引导毁了一个评估
  10. 候选人侧反向使用指南
  11. 总结

先说结论

引导不是慈善,是测试。好的引导能继续考察候选人,差的引导直接把题答案告诉他。

五级引导阶梯:从问场景 → 给暗示 → 给反例 → 给思路 → 给代码骨架。每升一级,候选人通过的难度降一档,但你心里记好他用了几级。

最终评估按「最高引导级别」打分。不靠引导写出来的⭐⭐⭐,靠四级引导才写出来的⭐。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

白板写代码(或者现在更多是共享屏幕写代码)是大数据面试里最能区分人的环节。但也是新人面试官最容易翻车的环节——候选人卡住了,你不引导他完全写不出,引导多了等于送分,最后没法评估。我自己摸索了几年才搞清楚一个原则:引导的目的是「测能力」不是「帮通过」,给提示也要给得有水平。这一篇分享我自己的「五级引导阶梯」。

先理解候选人为什么卡住

候选人在白板上卡住,原因有几种,处理方式不一样:

卡住原因信号面试官应对
紧张型知道思路但写不出代码,手抖给5秒喘口气,鼓励"你说的思路是对的"
边界型代码能写但卡在边界条件提示"考虑一下空数据/单条数据的情况"
语法型思路对但语法不熟允许伪代码,看思路而不是语法
不会型完全没思路降低难度或换题
想复杂型试图用复杂方案,把自己绕进去提示"有没有更简单的方法?"

先识别原因再决定引导。「紧张型」给鼓励就过;「不会型」再多引导也是送分——这种情况换题比硬引导有意义。

五级引导阶梯

我把引导分成5级,从轻到重:

# 五级引导阶梯(用一道SQL连续登录题做例子)
# 题目:求连续登录3天的用户
 
# 【0级】不引导
# 候选人完整写出,无任何提示。
# 评估:⭐⭐⭐ 靠他自己
 
# 【1级】问场景
# 提示:你能说说你打算怎么做吗?
# → 让候选人讲思路,思路对了就让他动手
# 评估:⭐⭐⭐ 思路自己想到的,写出来⭐⭐
 
# 【2级】给暗示
# 提示:这道题有几种解法,你最熟的窗口函数能用上吗?
# → 暗示方向但不给具体函数
# 评估:⭐⭐ 方向是给的,但实现是他自己的
 
# 【3级】给反例
# 提示:如果只用GROUP BY能解决吗?为什么不行?
# → 让候选人否定错误路径,反推正确路径
# 评估:⭐⭐ 排除法引导,能力在中等
 
# 【4级】给思路
# 提示:用ROW_NUMBER()减日期,相同的就是连续
# → 直接告诉核心思路
# 评估:⭐ 能写出来但思路不是自己的
 
# 【5级】给代码骨架
# 提示:写一个CTE,里面用ROW_NUMBER()按user_id分组按date排序
# → 几乎等于送分
# 评估:⭐ 或不通过 看具体执行

引导级别越高,对候选人的能力评估就要相应下调。这就是「最终评估按最高引导级别打分」的原则。

引导的话术模板

不同级别的引导,话术风格不一样:

// 1级 - 问场景
// "你能跟我聊聊你的思路吗?打算怎么解?"
// "先不写代码,我们口头讨论一下方案?"
 
// 2级 - 给暗示
// "这道题如果用窗口函数能做吗?"
// "我们之前聊过的XX技术,这里能用上吗?"
 
// 3级 - 给反例
// "假设我们用最朴素的方法(GROUP BY),会有什么问题?"
// "如果数据量很大,你这个方案能跑得动吗?"
 
// 4级 - 给思路
// "我们这样想:如果给每天打一个序号,连续登录的人会有什么特征?"
// "用ROW_NUMBER减DATE,会得到什么?"
 
// 5级 - 给代码骨架(慎用)
// "咱们这样写:先开个CTE,里面ROW_NUMBER按..."
// 这一级别本质是放弃考察,转为知识传授

引导时的「软规则」

除了五级阶梯,还有几条软规则,对评估准确性很重要:

规则一:每级引导之间要等15秒。给候选人时间消化,不要连续引导。我面过太多新人面试官,候选人停顿3秒就追加提示,结果候选人的思路完全被牵着走,没法评估。

规则二:候选人主动求助是负向信号,要警惕。候选人主动说「能不能给点提示」,第一次给但记下次数。3次以上的求助,意味着这道题不该让他通过,无论最终代码是否正确。

规则三:不要纠结语法,要看逻辑。候选人忘了一个函数名、写错了一个引号,这都不重要。重点是逻辑对不对、复杂度怎么样、边界考虑了没。把语法错放过去,看真实能力。

一个真实场景:五级引导实战

我面过一个候选人,给的题目是「连续登录3天的用户」。过程:

0级(让他独立思考):他想了2分钟,开始写代码——用GROUP BY+COUNT,思路错了。

3级(给反例):我说「如果一个用户在3月1日、3月3日、3月5日各登录一次,他算连续登录3天吗?」候选人立刻反应过来:「不算,那GROUP BY不对,得知道是不是连续日期」。这一步他自己反推到了正确方向。

2级(给暗示):我说「窗口函数你熟吗?」他眼睛一亮,开始写ROW_NUMBER。

0级(让他独立完成):他自己想出了「ROW_NUMBER按user_id分组,按date排序,然后date-ROW_NUMBER相同的就是连续」。

最终代码他写出来了。评估:用了2级和3级引导,思路核心是他自己想出的,所以给⭐⭐。这种打分方式既不冤枉他(毕竟有自己的思考),也不送分(关键引导级别记录在案)。

不同岗位的「容错引导级别」

岗位级别可接受的最大引导级别原因
实习/应届4级(给思路)看可塑性,有思路就行
1-3年初级3级(给反例)能反推就有基本思维
3-5年中级2级(给暗示)应该能自己想到方向
5年+高级1级(问场景)应该是独立解决问题的
架构师0级(不引导)面的就是独立判断力

面试高频追问

追问一:候选人完全卡住,是换题还是继续引导?

看是不是「能力盲区」还是「具体题不熟」。如果换一道同类题他能做,那只是这道题不熟,可以换;如果连基础概念都不会,那是能力问题,没必要继续。判断方法:换一道更基础的题,5分钟内能否做出。能就接着面,不能就考察其他维度。

追问二:引导多了候选人写出来了,给不给过?

看引导级别和岗位级别的匹配。引导到4级才写出来的,对实习生可以过、对中级以上不行。我评估时会把引导级别明确写在面试反馈里:「该候选人写出XX题但需要给到3级引导」,让后续面试官知道真实水平,不会被结果迷惑。

追问三:候选人写出代码但有bug,怎么处理?

先让他自己跑一遍。「来,咱们用一个测试用例走一遍你的代码」。能自己发现bug→加分;发现不了bug→扣分;强词夺理说「这个case不会出现」→减分严重。能不能自己发现自己代码的问题,是工程师素养的核心指标。

实战踩坑:太热情的引导毁了一个评估

我做面试官第一年,面过一个候选人,他写代码卡住了,我特别想帮他过——一连给了3次提示,几乎把答案告诉他了。最后他写出来了,我给了通过。

二面同事问了一道难度差不多的题,候选人完全卡住,二面给了不通过反馈:「一面的题应该独立完成不了,建议复评」。我复盘时发现自己确实引导太多,候选人的真实水平在我那里被高估了一档。

教训:引导是为了「让候选人发挥真实水平」,不是「让候选人通过」。新人面试官的常见误区是把候选人的成功当作自己的成绩,结果引导过度。从那以后我面试一定记录引导级别,最终评估按最高引导级别打分,不再「热情误事」。

候选人侧反向使用指南

如果你是求职者:

① 不要硬撑。卡住时主动说「我先讲讲思路」,把口头思路讲清楚再动手。这一招本身就是1级引导,但比硬撑要好。

② 善用伪代码。语法记不清就直接写伪代码或注释,把逻辑讲清楚。优秀的面试官会更看重逻辑而不是语法。

③ 不会就坦诚。「这道题我没思路,能换一道吗?」比死撑20分钟写一堆错代码强10倍。坦诚也是能力的一部分。

总结

引导分5级:问场景→给暗示→给反例→给思路→给代码骨架。每升一级评估等级降一档,最终按最高引导级别打分。新人面试官最大的误区是引导过度——把候选人成功当自己成绩。引导是测试不是慈善。能精准给到合适级别引导的面试官,评估准确率会高很多。

下一篇聊一个面试官最尴尬的瞬间:候选人提到一个我不熟的技术——怎么不丢面子又判断真假?

你做面试官时,最常给到几级引导?评论区聊聊~

关注「Wood聊大数据」| 9年大数据老兵,聊技术、聊职场、聊成长

刷题进度保存在当前浏览器