学习实践计划

编码面试学习计划——根据剩余时间学习和练习什么

在开始准备编码面试时要回答的最重要的问题之一是:您应该做哪些学习主题和练习题才能最有效地准备编码面试?

互联网上有很多资源,但很难知道它们如何与你剩余的准备时间相匹配。幸运的是,这篇文章将帮助你解决这个问题。

我个人曾多次经历过可怕的软件工程师面试过程,并制定了自己的学习计划,每次都对其进行完善。

在本文中,我将分享我个人用于准备编码面试的 3 个月学习计划。您将找到要学习的确切主题(附推荐链接)和要练习的确切问题(附练习链接)。

您需要多少时间准备编码面试?一般来说,3 个月(如果您每周可以投入 11 个小时)是更全面准备的推荐时间段。我将分享 3 个月(推荐时间段)的推荐学习计划,但您可以通过 Grind 75 工具为您需要的任何时间范围的练习题制定学习计划。可以在那里找到更多选项,例如按难度、主题、替代问题分组进行筛选。

无论你有多少年的经验,如果你不熟悉核心数据结构和算法知识,建议你在开始编码面试问题练习之前先复习一下。不同的人有不同的练习风格,你应该做最适合自己的。各种可能的方法是:

  1. 广度优先的准备- 复习每个主题,然后开始练习所有主题的各种问题。如果你有大约一个月的空闲时间,建议采用这种策略。

  2. 深度优先的准备- 一次解决一个主题 - 复习一个主题的材料,练习大量与该主题相关的问题。确保掌握一个主题后,继续学习下一个主题。对所有或选定的主题重复此步骤。如果您没有太多时间,这可能是最好的准备方式。您可以专注于我们推荐的学习计划中的高优先级主题。

  3. 先深后广的准备- 一次解决一个主题 - 复习一个主题的材料,练习该主题的一些问题。确保掌握后,继续学习下一个主题。对所有主题重复此操作。最后,练习所有主题的各种问题。此策略比其他策略需要更多时间,因此如果您有超过一个月的时间,建议使用此策略。

我个人的建议是先广度深度的准备。在你的日程安排中安排某种形式的广度学习/练习是很重要的,这样你在学习后面的主题时就不会忘记前面的主题。

在每个学习计划中,你都会找到一个编码面试主题列表,其中包含资源和练习题,你应该每周按优先顺序进行处理。

为了最好地利用它,您应该创建一个模板,在其中细分剩余的日期和每天剩余的小时数,以便您以后可以填写每天要涵盖的主题/问题。

保持相对保守的估计,这样你就不会最终精疲力竭。

◇第 1 - 4 周:专题学习 + 练习

这些都是你应该学习的主题,按优先顺序排列。链接的学习资源是我的算法速查表 - 它为你概述了必须记住的内容,例如时间复杂度、极端情况和特定主题的有用技巧,以及基本和推荐的练习题。

在练习时,不要忘记尽早运用编码面试最佳实践中的行为和编码面试技巧中的方法!

Week 1arrow-up-right

Topic主题
Priority优先级
Time required所需时间

Array 数组

High

2 hours

String 字符串

High

3 hours

Hash Table 哈希表

Mid

3 hours

Recursion 递归

Mid

3 hours

Week 2arrow-up-right

Topic
Priority
Time required

Sorting and searching 排序与查找

High

3 hours

Matrix 矩阵

High

1 hour

Mid

3 hours

Queue 队列

Mid

2 hours

Stack

Mid

2 hours

Week 3arrow-up-right

Topic
Priority
Time required

Tree

High

4 hours

Graph

High

4 hours

Heap

Mid

3 hours

Trie 字典树

Mid

3 hours

Week 4arrow-up-right

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

◇第 5 - 12 周:深入练习

这里,我列出了 75 个你应该回答的问题,以便为你的编程面试做好充分准备。这些问题列表由Grind 75 工具arrow-up-right生成,该工具根据你剩余的时间生成推荐的编程面试学习计划。在那里可以找到更多选项,例如按难度、主题、替代问题分组进行筛选。

  • 如果您遵循第 1 至第 4 周的学习计划,您就会完成这里的一些问题。您可以跳过它们或重新做一遍。

  • 如果您没有研究过动态规划问题或认为它们不相关,请随意跳过它们。许多动态规划问题无论如何都可以通过递归/回溯来解决。

在练习时,不要忘记尽早运用编码面试最佳实践中的行为和编码面试技巧中的方法!

我们建议使用Grind 75arrow-up-right工具,它可以让您跟踪练习进度。

Week 5

Problem问题
Difficulty难度
Duration所需时间

Easy

15 mins

Easy

20 mins

Merge Two Sorted Listsarrow-up-right 合并两个有序链表

Easy

20 mins

Easy

20 mins

Easy

15 mins

Easy

15 mins

Valid Anagramarrow-up-right 有效的字母异位词

Easy

15 mins

Easy

15 mins

Easy

20 mins

Easy

20 mins

Easy

15 mins

Easy

20 mins

Week 6

Problem
Difficulty
Duration

Easy

20 mins

First Bad Versionarrow-up-right 第一个错误的版本

Easy

20 mins

Easy

15 mins

Easy

20 mins

Easy

20 mins

Easy

20 mins

Easy

20 mins

Add Binaryarrow-up-right 二进制求和

Easy

15 mins

Easy

30 mins

Easy

20 mins

Easy

15 mins

Easy

15 mins

Week 7

Problem
Difficulty
Duration

Medium

20 mins

Medium

20 mins

Medium

25 mins

Medium

30 mins

K Closest Points to Originarrow-up-right 离原点最近的 K 个点

Medium

30 mins

Medium

30 mins

3Sumarrow-up-right 三数之和

Medium

30 mins

Medium

20 mins

Medium

25 mins

Medium

30 mins

Week 8

Problem
Difficulty
Duration

Medium

30 mins

Medium

35 mins

Medium

25 mins

Product of Array Except Selfarrow-up-right 除自身以外数组的乘积

Medium

30 mins

Medium

20 mins

Medium

25 mins

Medium

30 mins

Medium

30 mins

Week 9

Problem
Difficulty
Duration

Medium

30 mins

Medium

30 mins

Medium

30 mins

Medium

25 mins

Time Based Key-Value Storearrow-up-right 基于时间的键值存储

Medium

35 mins

Medium

30 mins

Medium

25 mins

Medium

30 mins

Week 10

Problem
Difficulty
Duration

Medium

30 mins

String to Integer (atoi)arrow-up-right 字符串转整数 (atoi)

Medium

25 mins

Medium

25 mins

Medium

30 mins

Medium

20 mins

Medium

25 mins

Medium

20 mins

Medium

25 mins

Medium

35 mins

Week 11

Problem
Difficulty
Duration

Medium

30 mins

Medium

30 mins

Find All Anagrams in a Stringarrow-up-right 字符串中的所有字母异位词

Medium

30 mins

Medium

30 mins

Medium

35 mins

LRU Cachearrow-up-right LRU 缓存机制

Medium

30 mins

Kth Smallest Element in a BSTarrow-up-right 二叉搜索树中第 K 小的元素

Medium

25 mins

Hard

30 mins

Week 12

Problem
Difficulty
Duration

Serialize and Deserialize Binary Treearrow-up-right 二叉树的序列化与反序列化

Hard

40 mins

Hard

30 mins

Hard

45 mins

Hard

40 mins

Hard

45 mins

Merge k Sorted Listsarrow-up-right 合并 k 个排序链表

Hard

30 mins

Hard

35 mins

★留出时间进行自我介绍、期末问答和模拟编码面试

除了学习和练习编码面试之外,您还应该准备自我介绍、最后的问题,并尝试模拟编码面试。

◇准备自我介绍和最后要问的

我建议你花大约 3 个小时来准备自我介绍,并准备一些最后要问的问题。你可以参考这份自我介绍指南最后要问的问题指南,它们应该可以帮助你相当快地完成这些步骤。

◇安排模拟编码面试

当你完成编程面试学习和练习计划的 60% 时,你应该开始安排模拟编程面试。面试时间通常由面试官提供,因此你可以提前查看并预订。我个人使用并推荐的平台是interviewing.ioarrow-up-right。在此处阅读有关不同模拟编程面试平台的更多信息。

Last updated