技术面被问不会的题,这三种回答都比沉默强
沉默是最差的选项。给三种可用的回答方式,让不会也能拿到部分分。
你说“不会”之后的那句话,才是这题的得分点
“Kafka 的 ISR 收缩之后,怎么保证消息不丢?”
你听懂了每一个字,但脑子里就是没有这条链路。屏幕那头在等你。
这时候大部分人会在三个选项里选一个:憋着不说话、硬凑一段往外蹦、或者直接说“这个我不会”。
选哪个其实没那么要紧。要紧的是紧跟着的下一句话。
面试官的评分表上,“技术掌握”和“分析过程”通常是分开的两栏。你答不上来,第一栏确实丢了。第二栏还是空的,它在等你填。
沉默的问题就在这儿:它把两栏一起交了白卷。你什么都没说,对面就什么都记不下来。
下面三种答法,对应三种不同的“不会”。先分清是哪一种,再决定用哪一种,别一套话术走天下。
先分清这道题是超纲,还是你漏背了
同样是答不上来,性质差得很远。
- 超纲型:明显超出应届生的接触范围,线上调优、集群运维、公司内部的中间件实践。这类你没做过很正常,面试官问它多半是想看天花板在哪。
- 遗忘型:你背过,临场想不起来了。原理还在,细节掉了。
- 开放型:系统设计、“你觉得这个方案有什么问题”。这类压根不存在标准答案,说“不会”反而最亏。
分辨的方法只有一句话:问问自己手里有没有一个能拽住的【抓手】。
抓手是什么?一个相关的概念、一段做过的相似场景、一个你确定成立的原理。有抓手就往下推,或者拿它来类比。彻底没有,才用第三种答法。
三十秒之内做完这个判断,然后开口。判断本身也可以说出来:“这个我没有直接做过,我按原理推一下试试。”
你不用证明自己都会,你要证明的是不会的时候还能往下干
第一种:把推理过程摊开,答错也拿分
适合遗忘型和开放型。三步走。
- 复述条件:把题目里的关键约束重说一遍。这一步替你买了五秒钟,也让面试官确认你没听岔。
- 说确定的部分:先把你完全确定的结论摆出来,哪怕它很基础。
- 从确定推向未知:顺着已知往前走,走到哪儿卡住就明说卡在哪儿。
比如被问“MySQL 索引为什么用 B+ 树,不用红黑树”,你只记得个大概。可以这么说:
我先说我能确定的部分。B+ 树的非叶子节点只存键不存数据,一个节点能放下更多的键,同样的数据量树会更矮。数据库每往下走一层就是一次磁盘 IO,树矮就意味着 IO 次数少。红黑树是二叉的,同样的数据量深度会大很多,IO 上吃亏。除了 IO 这一条,我不太确定还有没有别的原因,我能想到的主要是这个。
最后那句“不确定还有没有别的”不是示弱,是给面试官留了一个接话的入口。
不少面试官听到这儿会顺手补一句“还有叶子节点的链表,范围查询用得上”。这道题就从考试变成了交流,你的紧张感也跟着掉一半。
推的时候有个细节:把“我猜”两个字说出口。同样一句话,带上“我猜”是思路,不带就是断言。断言错了要扣分,思路错了不扣。
第二种:拿你熟的东西去类比
适合超纲型,前提是你有相邻经验。
核心动作是明说这是类比,别把它包装成答案。开头就交代清楚“我没做过,但我遇到过类似的”,后面说得再多都不会被当成吹牛。
比如被问“你们线上是怎么做限流的”,你根本没有线上环境:
线上限流我确实没做过。不过我在一个课程项目里碰到过类似的场景:选课接口在开放的那两三分钟里被打爆,数据库连接直接被占满。我当时是在网关那一层按学号做了固定窗口计数,一分钟超过一定次数就直接拒掉。我知道固定窗口在两个窗口交界的地方会放进来接近两倍的流量,如果重做我会换成滑动窗口,或者用令牌桶让它平滑一点。真实的线上限流应该还要考虑多个实例之间怎么共享计数,这块我只看过文章,没有落地过。
这段话让面试官一次拿到三个信息:你懂原理、你真动过手、你知道边界在哪。
类比不是遮丑,是把你手里那点真东西换个场景交出去
比“我们做了限流”这种含糊的自我包装强得多,也比一句“不会”多出整整一栏分。
类比的边界必须自己划
类比一定要以“我没做过真实场景”开头,以“这块我没落地过”收尾。中间讲得再具体都安全。一旦省掉这两头,同样的内容就成了夸大,被追问一句“线上 QPS 多少”就露馅。
第三种:老实说不会,但要加一句
彻底没抓手的时候用这个。承认本身零成本,裸着承认才有成本。
承认完,从下面三句里挑一句补上。
- 划边界:告诉他你熟的是相邻的什么,把话头拉回你的主场。
- 给路径:说清你打算怎么补、大概要多久。具体到文档名、书名和章节,比任何表决心的话都管用。
- 反问背景:问他这个问题是在什么场景下遇到的。有时候补上场景,你反而能想到点什么。
一段可以直接照抄的完整版:
这个我确实不会,之前没接触过 Flink。我熟的是离线那一套,Hive 加 Spark 我写过完整的任务链路。如果对你判断有帮助,我可以讲一下我在离线里是怎么处理数据倾斜的;或者你直接说一下流式这边的做法,我记下来回去补,下次能答上。
注意这段里没有任何一句在道歉。“不好意思我太菜了”这种话一句都别说,它不加分,只会把整场气氛往下拽。
如果你连相邻领域都没有,最短的版本也比沉默强:
这块我没有接触过,硬说会是编的。我想问一下这个问题在你们这边一般是什么场景下会遇到?我回去按这个场景补一遍。
说完就停,不要继续解释为什么没学过。解释越长,越像在找补。
硬编的代价,比你想的贵得多
编答案看着是止损,实际上是加杠杆。
编的东西面试官一句追问就能戳穿,而且他戳穿之后不会换题。他会顺着这个点接着往下问,把你剩下的二十分钟全花在你最弱的那块地上。
一个很典型的翻车链条:你说“Redis 是单线程的,所以不会有并发问题”,他问“那 6.0 引入的多线程是做什么的”,你答不上,他再问“单线程指的是哪一部分”,你彻底乱了。本来只丢一道题,现在丢的是整段印象。
评分表上还有一条更麻烦的东西:【表述与事实不符】。这一条比“不了解”重得多,它质疑的已经是可信度。
带过新人的人都清楚,不懂装懂的代价是上线之后整个组替他兜。所以这一栏他们看得很重。
编对了也接不住第二问
就算你蒙对了结论,面试官问“你们当时为什么这么选”,你依然答不上来。硬编能撑住的只有一个回合,而技术面从来不止一个回合。
你心里最虚的那三个点
技术面不是筛“什么都会的人”,应届生里没有这种人。它筛的是撞上不会的东西时,你还能不能往前走一步。
三种答法不用背,记住顺序就行:有抓手就推,有相邻经验就类比,都没有就承认加一句。
今晚做一件很具体的事,二十分钟。
打开你的简历,挑三个你写上去了、心里却最虚的技术点。对着每一个写一段“说不会加一句”的话,写完念出来。念着别扭的地方就是你真正的边界,标出来,明天先补那儿。
下一场面试里,你大概率会用上其中一段。