Skip to content

面试准备方法论

核心原则

1. 边学边练

千万不要等到把所有内容都学完才开始刷题。

正确方式

  1. 学习某个数据结构或算法主题
  2. 立即做 2-3 道相关题目
  3. 继续下一个主题
  4. 后续复习时再做 2-3 道相关题目

为什么重要:你不会被"雇用来做知识",而是被雇用来"应用知识"。

2. 用白板或纸写代码

面试中你需要手写代码,而非在 IDE 中编码。

练习方式

  • 在白板上练习(推荐)
  • 或在纸上练习,然后用电脑输入验证
  • 使用示例输入测试你的代码

💡 提示

面试时如果没有白板,可以用大号绘图垫代替。作者称之为"沙发白板"。

3. 选择合适的语言

推荐语言(大公司普遍接受):

语言适用场景
C++需要高性能和底层控制
Java稳定可靠,面试常见
Python表达力强,适合快速实现

不建议:除非你非常熟练,否则避免使用 Ruby、JavaScript 等。

4. 不要死记

你不需要记住每个算法的实现细节。

正确理解

  • 理解每种数据结构的核心思想
  • 理解算法的设计范式(如分治、动态规划)
  • 能够手写实现,但不需要背诵

学习策略

每日学习计划

每天的学习流程:

  1. 选择一个主题(如:哈希表)
  2. 观看相关视频(控制在 1-2 小时内)
  3. 实现该数据结构(用你选择的语言)
  4. 做 2-3 道相关题目

优先级排序

按照以下顺序学习(从必学到可选):

必学(核心)
├── 时间复杂度分析
├── 基础数据结构(数组、链表、栈、队列、哈希表)
├── 树和图
├── 排序算法
├── 二分查找
├── DFS/BFS
├── 递归
└── 动态规划

可选(进阶)
├── 系统设计
├── NP 完全性概念
├── 位操作
├── Trie 和 Skip Lists
└── 操作系统/网络基础

常见错误

错误后果解决方案
只看视频不动手无法在面试中写代码每学一个主题立即编码实现
等学完再刷题知识点无法巩固边学边练,交替进行
死记硬背变体题就无法解决理解原理,掌握通用模式
只会一种解法扩展问题无法回答一个问题尝试多种解法

面试考察重点

你需要展示的能力

  1. 问题分析 - 理解问题,明确输入输出
  2. 算法思维 - 选择合适的数据结构和算法
  3. 代码实现 - 清晰、准确、高效
  4. 复杂度分析 - 时间复杂度和空间复杂度
  5. 测试能力 - 考虑边界情况和优化

面试中的沟通

  1. clarify - 明确问题边界和假设
  2. think aloud - 边思考边说,展示思维过程
  3. discuss - 讨论可能的方案和权衡
  4. implement - 写出清晰代码
  5. test - 手动的测试用例验证

相关资源

基于 VitePress 构建