学习实践计划

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Mid

3 hours

Queue 队列

Mid

2 hours

Stack

Mid

2 hours

Week 3

Topic
Priority
Time required

Tree

High

4 hours

Graph

High

4 hours

Heap

Mid

3 hours

Trie 字典树

Mid

3 hours

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

◇第 5 - 12 周:深入练习

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

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

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

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

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

Week 5

Problem问题
Difficulty难度
Duration所需时间

Two Sum 两数之和

Easy

15 mins

Valid Parentheses 有效的括号

Easy

20 mins

Merge Two Sorted Lists 合并两个有序链表

Easy

20 mins

Best Time to Buy and Sell Stock 买卖股票的最佳时机

Easy

20 mins

Valid Palindrome 验证回文串

Easy

15 mins

Invert Binary Tree 翻转二叉树

Easy

15 mins

Valid Anagram 有效的字母异位词

Easy

15 mins

Binary Search 二分查找

Easy

15 mins

Flood Fill 洪水填充

Easy

20 mins

Lowest Common Ancestor of a Binary Search Tree 二叉搜索树的最近公共祖先

Easy

20 mins

Balanced Binary Tree 平衡二叉树

Easy

15 mins

Linked List Cycle 环形链表

Easy

20 mins

Week 6

Problem
Difficulty
Duration

Implement Queue using Stacks 用栈实现队列

Easy

20 mins

First Bad Version 第一个错误的版本

Easy

20 mins

Ransom Note 赎金信

Easy

15 mins

Climbing Stairs 爬楼梯

Easy

20 mins

Longest Palindrome 最长回文串

Easy

20 mins

Reverse Linked List 反转链表

Easy

20 mins

Majority Element 多数元素

Easy

20 mins

Add Binary 二进制求和

Easy

15 mins

Diameter of Binary Tree 二叉树的直径

Easy

30 mins

Middle of the Linked List 链表的中间结点

Easy

20 mins

Maximum Depth of Binary Tree 二叉树的最大深度

Easy

15 mins

Contains Duplicate 存在重复元素

Easy

15 mins

Week 7

Problem
Difficulty
Duration

Min Stack 最小栈

Medium

20 mins

Maximum Subarray 最大子数组和

Medium

20 mins

Insert Interval 插入区间

Medium

25 mins

01 Matrix 01 矩阵

Medium

30 mins

K Closest Points to Origin 离原点最近的 K 个点

Medium

30 mins

Longest Substring Without Repeating Characters 无重复字符的最长子串

Medium

30 mins

3Sum 三数之和

Medium

30 mins

Binary Tree Level Order Traversal 二叉树的层次遍历

Medium

20 mins

Clone Graph 克隆图

Medium

25 mins

Evaluate Reverse Polish Notation 逆波兰表达式求值

Medium

30 mins

Week 8

Problem
Difficulty
Duration

Course Schedule 课程表

Medium

30 mins

Medium

35 mins

Coin Change 零钱兑换

Medium

25 mins

Product of Array Except Self 除自身以外数组的乘积

Medium

30 mins

Validate Binary Search Tree 验证二叉搜索树

Medium

20 mins

Number of Islands 岛屿数量

Medium

25 mins

Rotting Oranges 腐烂的橘子

Medium

30 mins

Search in Rotated Sorted Array 搜索旋转排序数组

Medium

30 mins

Week 9

Problem
Difficulty
Duration

Combination Sum 组合总和

Medium

30 mins

Permutations 全排列

Medium

30 mins

Merge Intervals 合并区间

Medium

30 mins

Lowest Common Ancestor of a Binary Tree 二叉树的最近公共祖先

Medium

25 mins

Time Based Key-Value Store 基于时间的键值存储

Medium

35 mins

Accounts Merge 账户合并

Medium

30 mins

Sort Colors 颜色分类

Medium

25 mins

Word Break 单词拆分

Medium

30 mins

Week 10

Problem
Difficulty
Duration

Partition Equal Subset Sum 分割等和子集

Medium

30 mins

String to Integer (atoi) 字符串转整数 (atoi)

Medium

25 mins

Spiral Matrix 螺旋矩阵

Medium

25 mins

Subsets 子集

Medium

30 mins

Binary Tree Right Side View 二叉树的右视图

Medium

20 mins

Medium

25 mins

Unique Paths 不同路径

Medium

20 mins

Construct Binary Tree from Preorder and Inorder Traversal 从前序与中序遍历序列构造二叉树

Medium

25 mins

Container With Most Water 盛最多水的容器

Medium

35 mins

Week 11

Problem
Difficulty
Duration

Letter Combinations of a Phone Number 电话号码的字母组合

Medium

30 mins

Word Search 单词搜索

Medium

30 mins

Find All Anagrams in a String 字符串中的所有字母异位词

Medium

30 mins

Minimum Height Trees 最小高度树

Medium

30 mins

Task Scheduler 任务调度器

Medium

35 mins

LRU Cache LRU 缓存机制

Medium

30 mins

Kth Smallest Element in a BST 二叉搜索树中第 K 小的元素

Medium

25 mins

Minimum Window Substring 最小覆盖子串

Hard

30 mins

Week 12

Problem
Difficulty
Duration

Serialize and Deserialize Binary Tree 二叉树的序列化与反序列化

Hard

40 mins

Hard

35 mins

Find Median from Data Stream 数据流的中位数

Hard

30 mins

Word Ladder 单词接龙

Hard

45 mins

Basic Calculator 基本计算器

Hard

40 mins

Maximum Profit in Job Scheduling 工作调度的最大利润

Hard

45 mins

Merge k Sorted Lists 合并 k 个排序链表

Hard

30 mins

Largest Rectangle in Histogram 柱状图中最大的矩形

Hard

35 mins

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

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

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

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

◇安排模拟编码面试

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

Last updated