首先,让我们来看看 LeetCode 的问题所在。
我收集了大约 20 种这样的编码问题模式,我相信它们可以帮助任何人学习这些漂亮的算法技术,并在编码面试中发挥真正的作用。
文章:Don’t Just LeetCode; Follow the Coding Patterns Instead
作者:Arslan Ahmad
上述译文仅供参考,具体内容请查看上面链接,解释权归原作者所有。
系统设计面试准备:掌握系统设计的艺术。
编码面试越来越难。要准备编码面试,需要数周甚至数月的准备时间。
没有人喜欢花那么多时间准备编码面试。那么,有没有更聪明的解决方案呢?
准备编码面试的人肯定都知道 LeetCode。它可能是最大的在线编码面试问题库。让我们来看看人们在使用 LeetCode 时会遇到哪些问题。
LeetCode 中大约有 3k 个问题。LeetCode 面临的最大挑战是缺乏条理;它有一大堆编码问题,让人不知从何入手,也不知道该关注哪些问题。
人们不禁要问,是否有足够数量的问题可以让人认为自己为编码面试做好了准备?
我希望能有一个简化的流程来指导我,教给我足够的算法技巧,让我对面试充满信心。作为一个懒惰的人,我可不想去回答 500 多个问题。
人们经常使用的一种技巧是解决与相同数据结构相关的问题;例如,先集中解决与数组相关的问题,然后再解决与链接表、哈希表、堆、树、图或 Trie 等相关的问题。虽然这确实提供了一些条理性,但仍然缺乏连贯性。例如,许多问题可以用 HashMap 解决,但仍然需要不同的算法技术。
我希望看到不仅数据结构相同,而且算法技术相似的问题集。
我接触到的最好的东西是解决问题的模式,如Sliding Window, Fast and Slow Pointers, Two Pointers, Two Heaps, Topological Sort(滑动窗口、快慢指针、双指针、双堆、拓扑排序等。遵循这些模式有助于培养我 "将新问题映射到已知问题 "的能力。这不仅让整个编码-面试-准备过程变得有趣,也让我的工作变得更有条理。
编码模式增强了我们 “将新问题映射到已知问题的能力”。
我收集了大约 20 种这样的编码问题模式,我相信它们可以帮助任何人学习这些漂亮的算法技术,并在编码面试中发挥真正的作用。
这些模式背后的理念是,一旦你熟悉了一种模式,你就能用它解决数十种问题。有关这些模式的详细讨论以及相关问题的解决方案,请参阅《Grokking the Coding Interview》。
所以,话不多说,让我把这些模式一一列举出来(每种模式的小介绍,并附有例题:)
18、Fibonacci Numbers 斐波那契数列
结论
不管你喜不喜欢,LeetCode 类型的问题几乎是每个编程面试的一部分,因此每个软件开发人员都应该在面试前练习这些问题。他们唯一的选择就是聪明地做好准备,通过关注基本的问题模式来学习解决问题。了解有关这些模式和示例问题的更多信息,请参阅《Grokking the Coding Interview》和《Grokking Dynamic Programming for Coding Interviews》。
请查看 Design Gurus,了解有关编码和系统设计面试的有趣课程。
⚠️:文章翻译上如有语法不准确或者内容纰漏,欢迎各位评论区指正。
TalkX是一款基于GPT实现的IDE智能开发插件,专注于编程领域,是开发者在日常编码中提高编码效率及质量的辅助工具,TalkX常用的功能包括但不限于:解释代码、中英翻译、性能检查、安全检查、样式检查、优化并改进、提高可读性、清理代码、生成测试用例以及有趣的图表转账等。
TalkX建立了全球加速网络,不需要考虑网络环境,响应速度快,界面效果和交互体验更流畅。并为用户提供了OpenAI的密钥,不需要ApiKey,不需要自备账号,不需要魔法。
TalkX产品支持:JetBrains (包括 IntelliJ IDEA、PyCharm、WebStorm、Android Studio)、HBuilder、VS Code、Goland.