根据剩余时间来准备软件工程师编码面试,你应该学习哪些主题以及练习哪些问题?
互联网上有很多资源,但很难知道它们如何适应你剩余的准备时间。幸运的是,本文将帮助你解决这个问题。
我自己也多次经历过软件工程师面试过程,并且制定了自己的学习计划,每次都进行了改进。
在本文中,我将分享我用于准备编码面试的3个月学习计划。你会发现确切的学习主题(带有推荐的链接)和确切的问题练习(带有练习链接)。
你还可以使用Grind 75工具(由我构建)按难度、主题、问题的替代分组等方式,找到更多选项。
无论你有多少时间,如果你还不熟悉核心数据结构和算法知识,建议在开始编码面试问题练习之前先复习它们。不同的人有不同的练习风格,你应该做对你最有效的方法。可能的各种方法包括:
- 广度优先准备 - 先复习每个主题,然后开始练习所有主题的各种问题。如果你有大约一个月的时间,推荐这种策略。
- 深度优先准备 - 一次处理一个主题 - 复习一个主题的材料,为该主题练习大量问题。确保掌握一个主题后,再转向下一个主题。重复所有或选定的主题。如果你没有太多时间,这可能是最好的准备方法。你可以专注于我们推荐学习计划中的高优先级主题。
- 深度优先-然后-广度优先准备 - 一次处理一个主题 - 复习一个主题的材料,为该主题练习一些问题。确保掌握后,再转向下一个主题。重复所有主题。最后,练习所有主题的各种问题。这种方法需要的时间比其他方法多,所以如果你有更多的时间,推荐这种策略。
我个人推荐是深度优先准备或深度优先-然后-广度优先准备。在你的日程表中保持一些形式的广度水平学习/练习是很重要的,这样你就不会忘记早期主题,当你转到后期主题时。
3个月学习计划 - 推荐的学习资源和练习题链接
在每个学习计划中,你都会发现一个列表,列出了你应该按优先顺序学习的编码面试主题以及每周应该完成的资源和学习题。
为了最好地利用它,你应该创建一个模板,其中按照剩余的天数和小时数来划分日期,以便稍后填写每天要覆盖的主题/问题。
要保持相对保守的估计,以免最终筋疲力尽。
第1-4周:主题学习 + 练习
这些是你应该学习的主题,按优先级排序。链接中的学习资源是我的算法速查表 - 它为你提供了时间复杂度、边界情况以及特定主题的有用技巧的概览,以及基本和推荐的练习题。
在练习的同时,不要忘记应用编码面试最佳实践和编码面试技巧中的行为和方法!
第1周
主题 | 优先级 | 需要的时间 |
---|---|---|
数组 | 高 | 2小时 |
字符串 | 高 | 3小时 |
哈希表 | 中 | 3小时 |
递归 | 中 | 3小时 |
第2周
主题 | 优先级 | 需要的时间 |
---|---|---|
排序和搜索 | 高 | 3小时 |
矩阵 | 高 | 1小时 |
链表 | 中 | 3小时 |
队列 | 中 | 2小时 |
栈 | 中 | 2小时 |
第3周
主题 | 优先级 | 需要的时间 |
---|---|---|
树 | 高 | 4小时 |
图 | 高 | 4小时 |
堆 | 中 | 3小时 |
字典 | 中级 | 3小时 |
第四周
主题 | 优先级 | 所需时间 |
---|---|---|
区间 | 中级 | 2小时 |
动态规划 | 低 | 4小时 |
二分查找 | 低 | 2小时 |
数学 | 低 | 1小时 |
几何 | 低 | 1小时 |
第五周至第十二周:深入实践
在这里,我列出了一些你应该完成的75个问题,以便为你的编码面试做好充分准备。这些问题列表是根据我生成的Grind 75工具(我自己构建的)生成的,该工具根据你剩余的时间为你生成编码面试的建议学习计划。在那里还可以找到按难度、主题过滤或问题的替代分组等更多选项。
- 如果你遵循了第1-4周的学习计划,你可能已经完成了这里列出的一些问题。你可以跳过它们或再次练习。
- 如果你还没有学习过动态规划问题,或者认为它们不相关,可以跳过这些动态规划问题。实际上,许多动态规划问题也可以通过递归/回溯来解决。
在练习早期,请务必应用编码面试最佳实践中的行为和方法,以及编码面试技巧中的技巧!
我们建议你使用Grind 75工具,该工具允许你跟踪你的练习进度。
为自我介绍、最后的问题和模拟编码面试预留时间
除了为编码面试进行学习和练习之外,你还应该准备你的自我介绍、最后的问题,并尝试模拟编码面试。
准备自我介绍和最后的问题
我建议大约用3小时来构思你的自我介绍,并准备一些最后的问题来问。你可以参考这个自我介绍指南和最后的问题指南,这些应该能帮助你相对快速地完成这些步骤。
安排模拟编码面试
当你完成了60%的编码面试学习和练习计划后,你应该开始安排模拟编码面试。面试时间通常由面试官提供,因此你可以提前查看并预订。我个人使用并推荐的平台是interviewing.io。在这里阅读更多关于不同的模拟编码面试平台的信息。