面试认知
技术面到底在考什么:三类考点的及格线与加分线
算法、系统设计、项目深挖,三类的评分离线完全不同。先搞清面试官在判断什么,再决定时间怎么分配——多数人失败不是不够努力,是把时间花在了不加分的地方。
面试官只回答一个问题:把这件事交给你,靠不靠谱
技术面通常 1 到 4 轮,越往后越综合。表面上看每轮考的东西不同,实际上所有轮次都在为同一个判断收集证据:在信息不完整、时间有压力的情况下,这个人能不能把活干成。
这句话听着抽象,落到评分上非常具体。面试官不会给你打「知识量」的分,他会记录三件事:你的思路是否可跟随、你的结论是否有依据、你对自己的边界是否诚实。三件事里任何一件出问题,都会被记成风险。
- 思路可跟随:你说的每一步,别人能复述出来。反例是直接抛结论,中间推导全在脑子里。
- 结论有依据:选型、参数、指标都有来源。反例是「业内都这么做」「当时就这么定的」。
- 边界诚实:不会的就说不会,并给出你的推断路径。反例是硬编一个答案,被追问两层就露馅。
技术面最后看的不是「你记住了多少知识」,而是在信息不完整、有压力的情况下,你能不能保持清晰的逻辑和良好的判断。
算法题:及格线是「思路可见」,不是「代码跑通」
很多人把算法题理解成编程竞赛,于是把时间全花在刷题量上。但面试场景里,代码只是思路的载体——面试官真正在观察的是:你有没有先确认边界,能不能从暴力解走到优化解,写完之后会不会自己验。
一道中等题,思路讲清楚但代码有个边界没处理,通常比「沉默五分钟然后写出完美代码」评价更高。因为前者展示了可协作性,后者只展示了你一个人的状态。
- 精刷 150–200 题,按专题突破(数组、字符串、树、图、DP、二分),不要按题号顺序盲刷。
- 每个专题只留 3–5 道「能讲清为什么这样做」的代表题,其余题目看思路即可。
- 准备一份可手写的模板:二分边界、树的遍历、并查集、拓扑排序。手写熟到不用想语法。
- 第一步:复述与确认边界把题目用自己的话讲一遍,确认输入范围、是否有序、是否允许重复、返回什么。这一步花 30 秒,能挡掉后面 80% 的返工。
- 第二步:给暴力解并说明复杂度先说最直接的解法与 O(n²) 的来源,让面试官知道你有基线,也知道你知道它慢在哪。
- 第三步:给出优化方向并选一个说清楚你要用哈希/双指针/单调栈中的哪一个,为什么它能把复杂度降到多少。选定后再写,不要边写边换思路。
- 第四步:写完主动走查用一个小用例、一个边界用例(空、单元素、全相同)手动跑一遍。主动发现问题的评价远高于被指出来。
系统设计:分水岭在「澄清需求」,不在画图
中初级和中高级的分水岭往往就在这里。同一道题,初级候选人上来就画架构图,中高级候选人先问五个问题。这不是流程表演,而是因为不问清楚就设计,方案一定是错的。
算法岗的系统设计通常不是设计一个电商平台,而是设计一条训练/推理/检索链路:数据从哪来、特征怎么存、模型多大、QPS 多少、延迟预算多少、失败怎么降级。这些问题不确认,架构图就是装饰。
- 先确认量级:用户数、QPS、数据规模、单条请求的延迟预算。
- 再确认约束:能不能离线预计算、是否允许最终一致、成本上限是多少。
- 然后划分模块:离线 / 在线、存储 / 计算、同步 / 异步,说清每一块的职责边界。
- 最后讲取舍:为什么用这个方案,另一个方案在什么条件下更合适。
先说「我会先确认三件事」,比直接画一张漂亮的架构图更能拿到分——前者展示判断,后者只展示记忆。
项目深挖:几乎是算法岗的必考题
面试官会从简历里挑一个项目,从背景、方案、细节、难点、复盘五个层面连续追问。目的只有一个:验证你是不是真的做过。做过的人细节是长出来的,没做过的人细节是背出来的,追问两层就会分叉。
所以准备项目不是写一份漂亮的介绍,而是把每个技术名词、每个数字都往下推三层:为什么用它、当时还考虑了什么、出了什么问题、怎么发现的。
这部分本手册有单独一篇拆解(《项目深挖:五层结构下的追问与逐字稿》),这里只需要记住一个判断:如果一个细节你说不出「当时为什么这么定」,那它就是你面试时的风险点。
四轮面试,考点在悄悄变化
同样的项目,一面和二面问法完全不同。一面偏事实核对,二面偏判断,三面偏取舍与边界,HR 面偏动机与稳定性。用一面的准备方式去打三面,会出现「答得都对,但显得没有判断力」。
- 一面(基础面):以事实为主。这段代码你写的吗?指标怎么算的?为什么这个参数取 0.1?
- 二面(能力面):以判断为主。如果数据量涨十倍会怎样?换个方案你会怎么选?
- 三面(交叉/主管面):以取舍与边界为主。资源只够做一件事你先做哪个?这个方案的失败模式是什么?
- HR 面:动机、稳定性、薪资预期。技术细节不再是重点,别在这里继续背架构。
时间怎么分配:按剩余天数倒推
准备时间永远不够,所以配比比总量更重要。一个可用的经验值:项目深挖占四成,算法占三成,原理与八股占两成,表达演练占一成。
如果你的项目本身薄弱(实习短、只做过课程项目),把项目占比提到五成——因为项目是唯一能证明「你能干活」的材料,八股背得再熟也替代不了。
- 剩余 7 天以上:项目逐字稿 + 专题刷题 + 原理三层,按四三二分配。
- 剩余 3–5 天:只做两件事——把最可能被问的两个项目讲到能扛五层追问,刷目标公司高频题。
- 剩余 1 天:不学新东西。重读简历,把每个数字和名词的来源在脑子里过一遍。
这一篇的要点
- 面试官判断的是「靠不靠谱」,不是「知道多少」:思路可跟随、结论有依据、边界诚实。
- 算法题的及格线是思路可见,不是代码完美;先确认边界再动手。
- 系统设计先问量级与约束,再画图;不问就设计,方案一定偏。
- 项目的每个技术名词和数字,都要能往下推三层,否则就是风险点。
- 配比建议:项目四成、算法三成、原理两成、表达一成;项目薄弱就把项目提到五成。
把这些方法用在自己的简历上
上传简历后,系统会按这份材料的完整项目经历生成七个阶段的追问,每道题都挂靠简历原文。
相关面试题
- Adam 和 SGD 的区别是什么?为什么很多视觉任务最终还用 SGD + momentum,而 NLP/大模型训练几乎都用 AdamW?
- 请解释偏差-方差权衡。如果一个模型训练误差很低、测试误差很高,你会怎么处理?
- GBDT 和 XGBoost 的关系是什么?XGBoost 相比 GBDT 做了哪些工程与数学上的改进?
- L1 和 L2 正则的区别是什么?为什么 L1 能产生稀疏解?从几何角度解释一下。
- 请说明 BatchNorm 和 LayerNorm 的计算方式有什么不同?在同一个 batch 里,BN 的统计量是怎么算出来的、推理时又用的是什么?
- 手写版:请推导一下自注意力的计算过程,并说明为什么要除以 sqrt(d_k)?如果不除会出什么问题?
接着读
- 项目深挖:五层结构下的追问与逐字稿约 11 分钟
- 从「背过」到「能选型」:原理的三层准备法约 10 分钟
- 现场表达:结构化开场、算法题节奏与卡住时的三种自救约 9 分钟