前两天一个学弟找我,说他投了十几家AI公司的算法岗,全军覆没。
他简历上写的是「熟悉Transformer架构」、「掌握PyTorch」、「参与过NLP相关项目」,看起来没什么毛病,但面试官一开口就问,「你训练过一个模型从零到上线吗?」
他说没有。
面试官又问,「那你遇到过训练loss不下降的情况吗?怎么排查的?」
他也说没有。
面试结束了。
他给我发消息的时候特别沮丧,说「我明明都学了,为什么面试官问的跟我准备的不一样?」
我看完以后想了想,这个问题其实挺普遍的。你学了Transformer的原理,刷了两百道LeetCode,背了八股文,但面试官问的是你真的做过什么、真的踩过什么坑。这个落差,就是大部分人在AI面试里栽的地方。
咱先说一个很多人没意识到的事,AI面试跟传统互联网面试,画风完全不一样。
传统面试问你「排序算法的时间复杂度是什么」、「TCP三次握手的过程」,这些东西有标准答案,你背了就能答。但AI面试问的是「你这个模型为什么用Adam不用SGD」、「loss曲线在epoch 50突然抖了一下你怎么处理」、「你评估指标为什么用F1不用accuracy」。这些问题没有标准答案,它们在问你的判断。
你想想看,AI这个行业本身就没什么标准答案。大模型怎么调、数据怎么洗、效果怎么评估,每个团队的做法都不一样。面试官不是在考你知不知道某个知识点,是在看你在真实场景里能不能做决策。
所以你准备AI面试的方向,应该从「我要学会多少知识点」切换到「我要做过多少真实的事」。
我自己面过几家AI公司,也帮不少学弟学妹看过简历和模拟面试,踩过的坑和找到的路整理出来,可能对你也有用。
先说简历。
很多人的简历上写的是「熟悉XXX」、「掌握XXX」、「了解XXX」,这三个词在面试官眼里等于「没真的用过」。你写「熟悉Transformer」,面试官下一个问题就是「那你说说Transformer跟RNN的区别」,然后你开始背论文里的句子,面试官一听就知道你没亲手拼过一个Transformer。
简历上能让人眼前一亮的东西只有两类,一类是你亲手做过的项目,从数据准备到模型训练到效果评估,你一个人跑通了整个链路。一类是你踩过的坑,loss不下降你怎么排查的,数据有噪声你怎么处理的,推理速度太慢你怎么优化的。这两类东西比任何「熟悉XXX」都管用。
有个学弟的简历,原来写「熟悉PyTorch,参与NLP项目」。我帮他改成「独立完成一个文本分类项目,从数据清洗到模型上线,用BERT微调,F1从0.72提升到0.89,排查过tokenizer错误导致训练崩溃的问题」。他后来拿了三个offer。
区别在哪?前者告诉面试官你学过什么,后者告诉面试官你做过什么,并且你真的搞清楚过哪里会出问题。
再说面试里的手撕代码。
算法岗面试一定会让你手撕代码,但AI面试的手撕和传统互联网不一样。传统面试考的是排序、动态规划、图论这些经典题。AI面试考的是「写一个简单的Transformer block」、「实现一个attention函数」、「写一个data loader处理脏数据」。考的是你能不能把论文里的东西落地成代码。
如果你只会LeetCode那种题,面试官让你写个multi-head attention,你可能连reshape的维度都搞不清楚。所以你准备的代码题,应该从LeetCode模式切换到「论文→代码」模式。拿一篇论文,试着把核心模块从零写出来,不用任何框架,纯numpy就行。写不出来就说明你还没真的理解那篇论文。
还有一个很多人忽略的,就是面试官在问「你遇到过什么问题」的时候,他不是在找标准答案,他在找你思考的方式。
比如你被问到「模型效果不好你怎么排查」,你如果回答「我会调整学习率、换优化器、增加数据量」,面试官会觉得你只是在列举可能的操作,没有真正解决问题的思路。但如果你说,「我碰到过一次F1一直卡在0.6不上去了,我先看loss曲线发现训练集loss在下降但验证集loss在上升,判断是过拟合,然后我查了数据发现训练集和验证集的分布不一致,修正了数据划分以后F1涨到了0.85」,面试官一听就知道这个人真的做过、真的想过、真的解决过。
面试官想要的不是你背了多少知识点,而是你能不能在混乱的真实场景里找到问题、分析问题、解决问题。
再一个,别只盯着算法岗。
AI公司招人不只有算法岗。产品经理、数据工程师、AI运营、测试、前端后端,这些岗位都在招,而且有些岗位门槛比算法岗低得多,竞争也小得多。算法岗现在是卷中之卷,一个岗位几百人抢,很多人简历看起来都差不多,面试官根本分不出谁更强。
但如果你去投AI产品岗,你懂一点技术又能说清楚用户需求,面试官会觉得你是个不错的面试者。你懂模型原理但不执着于写算法,你关注的是这个东西怎么帮用户解决问题,这个视角在AI公司特别缺。
我有个学妹,学的是传播学,简历上没有任何算法相关的东西,但她做过一个AI写作助手的产品分析报告,拆解了竞品的功能设计、用户反馈和商业模式。她面AI产品岗的时候,面试官说,「你比那些只会写代码的人更懂产品。」她拿了offer。
所以如果你不是算法方向的人,别觉得AI公司没你的位置。算法是引擎,但引擎得装在车上才能跑,车还需要方向盘、座椅、仪表盘。你可能是坐方向盘的那个人。
末了一点,面试之前用AI模拟面试。
这个听起来有点讽刺,但真的好用。你把豆包或者Kimi打开,告诉它「你现在是一个AI公司算法岗的面试官,请你按照真实面试流程问我问题」,它真的能给你出很不错的模拟题。而且你可以反复练,练到那种紧张感消退为止。
但有一个坑,AI模拟面试只能帮你练表达和节奏,不能帮你练判断力。面试官问「loss不下降怎么排查」,AI给你一个标准的排查步骤,你背下来去面试,面试官一听就知道是背的。所以你练模拟面试的时候,要用你自己做过的项目来回答,把你的真实经历套进去,而不是背AI给你的标准答案。
说到底,AI面试在考的东西只有一个,你能不能在不确定的场景里做出判断。
Transformer的原理你可以查论文,PyTorch的用法你可以看文档,loss曲线的解读你可以找博客。但遇到一个你自己训练出来的模型效果不好的时候,你该先做什么后做什么,该怀疑数据还是怀疑模型还是怀疑超参数,这个判断只有你亲手做过才能有。
所以你准备AI面试的方式,就是去做一个完整的项目。从数据开始,自己洗,自己标注,自己训练,自己评估,自己调优,自己上线。做完这个项目以后,你简历上有真东西了,面试里有真故事了,你对自己的能力也有了真实的判断。
简历上删掉所有「熟悉」、「掌握」、「了解」,换成你亲手做过的事和你踩过的坑。面试的时候别背标准答案,用你自己的真实经历来回答。如果你不是算法方向,去找AI公司里那个更适合你的位置,别硬挤算法岗。
做到这几件事,比刷两百道LeetCode有用。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧~
夜雨聆风