为什么现在的程序员都不喜欢面试做题?
最近几年,程序员面试中的做题环节越来越不受欢迎。很多人都在问:为什么会这样?其实原因很简单,现在的面试做题方式和实际工作需求出现了严重脱节。
一、面试内容和实际工作差距太大
2015年发生过一个著名事件。Homebrew的作者Max Howell去谷歌面试,因为没能在白板上写出“翻转二叉树”的算法而被拒绝。这个事件在当时引起了很大讨论,直到现在仍然是大家热议的话题。
想想我们平时的工作场景:
但算法面试要求的是:
在白板上手写代码
没有任何工具帮助
时间压力很大
还要边写边解释思路
这种反差让很多有经验的开发者感到困惑。有位技术负责人说得很好:“工作中明明调用现成api就能解决的问题,面试却非要手写底层算法,这就像考驾照非要考生背发动机原理一样。”
更让人无奈的是,很多擅长做题的人在实际工作中表现并不好。有些能熟练写出复杂算法的候选人,连基本的Git操作都不熟悉。而一些笔试成绩一般的人,反而能快速解决实际工作中的技术问题。
二、刷题带来的问题
为了应对算法面试,一个特殊的“刷题”生态逐渐形成,这引发了不少问题:
时间投入太大
准备面试的程序员通常要花几百个小时刷题,背诵各种解题模板。但工作中真正用到这些知识的机会很少。有位后端工程师分享,他为了面试刷了400多道题,工作两年后只用到过其中一道题的思路。
筛选机制不合理
过度强调做题能力,可能导致企业错过这两类人才:
有丰富项目经验,但很久没接触算法的高级工程师
自学成才,实践能力强但缺乏系统算法训练的开发者
相反,一些擅长应试但实际能力不足的人反而更容易通过面试。
能力评估失真
有些人通过短期突击刷题,面试时表现很好,但入职后实际工作能力跟不上。这种情况不仅让企业付出代价,也让认真工作的开发者对做题面试更加反感。
三、AI带来的改变
人工智能的发展让传统算法面试面临更大挑战。现在已经有AI工具能够识别面试题目并实时生成答案,有些甚至能帮助用户通过大公司的技术面试。
有一个数据很能说明问题:某款面试辅助工具在36天内就实现了百万美元的年收入预测,这从侧面反映了大家对算法面试的态度。
在AI时代,考察“能不能手写算法”已经意义不大。更重要的是评估候选人:
如何分析问题
如何设计解决方案
如何与AI协作完成任务
如何保证代码质量
这些能力都无法通过传统的白板编程来考察。
四、面试环境的不公平
算法面试的高压环境本身也存在问题。在面试官的注视下手写代码,很容易让人紧张,导致实际能力强的人发挥失常。
这种面试方式对某些群体尤其不友好:
转行的开发者可能缺乏系统的算法训练
有阅读障碍的人难以快速理解题目
长期做业务开发的工程师可能忘记一些算法细节
这与行业提倡的多元化理念相违背,也让更多人开始反思算法面试的合理性。
五、更好的面试方式
程序员反感的不是技术考核,而是脱离实际的考核方式。现在很多公司已经开始尝试新的面试方法:
项目展示
让候选人展示做过的真实项目,讲解其中的技术选择和解决方案。这种方式能更好地考察实际工作经验。
代码审查
提供一段真实的代码,让候选人进行审查和优化。这能看出一个人的代码品味和工程能力。
系统设计
讨论如何设计一个系统或功能,考察架构思维和问题分析能力。
结对编程
和面试官一起解决一个实际问题,模拟真实的工作场景。
这些方法的好处:
更接近实际工作
能全面评估能力
减少死记硬背
降低心理压力
给面试者的建议:
如果你正在准备面试:
还是要适当准备算法题,毕竟很多公司还在用
重点理解算法思想,而不是死记硬背
多准备项目经验的分享
练习在压力下保持冷静
给企业的建议:
如果你在招聘技术人员:
根据岗位需求设计面试内容
结合多种考核方式
提供更接近实际工作的面试环境
关注候选人的综合能力
总结
面试方式的改变需要时间和实践。好的技术面试应该既能评估候选人的能力,又能让候选人展示真实水平。随着行业的发展,相信会有越来越多公司找到更合理的面试方法。
对于开发者来说,重要的是持续学习,提升解决实际问题的能力。对于企业来说,需要不断优化招聘流程,找到真正合适的人才。这样才能实现双赢。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!