
面试类型
本节介绍找软件工程师工作时最常见的几类面试。每种类型在后续章节会展开详细讨论。
行为面(Behavioral interviews)
行为面试题试图衡量你在压力或不利条件下会如何表现。常见有两类:
- "Tell me about a time..."(讲一次……的经历):背后逻辑是"过去的表现是未来行为最好的预测"。目的是让你拿出真实例子,展示你过去如何应对冲突、失败等情境,让公司窥见你未来可能的表现。
- 场景题(Scenarios):不是问过去经历,而是给一个虚构情境,问你会怎么处理。面试官借此考察你的问题解决和共情能力。
行为面的准备非常重要!几乎所有面试都包含行为成分。
行为面示例题
讲一次你和团队成员发生冲突、以及你如何处理的经历。
价值观面(Values interviews)
不要和行为面混淆——价值观面试图衡量你和公司价值观体系的契合度。比如 Google 有它的 Ten things we know to be true,候选人可能会被对照这些理念评估。
有些公司会显式针对价值观出题,有些则在不经意间评估。无论如何,你都要了解公司公开的价值观,并准备好展示你与之契合。
价值观面示例题
我们公司的核心价值观之一是"团队优先于个人"。你过去如何践行这条价值观?
Leetcode 风格面试
Leetcode 风格面试可能是最有名(或者说臭名昭著)的面试类型。Leetcode 是一个网站,提供算法和数据结构编程题。在这类面试中,你要在一个或多个面试官面前解算法/数据结构题。题目可能在白板或电脑上完成,取决于公司偏好以及是现场还是远程。
这些题目意在考察你的问题解决能力、协作能力和技术功底。面试官通常会问你算法的时间和空间复杂度。
这类面试由 big tech 公司带火,但已遍及全行业。如果你确实不喜欢这类面试,也有很多公司不采用 Leetcode 风格的题目。
Leetcode 风格示例题
写一个算法,参数是一个数字数组,返回同一个数组。如果元素是 3 的倍数则输出 "fizz";是 5 的倍数则输出 "buzz";既是 3 又是 5 的倍数则输出 "fizzbuzz"。
示例:
输入:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
输出:
[1, 2, "fizz", 4, "buzz", "fizz", 7, 8, "fizz", "buzz", 11, "fizz", 13, 14, "fizzbuzz"]
实战编码面(Practical coding interviews)
实战编码面是协作式编程,解决一个和工作相关的问题。这是我最喜欢的面试类型之一——和 Leetcode 风格不同,它聚焦你日常工作可能要做的事。比如你应聘 front-end 工程师,编码题可能是按照规范写一段 HTML/CSS/JavaScript。这类面试中,完全理解需求以及面试官期望的互动/协作程度极其重要。
实战编码面示例题
让我们来写一个网页的 HTML/CSS/JavaScript,要求拉取并展示一个 GitHub 用户的资料信息。
系统设计面(System design interviews)
系统设计面用于评估资深工程候选人会如何设计系统。这类面试看你如何整体思考系统、能否提取并澄清模糊需求、在自己领域里有多深的功底。系统设计面可以很有趣,但其开放性也很有挑战。
系统设计面示例题
你会如何设计一个实时、基于 Web 的聊天应用?
知识点 / Trivia 面试(Technical knowledge/trivia interviews)
知识点面一般不写代码,而是问技术问题,看你对某领域了解多深。这类面试名声褒贬不一,但效果好坏很取决于题目类型。比如问一个能 google 5 秒搞定的语言冷门特性是没意义的、不能很好评估候选人功底;反之,问某个领域的基础原理则很有价值。知识点题在所有类型的面试中都比较常见。
知识点示例题
讲一些你会用来确保 web 应用安全的措施。
综合面(Combined interviews)
很多公司——尤其小公司——会把上述多种类型混在同一场面试里。有时是因为公司希望每个面试官都能看到候选人的多面;有时只是因为面试 session 数量不够,没法各占一场。
我应该准备哪些面试?
类型这么多!该准备哪些,主要看你应聘的公司类型。现实地说,唯一可以不准备的类型是 Leetcode 风格——但只在你确认目标公司不考 Leetcode 时才能这么做。
如果想知道某些公司具体考什么题,建议:
- 看公司在 Glassdoor 的面试版块
- 准备某家公司面试时直接问 recruiter。基本上每次我的 recruiter 都会准确告诉我会有哪几种面试
你会发现"问 recruiter"是本手册的一个反复主题——他们是你了解公司极佳的信息源,而且他们希望你成功。好好对待他们!
🎓 Frontend Interview Prep
One of the pioneers in the software interview prep space, Yangshun Tay, is now offering an extremely comprehensive frontend resource full of coding questions, knowledge challenges, system design problems, and more.
You can sign up for as low as $10/mo, which is an amazing deal if you consider the impact a new job can have on your compensation.
I'd strongly encourage any frontend engineers looking for new jobs to sign up! If you use the following link, I'll get a small referral bonus:
Check out GreatFrontEnd now »