候选人在白板上写代码卡住了——怎么引导而不变成送分?
本文目录
先说结论
引导不是慈善,是测试。好的引导能继续考察候选人,差的引导直接把题答案告诉他。
五级引导阶梯:从问场景 → 给暗示 → 给反例 → 给思路 → 给代码骨架。每升一级,候选人通过的难度降一档,但你心里记好他用了几级。
最终评估按「最高引导级别」打分。不靠引导写出来的⭐⭐⭐,靠四级引导才写出来的⭐。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
白板写代码(或者现在更多是共享屏幕写代码)是大数据面试里最能区分人的环节。但也是新人面试官最容易翻车的环节——候选人卡住了,你不引导他完全写不出,引导多了等于送分,最后没法评估。我自己摸索了几年才搞清楚一个原则:引导的目的是「测能力」不是「帮通过」,给提示也要给得有水平。这一篇分享我自己的「五级引导阶梯」。
先理解候选人为什么卡住
候选人在白板上卡住,原因有几种,处理方式不一样:
| 卡住原因 | 信号 | 面试官应对 |
|---|---|---|
| 紧张型 | 知道思路但写不出代码,手抖 | 给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年大数据老兵,聊技术、聊职场、聊成长