昨天和一个前同事聊天,他郁闷地告诉我,自己也是8年的老开发了,可刚刚一场大厂面试中挂掉了。
很多程序员写的代码都不差的,甚至带新人、团队都没问题。可一旦自己去面试的时候就是说不清那些理论。
有些朋友误以为只要技术好,面试也不会差到哪里去,其实这是两码事。
在实际工作中,有更多的时间去可以去查相关文档和资料,慢慢的调试和思考,解决的是具体和熟悉的问题。
而在面试场景中,时间很紧,没有外部的资源可以用,全靠记忆,可能还会遇到不熟悉的问题。
所以在要是不提前看点题目就去面试的话,会非常棘手。
我认识一位在开源社区有点影响力的程序员,他写的库被很多人使用,技术实力毋庸置疑的。
可他在面试的时候却因为在合并两个有序链表时使用了多余的空间而被拒绝了。
事实上,他知道怎么实现,只是在面试那种氛围中,没能理清思路。
1. 表达和沟通问题
很多程序员,他们心里知道答案,但却是没有办法用言语清晰地表达出来,包括我也是这样。
就像你知道怎么骑自行车,但是要你讲平衡的原理,就不知道该从哪里开始说了。
面试官考察的不仅是技术能力,也在评估你未来和团队沟通的成本。
2. 知识广度问题
你在现在的工作中表现的很好,可工作上用到的大部分技术栈都是固定的,然而在面试中有可能会遇到更加广泛的知识。
比如,你平时主要写业务代码,可面试时,却可能会被问到底层原理、算法复杂度、系统设计等等这些问题。
这不是你的能力不足,只是知识储备的方向不太一样。
3. 缺乏面试技巧
面试本身也是一种技能,需要学习、练习和锻炼。
比如:怎么理解面试官的意图?怎么样组织你的回答结构?遇到不会的问题时该如何应对?怎么展示自己的项目经验?这些都可以通过学习来弥补面试中的不足。
该怎么改善面试的表现呢?
如果你觉得自己也是属于那种代码强,面试弱的类型,这里有几个实用建议:
1.准备常见题型 刷题不是目的,但重复的准备是很重要的。不一定要死记硬背硬背,能熟悉常见题型的解题思路就很好了。每天花点时间练习,保持那个感觉。
2.建立知识体系 花点时间梳理以下自己的知识体系,找出比较薄弱的地方。不需要样样都精通,但至少要对常见领域有所了解。
3.练习沟通能力 写代码的时后,可以刻意的练习边写边解释。也可以尝试写技术博客,或者和同事多交流,主动发言,这些都能提升表达能力。
5.把面试当交流 面试是双向选择的,不只是公司在面试你,你也在面试公司。把面试官当作未来的同事,把面试当作技术交流,心态就会轻松很多。
6.面试官想要的是什么?
面试官通常不只是要你的正确答案,更关注你的思维过程 和解决问题的能力。
当遇到不会的问题时,坦诚展示你的思考过程,比胡乱猜测要好很多。面试官想看到的是你是怎么样拆解复杂问题、怎么样找到解决方案的。
写在最后
技术能力和面试表现确实是相关的,但不是同一件事。而且面试能力是可以学习和提高的。
很多优秀的程序员都不擅长在面试的情况下展示自己。就像Linux之父的Linus Torvalds曾经说过:"我不喜欢面试程序员,因为面试更像是在测试一个人是否擅长面试。"
如果你是一位代码写得很好但面试不怎么样的程序员,请不要灰心。这并不代表你技术不行,只是意味着你需要额外准备和练习面试技巧。
如果你是一名面试官,不妨给那些紧张但技术扎实的候选人多一些机会; 如果你是一名求职者,希望这篇文章能帮你更好地展示自己的真实实力。
毕竟,面试只是入职的门槛,真正决定能走多远的,还是你写代码的能力和解决问题的实力。