最佳实践问题
原文:https://www.techinterviewhandbook.org/best-practice-questions/
tip
截至 2022 年 4 月,我已经制定了一个 12 周的学习计划,其中包括复习和练习题的课程。如果你想定制自己的练习题,我还开发了 Grind 75 ,它是 Blind 75 的现代版,你可以定制。
嘿,我是盲人 75 的作者👋!
练习是准备编码面试的最好方法。LeetCode 有一千多个问题。应该练哪个?因此,几年前,我整理了一份关于 LeetCode 最重要的 75 个问题的清单。许多其他的 LeetCode 问题是这些单独问题的技术的混合。我在上次找工作时用这个列表只做重要的问题。
我通过从我的 freeCodeCamp 文章中提取问题在上分享了这个列表,以节省人们修改时的时间,有人在leet code 论坛上转发了这个列表。它不知怎么的就炸了,在编码面试现场超级出名,人们甚至给它起了个名字——盲 75 。盲人 75 题作为 LeetCode 列表可以在这里找到。
几年后,我将列表进一步精简为 50 个问题,并将其分散在 5 周的时间表中。这是建议的修改和练习 LeetCode 上的算法问题的时间表。如果你还没有账户,注册一个,这对你面试的成功至关重要!
在练习时,建议你像对待真正的编码面试一样对待它,并在提交前彻底检查。考虑甚至手动提出一些测试用例,并运行它们来验证正确性!
我为以下问题创建了一个 LeetCode list (高级问题除外)。请随意使用它来跟踪您的练习进度。
Expert tip
如果你的时间不多了, AlgoMonster 旨在帮助你在最短的时间内通过技术面试。由谷歌工程师, AlgoMonster 使用数据驱动的方法来教你最有用的关键问题模式,并有内容帮助你快速修改基本的数据结构和算法。学习和理解模式,而不是背答案!****
第 1 周-序列
在第一周,我们将通过做一些关于数组和字符串的简单和中等的问题来热身。数组和字符串是面试中最常见的问题类型;熟悉它们将有助于建立坚实的基础,更好地处理更棘手的问题。
问题 | 困难 | LeetCode |
---|---|---|
两个总和 | 容易的 | 链接 |
包含重复 | 容易的 | 链接 |
买卖股票的最佳时机 | 容易的 | 链接 |
有效变位词 | 容易的 | 链接 |
有效括号 | 容易的 | 链接 |
最大子阵列 | 容易的 | 链接 |
除自身以外的数组乘积 | 中等 | 链接 |
3 总和 | 中等 | 链接 |
合并间隔 | 中等 | 链接 |
分组字谜 | 中等 | 链接 |
Optional
问题 | 困难 | LeetCode |
---|---|---|
最大乘积子阵列 | 中等 | 链接 |
在旋转排序数组中搜索 | 中等 | 链接 |
第 2 周-数据结构
第二周的重点是链表、字符串和基于矩阵的问题。目标是学习处理链表、遍历矩阵和序列分析(数组/字符串)技术的常用例程,如滑动窗口、链表遍历和矩阵遍历。
问题 | 困难 | LeetCode |
---|---|---|
反转一个链表 | 容易的 | 链接 |
检测链表中的循环 | 容易的 | 链接 |
盛水最多的容器 | 中等 | 链接 |
在旋转排序数组中查找最小值 | 中等 | 链接 |
最长重复字符替换 | 中等 | 链接 |
没有重复字符的最长子字符串 | 中等 | 链接 |
岛屿数量 | 中等 | 链接 |
从列表末尾删除第 n 个节点 | 中等 | 链接 |
回文子串 | 中等 | 链接 |
太平洋大西洋水流 | 中等 | 链接 |
最小窗口子串 | 困难的 | 链接 |
第 3 周-非线性数据结构
第三周的重点是非线性数据结构,如树、图和堆。您应该熟悉各种树遍历(按序、前序、后序)算法和图遍历算法,如广度优先搜索和深度优先搜索。根据我的经验,使用更高级的图形算法(Dijkstra 的和 Floyd-Warshall 的)是非常罕见的,通常也没有必要。
问题 | 困难 | LeetCode |
---|---|---|
反转/翻转二叉树 | 容易的 | 链接 |
验证二叉查找树 | 中等 | 链接 |
非重叠区间 | 中等 | 链接 |
根据前序和后序遍历构造二叉树 | 中等 | 链接 |
前 K 个频繁元素 | 中等 | 链接 |
克隆图 | 中等 | 链接 |
课程表 | 中等 | 链接 |
序列化和反序列化二叉树 | 困难的 | 链接 |
二叉树最大路径和 | 困难的 | 链接 |
Optional
问题 | 困难 | LeetCode |
---|---|---|
二叉树的最大深度 | 容易的 | 链接 |
同一棵树 | 容易的 | 链接 |
二叉树层次顺序遍历 | 中等 | 链接 |
编码和解码字符串 | 中等 | 链接(溢价) |
第 4 周-更多数据结构
第 4 周建立在前几周的知识基础上,但是问题的难度增加了。希望在面试中看到这样的问题。您可以在更高级的数据结构上进行更多的练习,比如(但不仅限于)堆和尝试,这些不太常见,但仍然会被问到。
问题 | 困难 | LeetCode |
---|---|---|
另一棵树的子树 | 容易的 | 链接 |
BST 的最低共同祖先 | 容易的 | 链接 |
实现 Trie(前缀树) | 中等 | 链接 |
添加和搜索单词 | 中等 | 链接 |
BST 中最小的元素 | 中等 | 链接 |
合并 K 个排序列表 | 困难的 | 链接 |
从数据流中查找中值 | 困难的 | 链接 |
插入间隔 | 中等 | 链接 |
最长连续序列 | 中等 | 链接 |
单词搜索 II | 困难的 | 链接 |
Optional
问题 | 困难 | LeetCode |
---|---|---|
会议室 | 容易的 | 链接(溢价) |
第二会议室 | 中等 | 链接(溢价) |
图形有效树 | 中等 | 链接(溢价) |
无向图中连通分量的数目 | 中等 | 链接(溢价) |
外星人词典 | 困难的 | 链接(溢价) |
第 5 周-动态编程
第五周的重点是动态规划(DP)问题。就我个人而言,作为一名面试官,我并不喜欢 DP 问题,因为它们并不真正适用于实际情况,坦率地说,如果我在面试中被要求回答这些棘手的 DP 问题,我就不会得到这份工作。然而,像谷歌这样的公司仍然会问 DP 问题,如果加入谷歌是你的梦想,DP 是不可避免的。
DP 问题可能很难掌握,最好的解决方法是...你猜对了——练习!熟悉记忆和回溯的概念。
实际上,学习和练习 DP 问题的投资回报率(ROI)很低。因此,DP 问题不那么重要/可选,你应该只在你有空闲时间,并且你非常渴望涵盖所有基础(和谷歌面试)的情况下才这样做。
问题 | 困难 | LeetCode |
---|---|---|
爬楼梯 | 容易的 | 链接 |
硬币零钱 | 中等 | 链接 |
最长增长子序列 | 中等 | 链接 |
组合和 | 中等 | 链接 |
入室抢劫犯 | 中等 | 链接 |
入室抢劫犯 2 | 中等 | 链接 |
解码方式 | 中等 | 链接 |
独特的路径 | 中等 | 链接 |
跳跃游戏 | 中等 | 链接 |
移行点 | 中等 | 链接 |
动态编程教程
精品课程
如果你想要更多的结构化算法练习,我推荐以下课程:
AlgoMonsterT3】
AlgoMonster 旨在帮助你在最短的时间内通过技术面试。由谷歌工程师开发的 AlgoMonster 使用数据驱动的方法来教你最有用的关键问题模式,并有内容帮助你快速修改基本的数据结构和算法。最重要的是,AlgoMonster 不是基于订阅的——支付一次性费用,就可以获得终身访问。 今天加入七折优惠→
寻找编码面试:编码问题的模式
设计大师的这门课程扩展了推荐练习题中的问题,但从问题模式的角度来进行练习,这是一种我也同意的学习方法,我个人也使用这种方法来更好地编写面试代码。本课程允许你用 Java、Python、C++、JavaScript 来练习选定的问题,并提供这些语言的示例解决方案以及一步一步的可视化。学习和理解模式,而不是背答案! 现在获得终身使用权→
掌握编码面试:数据结构+算法
这本 Udemy 畅销书是评分最高的面试准备课程之一(4.6 星,21.5k 评分,135k 学生),包含了价值 19 个小时的内容。像技术面试手册一样,它超越了编码面试,涵盖了简历,非技术面试,谈判。是一个全包!请注意,JavaScript 用于编码演示。 结账→