面试官视角:什么样的候选人会被录取
今年参与了十几场技术面试,有拿 Offer 的,有挂掉的。作为面试官,记录一些观察。
简历筛选
先说简历,这是第一关。
避免的写法
熟练掌握 JavaScript、HTML、CSS、Vue、React、Node.js、MySQL、MongoDB、Redis、Docker、K8s……
这是”技术名词堆砌”,看不出真实水平。我更想看的是:
推荐的写法
在 XX 项目中使用 Vue 3 + TypeScript 重构了旧系统,代码量减少 40%,首屏加载时间从 3 秒降到 1.5 秒。
有场景、有行动、有结果,这才是有效信息。
技术面试
基础知识的考察
不是考八股文,而是验证理解深度。
比如问 Promise:
面试官:请实现一个 Promise.all
候选人:这个我会……(开始写代码)
能写出来很好。但我更想知道:
- 如果其中一个 Promise reject 了怎么处理?
- 如果传入的数组里有非 Promise 值怎么办?
- 和 Promise.allSettled 的区别是什么?
理解原理和会背题是两回事。
项目经历的深挖
面试官:讲讲你最有成就感的一个项目
候选人:我做了一个后台管理系统……
面试官:有什么难点?
候选人:业务逻辑比较复杂……
面试官:具体哪里复杂?怎么解决的?
候选人:……
很多候选人在这里卡住。不是项目不难,而是没有总结过。
好的回答应该是:
候选人:我做过一个实时协作编辑器,难点是多人同时编辑同一文档时的冲突处理。
面试官:怎么解决的?
候选人:我研究了 CRDT 算法,用 Y.js 库实现了无冲突的数据同步。过程中遇到了光标位置跳动的问题,后来发现是浏览器选区 API 的坑,通过监听 compositionend 事件解决了。
有技术细节、有思考过程、有解决方案。
现场编程
不要求一次写对,但要看思路:
- 需求理解是否准确
- 代码结构是否合理
- 边界条件是否考虑
- 时间复杂度分析
见过不少候选人,上来就写代码,写到一半发现理解错了需求。先问清楚再动手,这是好习惯。
软技能
技术只是一方面,软技能同样重要。
沟通能力
能把复杂的技术问题讲清楚,是加分项。
面试官:你是怎么向产品经理解释这个技术方案的?
候选人:我会画图,用流程图展示数据走向,不堆术语。
团队协作需要沟通,技术大牛如果无法协作,价值也有限。
学习能力
面试官:你最近在学什么?
候选人:我在看 Rust,想写个 CLI 工具练手。
面试官:为什么想学 Rust?
候选人:我们团队有个性能瓶颈的模块,用 Node.js 处理太慢了,想用 Rust 写一个原生模块。
有目的的学习,比漫无目的的”学新技术”更有说服力。
坦诚
面试官:你用过 K8s 吗?
候选人:用过一点,主要是部署应用,复杂的集群管理没做过。
不知道就说不知道,比瞎编强。有些候选人硬着头皮编,追问两句就露馅了。
反向面试
面试最后会问:你有什么想问我们的吗?
这是一个展示思考的机会:
- 团队目前面临的最大技术挑战是什么?
- 新入职的人会负责什么内容?
- 团队的技术栈和开发流程是怎样的?
这些问题显示出你对这份工作的认真态度。
相反,问”加班多吗”、“有免费零食吗”会减分。
总结
| 维度 | 加分项 | 减分项 |
|---|---|---|
| 简历 | 具体成果、量化数据 | 技术名词堆砌 |
| 基础 | 理解原理、能举一反三 | 背八股文、一问就倒 |
| 项目 | 有难点、有思考、有成长 | 套模板、无细节 |
| 软技能 | 沟通清晰、有学习热情 | 瞎编、不真诚 |
最后,面试是双向选择。好的公司会尊重候选人,不好的公司不去也罢。
祝各位求职顺利。