logo
Coding interview preparation

Coding interviews:你需要准备的全部内容

你会遇到什么、怎么准备、以及如何在 software engineer coding interview 里表现出色

一份教你高效准备 software engineering technical interview(coding test round)的终极 guide。

如果你已经决定开始准备 coding interview,但不知道如何最大化时间利用率,这篇就是从 zero 到 hero 唯一需要的 guide。

什么是 Software Engineering coding interview?

Prompt Master

用 Prompt 结构化训练解题思路

覆盖场景拆解、提示模板与面试题训练,一步步提升表达与推理。

进入 Prompt Master

Coding interview 是一种 technical interview,用编程题来评估 software engineer 候选人的能力。通常 focus 在 data structures 和 algorithms,而其他 technical rounds 可能会包含 system design(尤其是 middle/senior 级别)。

一轮 coding interview 通常 30-45 分钟。面试官会给你一个(或多个)technical question,你需要在实时协作编辑器里写 code(比如 CodePen 或 CoderPad,用于 phone screen / virtual onsite),或在白板上(onsite)在 30–45 分钟内解决问题。

coding interview 会怎么评估你?

我整理了 top tech companies 的评估标准,并抽象成一份你可以用的 coding interview evaluation rubric。不同公司用词和权重可能略有不同,但核心指标一定包含:

  1. Communication - 提问澄清问题、清晰表达思路与 tradeoffs,让面试官能轻松跟上。
  2. Problem solving - 理解问题,系统、逻辑、准确地拆解;讨论多个可能方案和 tradeoffs;能正确分析时间/空间复杂度并优化。
  3. Technical competency - 把讨论出的方案落成可运行 code,不卡顿;实现干净正确、对语言特性熟悉。
  4. Testing - 能覆盖正常与边界 case,自行发现并修正问题。

更多细节看这里: 如何在 coding interview 中展示 hire signals

如何最有效地准备 coding interview?

只刷 LeetCode 其实不够。直接跳进去刷几千题很浪费时间,也不可能比结构化方法更有效。

按 30 分钟/题、每天 3 小时练习来算,平均 3-4 周只能完成约 160 题,而且很可能没形成方法论,也记不住做过的题。

更好的准备方式是:

  1. 选一个合适的编程语言
  2. 规划时间,按优先级攻克 topics 和题目
  3. 每个 topic 结合学习 + 练习
  4. 练习时配合 coding interview cheatsheets 内化 must-dos 和 must-remembers
  5. 准备好自我介绍和最后要问的问题
  6. 尝试 mock coding interviews(Google/Facebook 工程师)
  7. (有额外时间)内化关键题型 patterns

1. 选一个合适的编程语言 {#pick-programming-language}

适合 coding interview 的编程语言应该是你熟悉且适合面试的语言。

什么叫适合面试?一般来说,我们希望用更高层的语言,标准库函数和数据结构丰富,因此更“好写”。

推荐用于 coding interview 的语言:Python、C++、Java、JavaScript

更多内容见: 如何选择编程语言

2. 规划时间,按优先级练习 {#plan}

准备 coding interview 需要多久?取决于你想准备到什么程度。平均来说,大概需要 30 小时覆盖最低限度,~100 小时达到较充分准备

开始准备时,先做计划。计算从现在到 coding test 的时间,然后按天制定 topics 和题目计划,优先攻克最重要的。

怎么知道在有限时间里该练哪些题?可以用免费的 Grind 75 tool(我做的),它会根据准备时间生成 study plan。背后的 algorithm 会给题目排序优先级,并在 breadth/depth 之间做平衡。

如果你时间充裕,建议用 3 个月(每天 2-3 小时)做更完整的准备。我整理了一个 3 个月 study plan,覆盖从 start 到 finish 的 topics 和题目。

3. 单个 topic:学习 + 练习结合 {#study-and-practice}

为了记忆和效率,最佳方式是:先学一个 concept,马上做相关练习题。

好消息是,现在已经有很好的资源帮你系统完成:

  1. AlgoMonster
  2. Grokking the Coding Interview: Patterns for Coding Questions

AlgoMonster

AlgoMonster 除了帮你通过练习掌握 data structures 和 algorithms 题,还会整理常见 interview question patterns,让你能迁移到从没见过的题目上。它由 Google 工程师制作,比非结构化 LeetCode grinding 更高效。覆盖语言包括 Python、Java、C#、JavaScript、C++、Golang 等等。今天加入可享 70% discount →

Grokking the Coding Interview: Patterns for Coding Questions

Design Gurus 的课程在推荐练习题基础上,从 pattern 视角学习。我也非常认同这种方法,并亲自用它提升了 coding interview 能力。课程提供 Java、Python、C++、JavaScript 的题目练习和 sample solutions,并有 step-by-step 可视化。学 pattern,而不是背答案! Get lifetime access today →

4. 练习时配合 cheatsheets {#practice-with-cheatsheets}

为了最大化练习收益,我建议在学习/练习时配合以下 cheatsheets:

  • Coding interview techniques:如何找解法、如何优化方案
  • Coding interview best practices:面试过程中该如何表现,展示 hire signals
  • Algorithms study cheatsheets:每类 data structure/algorithm 的最佳学习资源、must remembers(tips、corner cases)与 must do 练习题

Coding interview techniques

这里有一份约 10 个技巧的 list,用来解决 coding interview 中最关键的两件事:找到解题方法,优化 time/space complexity。

当你遇到从未见过的题、卡住时,这些技巧非常有用。

Coding interview best practices

Top tech companies 通常从 4 个维度评估候选人:communication、problem solving、technical competency、testing。为了展示满足这些维度的行为,我整理了 coding interview best practices cheatsheet,告诉你面试前/中/后该做什么。这基于我作为 interviewee 的经历,以及在 Facebook 观察 top candidates 的经验。

配合该 guide 练习,能让你从一开始就建立好 habits 和 muscle memory。

Algorithms study cheatsheets for coding interviews

这些是我自己准备面试时整理的 notes。我把它们组织成一页式 cheatsheets:最值得学的资源、最值得练的 LeetCode 题、以及每类 data structure/algorithm 的 must remembers(tips、corner cases)。它们能帮助你内化最重要的概念,最大化准备效果。Check them out

5. 准备好自我介绍和最后要问的问题 {#prepare-self-introduction}

在 software engineering 面试的开始和结束,几乎总会要求 self introduction 和 final questions。因此你应该花时间准备一个优秀的自我介绍和一组好问题。如果做得好,会给面试官留下非常好的印象,甚至改变结果。

自我介绍参考:self introduction guide for software engineers
最终提问参考:final questions guide

6. 试试 mock coding interviews {#mock-interviews}

在面试官面前现场 coding 很紧张,特别是第一次。hands-on experience 非常重要。

interviewing.io 是目前最好的 mock technical interview 资源之一。你可以匿名预约 Google/Facebook 工程师做 mock coding interview,也可以约 Mobile、Front End、Engineering Management 等 specific roles。更棒的是,你还能看录屏,了解 phone interview 的真实感觉。

而且如果你在 mock interviews 表现好,可以解锁 “jobs page”,直接约 Uber、Lyft、Quora、Asana 等 top companies 面试。我自己既当过 interviewer,也当过 interviewee,体验非常好。

更多平台见: mock coding interview platforms

相关练习题

Coding interviews:你需要准备的全部内容

暂无相关练习题