Skip to content

最佳实践问题

原文: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 用于编码演示。 结账→


我们一直在努力

apachecn/AiLearning

【布客】中文翻译组