前两天一个学弟找我,说他投了十几家 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 有用。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧 ~
