你在准备FAANG/MAANG面试时可能犯的最大错误

你在准备FAANG/MAANG面试时可能犯的最大错误

尽管毫无用处,但Leetcode面试不会很快消失。随着市场形势好转,企业将再次开始大举招聘。在这一点上,我已经与数百名有志者进行了交流,他们希望在面试中脱颖而出,将自己的技能提升到一个新的水平。通过与这些人的交谈,我注意到很多准备面试的人都会犯一个巨大的错误。这个错误导致了数月的挫折和失败,最终导致许多人放弃。在本文中,我将分享这个错误是什么,为什么它是一个问题,以及你应该如何修复它。如果你想了解更多关于面试的相关内容,可以阅读以下这些文章:
50多次ML面试(作为面试官)教会了我什么?
深度学习面试的35个经典问题和答案,建议收藏!
数据科学面试中的机器学习问题类型以及如何准备这些问题?
数据/商业分析师求职,如何准备统计相关面试题

从入门级到高级工程师,每个人都会犯这个错误

准备好学习Leetcode面试了吗?不要错过这个!

你可能犯的最大的Leetcode错误

Leetcode不是DSA——直入主题,我看到无数求职者犯的错误是将DSA(数据结构和算法)的研究与擅长Leetcode题目的研究混为一谈。这是一个容易犯的错误(大多数人在给出建议时将Leetcode准备简称为DSA准备)。不幸的是,这导致许多人陷入教程地狱,他们不断观看DSA的YouTube视频/购买书籍,却毫无进展。Leetcode和DSA是独立的技能(相关但本质上非常不同),因此应该区分对待。现在让我们来讨论将其中一个技能作为掌握另一个技能的学习是浪费时间的问题。

为什么你不应该浪费时间为Leetcode学习DSA——让我们假设你只是为了Leetcode的目的而想要学习数据结构和算法(不幸的是,这是我交谈过的绝大多数人)。在这种情况下,花几个小时在书籍/课程/视频上专门探索各种数据结构和算法——它们是如何构建的,它们的小细节等等,是对时间的巨大浪费。你真正需要的只有以下几点:了解为什么数据结构/算法非常有用,Leetcode中5个简单的例子展示这些应用(在这一步骤中,尽量保持例子的直接性。有足够的时间来增加复杂性),以及相关的时间/空间复杂度。你真的不需要知道太多就能做好Leetcode题目。超出这个范围的学习会占用你练习Leetcode题目的时间——这最终会违背目的。专注于任何事情都类似于遵循奥运会短跑运动员的常规训练来提高足球水平(⚽⚽)。是的,足球需要很强的跑动能力,但你实际上只能进行有限的训练。与其如此,你最好专注于能帮助你在足球方面进步的训练。

如何有效地学习DSA来准备Leetcode

那么如何有效地学习DSA来准备Leetcode呢?这个过程有多个步骤:

  1. 黑盒——第一步是黑盒DS/A。简单地说,理解两件事——它接受的输入和它产生的输出。仔细理解这个阶段——如果有人让你在一个排序列表中找到一个值,你应该想到折半查找,即使你还不能实现折半查找。这就是你在这个阶段所需要做的;这只是关于建立识别能力。顶级竞技程序员Colin Galen也谈到了这种方法是帮助处理复杂想法的天赐之物https://www.youtube.com/watch?v=RDzsrmMl48I。我们还在文章中介绍了黑盒的好处——如何快速学习新的代码库https://codinginterviewsmadesimple.substack.com/p/how-to-learn-a-new-codebase-very
  2. 用代码构建关联——下一步是打开你的理论黑盒,开始用代码构建关联。这可以通过处理涉及特定DS/A的简单问题来实现。这一步对于帮助你理解理念机制(快速实现核心功能)至关重要。我建议在这个阶段主要使用简单的问题。要了解更多关于这一点,请阅读帖子-如何使用简单的Leetcode题目。https://codinginterviewsmadesimple.substack.com/p/how-to-use-easy-leetcode-problems
  3. 迭代——当你试图解决每个问题时,记下你解决这个问题的经验是很重要的。你在哪里遇到了困难?你的解决方案与实际解决方案有何不同?你的问题是知识问题(识别BFS)还是实现问题(编码)?这些将帮助你不断地改进你的弱点。
  4. 构建框架——随着你的进步,创建框架/模板来解决某些问题可能会很有帮助。当你研究同一主题的多个问题时,你会发现相似之处,你可以把它们抽象成一个模板。这将改变游戏规则,帮助你更快地完成问题(并有助于增强信心)。要了解一个有用的模板示例,可以查看我在这里介绍的递归函数模板,它已经帮助许多人解决了涉及递归的Leetcode题目。https://codinginterviewsmadesimple.substack.com/p/the-recursive-function-templatetechnique

为什么你不应该使用Leetcode来学习DSA

我也和一些人谈过,他们认为学习Leetcode就足以掌握DSA。即使是很难的Leetcode题目,对于软件工程师来说,掌握DS/A也没有什么影响。以下是一些原因:

  • Leetcode题目通常是非常具体的,不能很好地概述底层概念。他们有很好的指导方针(你的客户有多少次非常清楚地告诉你输入、输出和约束)
  • Leetcode题目通常设计得很困难,这可能会导致挫败感和使人气馁。
  • Leetcode题目不会教你如何以一般的方式思考问题。

下一个选择是依靠书本/课程等。这些资源更好,但在我看来仍然不是最优的。这些资源为你提供了大量知识,但忽略了在应用程序阶段掌握DSA至关重要的一个方面——上下文。我可以用600页的《抽象代数》教科书来教你,直到你记住每一个单词并能解决每一个问题,但这可能无法转化为你利用类进行更好的对象设计的能力。去一个软件工程博客或社区中,看看他们讨论的关于类使用中遇到的挑战以及如何有效地使用类,这对你会非常有用。

最重要的是要理解行业工具和SOPs总是在变化的,定期学习很重要,而不是在几个月的紧张学习中超负荷学习,然后不与该领域保持联系。

谢谢你的宝贵时间。你还可以订阅我们的YouTube频道,观看大量大数据行业相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Devansh- Machine Learning Made Simple
翻译作者:Dou
美工编辑:过儿
校对审稿:Chuang
原文链接:https://machine-learning-made-simple.medium.com/the-biggest-mistake-youre-probably-making-for-your-faang-maang-interview-prep-39af2cfc2556