How I Mastered Data Structures and Algorithms for ML (In 6 Weeks)
TL;DR · AI 摘要
How I Mastered Data Structures and Algorithms for ML In 6 Weeks Towards Data Science Data Science How I Mastered Data St...
核心要点
- 主题聚焦:How I Mastered Data Structures and Algorithms fo
- 来源:Towards Data Science,建议结合原文判断细节。
- AI 分析暂不可用,本条为保底评分与摘要。
我如何在6周内掌握机器学习所需的数据结构与算法 | Towards Data Science
数据科学
我如何在6周内掌握机器学习所需的数据结构与算法
我用于征服编码面试的策略、问题和流程。
Egor Howell
2026年7月15日
8分钟阅读
分享
作者提供的图片
自2024年以来,我通过了超过90%的编码面试,但这并不是因为我是个天才。
在数据科学和机器学习领域,大多数编码面试都在LeetCode或HackerRank上进行,通常会问数据结构与算法相关的问题或类似的问题。
在过去的几年中我发现,通过特定的策略和练习特定的问题,可以将这些面试的准备过程"游戏化"。
因此,在本文中,我想详细拆解我如何在短短6周内掌握编码/数据结构与算法面试的具体过程。
让我们开始吧!
停止传统方式学习数据结构与算法
第一步可能看起来有些违反直觉,但实际上是停止用传统方式学习数据结构与算法。
对于那些不熟悉数据结构与算法(简称DSA)的读者,让我快速解释这些术语:
- 数据结构 —— 以高效的方式组织和存储数据,以便能够被访问和修改。
- 算法 —— 解决问题或执行任务的逐步过程或规则集合。
结合起来,DSA研究的是如何结构化数据并设计高效的处理方法。
DSA在科技领域已经成为一种"梗",因为这些面试测试的技能在实际工作中很少会用到。
然而,它却是许多面试流程的一部分,因此是我们必须练习的必要之恶。
如果你拥有计算机科学学位,很可能已经将DSA作为模块学习过,但很多希望进入数据科学和机器学习领域的人来自其他STEM背景,如物理、数学和工程。
因此,这些人通常会开始观看教程、阅读教科书,并极有可能将NeetCode作为主要学习资源。
我当时也做了同样的事情。
我当时甚至在博客上写了一系列关于DSA的文章,同时在学习NeetCode的“数据结构与算法入门”课程。
列表:数据结构与算法 | 由Egor Howell精选 | Medium 数据结构与算法 · Medium上的13篇文章 medium.com
问题是,这实际上并没有让我变得擅长数据结构与算法,也没有让我在解决编码面试问题上变得更好。
我仍然难以解决像2sum这样的基础问题。
不要误会我,NeetCode是学习DSA概念和更广泛领域(如系统设计)的绝佳资源。但问题不在于资源本身,而在于学习方法。
当然,学习理论是有帮助的,但你应该在练习的同时学习理论,以巩固理解。
这就像想要打网球,却只学习如何挥拍的理论和技术,却从未实际练习击球——这本质上就是整个游戏的核心。
LeetCode也是如此。
因此,我采取了完全相反的方法。
我甚至在学习相关主题之前就开始做题目了。完成题目或者在无法解决时,我会学习该主题的高效解法和相关理论。
这是我的总体流程:
- 每天早上第一件事是连续6周每天花30到60分钟解决两个问题。
- 给自己20分钟解决每个问题。如果在规定时间内无法解决,用剩下的10分钟查看解法。
- 查看解法时,我专注于学习解题模式而非仅仅记住答案。这一点非常关键,因为单纯记忆解法长期来看没有帮助。
- 关闭解法,等待5分钟,然后再次尝试解决问题。
- 重复这个过程。
这种学习方式彻底改变了我对数据结构与算法(DSA)的理解,因为它迫使我在实践中学习,并像Andrej Karpathy所说的那样经历所谓的“脑力苦力”。
被动观看课程和阅读书籍看似高效,实际上却是拖延——回避真正解决问题和通过失败学习的过程。
停止练习所有主题
现在,我不希望你随意在Leetcode上解决任何问题,而是聚焦于面试中出现频率最高的几个主题。
对于数据科学和机器学习岗位而言,所需的数据结构与算法知识广度并不需要像软件工程师职位那样深入,即使你应聘的是高级职位。
实际上,面试中高频出现的主题只有:
- 数组与哈希:使用哈希表/集合实现O(1)查找,避免重复扫描数据。
- 双指针:在有序数据中双向移动指针,跳过嵌套循环。
- 滑动窗口:扩展/收缩连续区间,高效追踪最佳子数组/子字符串。
- 链表:谨慎重连节点指针,常使用快慢指针或虚拟头节点。
- 二分查找:当数据(或答案)有序/单调时,将搜索空间减半。
- 栈:LIFO结构用于匹配/撤销操作或追踪“下一个更大/更小”元素。
- 树:递归(DFS)或逐层(BFS)遍历以计算或搜索层级数据。
- 堆/优先队列:快速获取最大/最小值,适合top-k或“优先处理”问题。
- 图:通过DFS/BFS遍历节点/边,探索路径、连通性或最短路线。
请只专注于这些主题。
动态规划、字典树和位运算等主题学习难度高且在面试中出现频率低。
将这些高级主题的学习时间投入系统设计或行为面试准备等流程的其他领域会更有效率。
坦白说,我只练习过40道Leetcode题目,这让我通过了超过90%的编码面试,其中一些是高级机器学习工程师职位的面试。
这40道题目经过精心挑选,覆盖了面试中常考的核心主题。
这些题目选自NeetCode 150和Blind 75列表,但特别针对数据科学和机器学习岗位进行了筛选,因为这些列表主要面向软件工程师。
我已创建了一个包含这40道题目的表格/数据库,你可以在下方链接中找到,以帮助你的准备。
40道必须解决的LeetCode题目 这40道题让我获得了来自TransferWise、DoorDash等公司以及多家初创企业的20万美元以上的offer。problems.egorhowell.com
坦率来说,这40道题并不能覆盖面试中可能出现的所有问题,但它们涵盖了约80%-90%的常见主题和题型。
这些题目在时间投入和通过面试的回报率方面是最具性价比的选择。
本题库的目标是帮助你用最短的时间掌握和练习面试中最常出现的概念。
我们刻意选择不追求全面性,因为这关乎策略。
停止独自练习
学习解决编程和数据结构算法问题并不复杂,关键在于坚持和每天持续投入。
如果你只提前几天准备,很可能会失败,因为短时间内无法掌握数据结构算法。
通过采用我之前提到的策略并专注于这40道题,我大约用了6周时间才在编码面试中建立起信心。
然而,如果你没有每天持续练习,任何"取巧"的方法都难以奏效。
这也是大多数人失败的地方。
这就像去健身房——你知道该做什么和什么时候去,但很多人仍然做不到。
这不是知识层面的问题,而是自律的问题。
这就是私人教练存在的意义:他们能帮你保持动力并对你负责。
你同样需要这样的机制来应对LeetCode/DSA练习。
在我练习时,我甚至让母亲每周检查我的进度以确保我保持练习。
这种问责机制和不想让母亲失望的心理,正是推动我在不想做题时依然坚持的动力。问责是保持持续性的神奇机制。
因此,我也希望你这样做。请让认识的任何人每天联系你,监督你的进度。
在我的教练课程中,我会每天联系特定的学员,确保他们完成承诺的练习。
这是我们使用的简单追踪工具,欢迎复制使用:
在这里找到追踪工具!
这种方法效果惊人,学员们都取得了显著进展,成功获得理想的数据/机器学习岗位。
如果你想与我合作,欢迎通过以下链接申请:
申请链接!
联系我
- YouTube
- Website
作者
查看Egor Howell的所有文章
算法
,
职业建议
数据结构
机器学习
分享本文
- 在Facebook上分享
- 在LinkedIn上分享
- 在X上分享
Towards Data Science是一个社区出版物。提交你的见解以触达全球读者,并通过TDS作者支付计划获得报酬。
更新为你的实际投稿链接
为TDS写作
✦ 结束CTA ✦