Coding interview study plan - 根据剩余时间该学什么、练什么
根据剩余时间规划 study topics 和练习题,准备 Software Engineer coding interviews
准备 coding interview 最关键的问题之一是:在有限时间里,哪些 topics 和练习题最值得做?
网上资源很多,但很难判断该如何与自己的时间安排匹配。好消息是,这篇会帮你解决。
我自己经历过多次 Software Engineer 面试流程,也反复做过 study plan 并持续优化。
这篇会分享我个人使用的 3 个月 study plan。你会看到具体要学的 topics(带推荐链接)以及要练的题目(带练习链接)。
推荐准备时间与方法
精选面试资料与工具合集
题库、工具与模板集中获取,按阶段高效补齐短板。
coding interview 需要准备多久?通常来说,3 个月(每周 11 小时)是更全面的推荐周期。本文会提供 3 个月计划,但你也可以用 Grind 75 tool(我做的)为任何时间长度生成练习计划,还能按难度、topic、分组方式过滤。
无论你有多少时间,如果你对核心 data structures 和 algorithms 还不熟,建议在开始刷题前先复习基础。不同人有不同练习风格,选择适合自己的方式即可。常见方法包括:
- Breadth-first preparation - 先复习所有 topics,再跨 topics 练题。如果你只有一个月左右,推荐这个策略。
- Depth-first preparation - 一次专注一个 topic:复习资料 + 大量练题;掌握后再进入下一个 topic。如果时间不多,这可能是最佳策略。你可以优先高优先级 topics。
- Depth-first-then-breadth preparation - 先逐个 topic 深入,再在最后阶段跨 topics 练题。这个方法更耗时,适合有超过一个月的情况。
我个人更推荐 Breadth-first 或 Depth-first-then-breadth。保持一定的 breadth 能防止你在后期遗忘早期 topics。
3 个月 study plan - 含推荐资源与练习链接
每个 plan 都包含 coding interview topics、学习资源、练习题,并按 优先级顺序 排列,建议按周执行。
使用时,先做一个模板,列出剩余日期和每天能投入的小时数,再把每天要学/要练的内容填进去。
时间估计要保守一点,避免 burnout。
Week 1 - 4:Topic 学习 + 练习
以下 topics 按优先级排序。学习资源链接是我的 algorithm cheatsheets,包含 time complexity、corner cases、常用技巧,以及必做/推荐练习题。
练习时别忘了尽早应用 coding interview best practices 和 coding interview techniques。
Week 1
| Topic | Priority | Time required |
|---|---|---|
| Array | High | 2 hours |
| String | High | 3 hours |
| Hash Table | Mid | 3 hours |
| Recursion | Mid | 3 hours |
Week 2
| Topic | Priority | Time required |
|---|---|---|
| Sorting and searching | High | 3 hours |
| Matrix | High | 1 hour |
| Linked List | Mid | 3 hours |
| Queue | Mid | 2 hours |
| Stack | Mid | 2 hours |
Week 3
Week 4
| Topic | Priority | Time required |
|---|---|---|
| Interval | Mid | 2 hours |
| Dynamic programming | Low | 4 hours |
| Binary | Low | 2 hours |
| Math | Low | 1 hour |
| Geometry | Low | 1 hour |
Week 5 - 12:深入练习
这里列了 75 道题,足以覆盖 coding interview 的准备。题目来自 Grind 75 tool(我做的),它会根据剩余时间生成 study plan,还支持按难度、topic、分组方式过滤。
- 如果你按 Week 1 - 4 学习,里面一些题已经做过,可以跳过或重做。
- 如果你没学 dynamic programming 或觉得不相关,可以跳过 DP 题。很多 DP 题也能用 recursion/backtracking 解。
练习时别忘了早期就应用 coding interview best practices 和 coding interview techniques。
我们推荐用 Grind 75 来跟踪练习进度。
预留时间:自我介绍、final questions、mock coding interviews
除了学习和练题,你还需要准备 self introduction、final questions,并尝试 mock coding interviews。
准备自我介绍和最终提问
建议用 3 小时左右准备 self introduction,并整理一组 final questions。可以参考 self introduction guide 和 final questions guide,通常能快速完成。
安排 mock coding interviews
当你完成约 60% 的 study/练习计划时,就应该开始安排 mock interviews。面试时间通常由 interviewer 提供,你可以提前查看并预约。我个人推荐的平台是 interviewing.io。更多平台可看 mock coding interview platforms。