前情提要 >>>
本文不是卖课,也不会兜售所谓面试技巧,更不会制造焦虑。
就是聊一个可能残酷的事实。
建议带着同理心一起服用。
一、当我坐在面试官这一边
最近公司要招两个Java高级开发,我负责技术一面。
简历很多,候选人更多,每天面试排的很满。
有不少技术背景很强的人,让我印象比较深刻的有三位。
第一位候选人,简历写得非常漂亮:某公司技术总监,带过50多人的团队,公司濒临倒闭,不得不出来找工作。我问他Spring Cloud中Nacos的配置中心是如何实现动态配置推送的,他想了很久,说:"就是...监听配置变化...然后推送...具体实现细节我记得不是很清楚了..."
第二位之前是公司架构师,因为裁员出来的。简历上写着"负责千万级用户系统架构设计"、"深度优化分布式系统性能"。我问他OpenFeign的超时重试机制,以及如何避免服务雪崩,他支支吾吾半天:"超时的话...可以配置...重试...Hystrix可以熔断..." 然后就卡住了。
还有一位40多岁的前辈。这两年却一直在做短期项目,找不到稳定工作。我问他分布式事务中,如何使用MQ实现最终一致性,他肉眼可见的紧张起来:"先发送消息...然后...如果失败了...重试...但是具体怎么保证一致性..." 说着说着声音越来越小。
看着这些技术前辈紧张的样子,我突然意识到:他们可能很久没有正儿八经地面试了。
而且面试这件事,真的和实际工作能力是两码事。
同时我也在想,如果是我坐在对面,我能立马回答得上来吗?
二、为什么会这样
面试了这么多人,我发现了一个残酷的真相:
写代码厉害和面试表现好,完全是两码事。
1. 工作中用不到的东西,确实会忘
在实际工作时写代码,IDE的自动提示非常全面,出了问题也能直接Google,甚至现在都是直接问GPT。
谁会去背IOC的七八种实现方式?谁会去记JVM调优的32个参数?
校招生可能把HashMap的底层实现背的滚瓜烂熟。
但一位工作十年的老程序员,还能说的清楚吗?
说不清楚,代表他写不出好代码、做不出优秀的架构吗?
2. 压力环境下的大脑空白是正常的
面试就是一个高压环境。
平时我们查资料、看源码、写文档,都是在舒适的环境下完成的。
但面试官盯着你,高频的一问一答,大脑一片空白很正常。
可能就像考试的时候,明明会做的题目,突然就忘了,但出了考场立马就能想起来怎么做。
这其实就是一种典型的高压场景下的认知失常。
我自己也查阅了相关资料,发现心理学里甚至有个词,叫 choking under pressure ------压力下窒息。
哪怕本来是熟练掌握的知识点,在高压下也会忘记。
3. 理论知识和实践经验是两套体系
很多候选人在工作中积累了大量的实战经验,解决问题游刃有余。
但一旦进入面试场景,需要把经验提炼成概念、原理,再用清晰的语言表达出来,就会有些吃力。
这当然不是能力不足,只是知识表达方式的不同:实践靠的是操作和调试,面试则更强调逻辑化、结构化的表述。
三、被面试支配的痛苦
写到这里,我突然想起了自己上次面试的经历。
其实也就是几个月前,我心血来潮投了一些简历,去面试一家小公司的高级开发。
面试官问我:"Nacos 的配置中心是怎么实现动态配置推送的?讲一下具体原理?"
明明在项目里用过无数次的机制,也花费不少时间翻过源码。但在那一刻、在那个逼仄的小会议室里,大脑似乎宕机了。
长轮询、服务端变更通知、客户端 Listener 机制,这些细节一下子全都模糊掉了。
我支支吾吾地说:"就是...会监听配置变化...然后推送...具体细节我记得不是很清楚了......"
那一刻,我反而冒出一个念头:给我一台电脑,我能立刻用 Nacos 搭一个完整的配置中心和服务发现环境出来,也能立马在源码里定位到相关代码,但就在那个瞬间,一切都离我这么近、又那么远。
更可笑又可气的是,我平时还会经常总结、输出不同的技术文章,甚至在调试时把 Nacos 的源码翻过好多遍。
可是真到了那个场景下,脑子就像蓝屏了一样,就像是缓存里没命中的数据------明明存在,却怎么都取不出来。
你看,哪怕做个比喻都离不开技术,可技术人却倒在了技术理论上。
六、面试体系的问题?
现在坐在面试官这一边,我开始反思:
我们的面试方式是不是有问题?
为什么要逼着一个有十年实战经验的架构师,去背那些百度一下就能查到的八股文?
为什么不能给他一个实际的业务场景,让他设计一套解决方案?
为什么不能看看他写过的代码,聊聊他踩过的坑?
但现实是,很多时候面试并不是一场量身定制的能力评估,而是一种资源受限下的妥协:
- 候选人太多:一两个岗位可能上百份简历,面试官根本没法花大把时间和每个人深入探讨,只能用八股题做筛子。
- 流程需要标准化:HR 希望有一套统一的面试维度,能对比候选人之间的差异,而不是全靠面试官的感觉。于是,大家更容易选择题库式问题,因为方便打分。
- 成本与效率:让一个资深工程师花半天时间去看候选人的开源项目、复盘业务案例,这种方式理想但不现实。公司需要在有限时间内完成招人,八股文就成了最低成本的选择。
- 风险规避:如果招错了人,面试官要背锅。于是很多面试官会更依赖大家都在问的问题,而不是去冒险用更开放的评估方式。
所以,八股文虽然不能证明一个人的实战能力,但至少能证明一点:他有没有为这次面试投入时间和精力。
这对于企业来说,是一种廉价但可量化的筛选。
如果说学历是第一道门槛,那八股文也许就是第二道门槛。
四、一些走心的建议
不论是作为面试官,亦或是求职者,作为一个经历过无数次翻车经历的程序员,我想给那些技术很强但面试不行的朋友一些建议。
也许不一定对,但都是我的肺腑之言。
1. 承认面试就是一场考试
首先心态上要有转变。
不要觉得背八股文很low,面试就是考试,考试就要背书。
题目可能很憨憨,但有了题目,那就得按照标准答案来。
2. 把常见面试题整理成自己的语言
不要死记硬背网上的答案,用自己的话重新组织一遍。
最起码自己在心里能过几遍。
这样即使紧张,也能说出个大概。
3. 多练习表达,而不是只看资料
找朋友模拟面试,或者对着镜子练习。
现在也可以用豆包来尝试面试。
表达能力和技术能力一样,必须得刻意练习。
4. 提前模拟压力环境,别总在舒适区coding
很多人翻车是因为没适应高压环境。
平时写代码时悠哉悠哉,面试时一旦心跳加速就GG了。
提个小建议:设个闹钟,限时20分钟答题,或者让豆包以严格的面试官视角来面试你。
模拟这种高压环境,可能一开始脑子容易空白,兴许多练几次后就能稳住了。
5. 失败了别自责,就当是迭代
翻车了?复盘啊!记下没答上来的题,下次补上。
千万别一蹶不振。
我自己面砸过太多次,现在想想,都是宝贵的经验。
现在这么卷,坚持迭代,总会上线的。
五、面试不能代表一切,但却那么重要
说了这么多,我想说的是:
面试表现不好,不代表技术不行。但在这个过度内卷的当下,面试技巧太重要了。
那些技术很强但面试翻车的程序员,真的很可惜。
他们在实际工作中能解决很多复杂问题,但就是过不了面试这一关。
哪怕明知道八股文不能完全反映一个人的能力,但又不得不用这套标准来筛选人。
这就是现实,残酷但无解。
也许有一天,面试会变得更加注重实际能力。
但在那一天到来之前,我们还得学会适应这套游戏规则。
感慨颇多。
咬咬牙,练起来吧。
P.S. 那位前技术总监,最后我们还是录用了。虽然他八股文答得不好,但聊技术方案的时候,侃侃而谈、眼里有光。这样的人,大家都会惺惺相惜吧。