技术面看起来在考题目,实际在验三层:你能不能不急着动手、先把问题拆开;你能不能把想法写成能跑的东西;你能不能说清为什么这么做、代价是什么。三层里第三层最难伪装,也最容易拉开差距。
三层各验什么
| 层 | 面试官在看什么 | 典型环节 | 失分点 |
|---|---|---|---|
| 拆解 | 你问不问边界、有没有先给框架 | 开放题、场景题 | 一上来就写代码,边界全假设 |
| 实现 | 变量命名、边界处理、能否跑通 | 手写代码、在线编程 | 只写主干,不处理空值和越界 |
| 判断 | 为什么选这个方案、代价是什么 | 方案讨论、项目深挖 | 只会说"这样写比较优雅" |
三层是递进的。第一层崩了,后面两层基本问不下去——面试官会判定"沟通成本太高",这是技术岗最常见的隐性淘汰理由。
手写代码的五个动作
同一道题,按这五步走,分数差别很大。
| 动作 | 说什么 | 为什么 |
|---|---|---|
| 复述题目 | "我理解是……,输入是……,输出是……,对吗" | 确认理解,避免答偏 |
| 问边界 | "数据规模多大,有没有空值,能不能重复" | 显示工程习惯 |
| 给思路 | "我打算用……,时间复杂度是……,有没有更好的" | 拿到认可再写,避免白写 |
| 写主干 | 先写主流程,边界单独标注"这里要处理空" | 保证结构完整 |
| 跑例子 | 用一个正常例、一个边界例走一遍 | 证明结果对,而不是"应该对" |
时间紧的时候,宁可代码写一半,也要把边界和复杂度说清楚。面试官评估的是思考方式,不是你打字速度。
项目深挖怎么答
项目题的默认结构是背景、你的动作、结果、复盘,四个部分缺一个都会被追问。
| 部分 | 说什么 | 常见错误 |
|---|---|---|
| 背景 | 业务问题是什么,规模多大 | 讲技术架构不讲问题 |
| 你的动作 | 你负责哪一块,为什么这么设计 | 用"我们"代替"我" |
| 结果 | 上线后的指标变化,或性能数据 | 只说"顺利上线" |
| 复盘 | 如果重做会改什么 | 说"没什么可改的" |
第四部分是加分项。能说清"当时这个方案在数据量涨到十倍时会出问题,现在我会换成……",比背出十个框架更能证明你真的想过。
一个提醒:不要夸大自己负责的范围。技术面的面试官多数是同行,问到第二层细节就能听出来。写实反而安全。
不会的题怎么接
遇到完全不会的题,直接说"不会"是最稳的开局,但不能只有这三个字。
| 步骤 | 话术 |
|---|---|
| 说清边界 | "这个方向我没做过,我只知道大概和……有关" |
| 给推理 | "如果是我的话,我会先……再……,因为……" |
| 给验证 | "要确认的话,我会去看……或做个最小实验" |
这套接法的价值在于:你不会,但你在用已知推未知。技术面里有相当一部分题,面试官本来就不指望你答满分,只想看崩了之后你怎么处理。
反过来最忌讳的是硬编。编出来的答案一旦被追问两层就会崩,而且会让前面答对的部分一起被怀疑。
反问环节问什么
反问是最后一段评估时间,问什么直接暴露你的关注点。
| 问法 | 效果 |
|---|---|
| "这个团队现在最急的技术问题是什么" | 好,显示你关心真实工作 |
| "新人前三个月一般会接什么类型的任务" | 好,显示你在评估匹配度 |
| "代码评审和上线流程是怎样的" | 好,显示工程意识 |
| "加班多不多" | 中性,但单独问会显得只关心这个 |
| "我这次表现怎么样" | 差,把评估压力推回给对方 |
问一到两个就够,别问成面试官答不完的清单。
常见问题
算法题要刷多少才够
没有通用数字,取决于岗位层级和目标公司。判断标准是:常见题型能不能在二十分钟内讲清思路并写出可运行版本。做不到就先补这一类,别广撒网。
项目太简单,讲不出深度怎么办
把简单项目讲深,靠的是边界和取舍:数据量变大怎么办、出过错怎么定位、为什么不用另一种方案。这些不需要复杂项目也能讲。
面试官一直追问同一个点,是不是在为难我
多数是在验证边界。你答到"再往下我也没深入过,我的判断是……"就可以停,硬撑反而危险。
远程面试写代码要注意什么
提前测共享屏幕和编辑器字号,把提示音关掉。线上面试的设备准备看《线上面试:把设备先过一遍》。
技术面过了还有几轮
常见是技术两轮到三轮,再加一轮主管或 HR。部分公司有交叉面。流程差异大,投递时就问清总轮次,方便安排时间。
技术面的分数不在你会多少,而在你能不能说清自己会什么、不会什么、以及为什么这么选。