如果你想编写有效的代码,数据结构和算法是必不可少的,这是为什么它们是技术面试的一个基本组成部分。
人类的思维看起来很灵活,似乎不受约束,但事实上,我们有一些生物学上的限制。例如,我们通常只能在短期记忆中保存大约7个物品——著名的魔法数字7。计算机也有类似的限制,计算机受CPU的限制,只能在内存中存储这么多数据,每秒只能执行这么多操作。
算法是实现某一特定目标的一系列一步一步的指令,数据结构和算法通常可以协同工作。经过深思熟虑的算法和数据结构的组合有助于最小化执行某些操作所需的运行时间和内存,从而节省大量的时间和金钱。拥有广泛的数据结构和算法,你就可以自由地选择最合适的解决方案来编写任何你想要的代码。
像微软和谷歌这样的科技巨头公司,在技术面试时,通常会包括如何选择合适的数据结构或算法解决和实现计算问题,并向面试官展示你确实了解他们的优缺点。
我们通过搜索大量学习数据结构和算法的MOOC课程,根据注册人数、评分、评论和口碑进行排名,筛选出下面6个最好的数据结构和算法在线学习MOOC课程「链接」技术人员面试技巧,以帮助你成为一个更好的程序员和准备技术面试。
1. Algorithms, Part I
普林斯顿大学:Robert Sedgewick教授和Kevin Wayne教授
普林斯顿大学的算法(Part I)在线课程包括基本的数据结构、排序和搜索算法。它涵盖了每个程序员都需要了解的关于算法和数据结构的基础,重点是用Java实现的应用程序和科学性能分析。本课程的下一部分是算法(Part II),重点是图形处理和字符串处理算法。
课程为期6周,每周学习6-10个小时。每周有两节讲座,分成4−6个部分,中间有互动测验问题。最后有5个关于数据结构和算法的编码任务需要完成。该课程还提供了一些基于本周材料的算法工作面试问题,这些问题均来自于领先的科技公司面试的问题。
2. Algorithms: Design and Analysis, Part 1
斯坦福大学:Tim Roughgarden教授
斯坦福大学在edX上提供在线课程算法:设计和分析,你将学习算法设计的几个基本原理和它们所依赖的数据结构。这门课要求很高,但也有很大的回报。在课程结束时,你将能够很好的准备技术面试,并与其他程序员和计算机科学家流利地谈论算法。
本课程为期6周,每周2-4小时,通过视频讲座和幻灯片教学。你将通过几种类型的作业来练习和掌握算法的基础知识。有6个多项选择题测验和6个编程任务,你将用想要的编程语言实现讲座中的算法。
3. MIT 6.006 Introduction to Algorithms
麻省理工MIT:Erik Demaine教授
麻省理工学院的6.006对算法的介绍在线课程是关于计算问题的数学建模。正如麻省理工学院的其他课程一样,这个课程的要求也很高,如果你准备好迎接挑战,它也是值得的。 它包括基本的数据结构(动态数组、堆数、平衡的二进制搜索树、哈希表)和解决经典问题的算法(排序、图搜索、动态规划)。
该课程有13周的讲座,视频总长约36个小时,还包括其他资源,如课程笔记、课程作业和解决方案。Erik Demaine是麻省理工学院计算机科学教授,也是神童。 他在14岁时完成了学士学位,并在20岁时完成了博士学位! 据报道,他是麻省理工学院历史上最年轻的教授。
4. Data Structures & Algorithms I: ArrayLists, LinkedLists, Stacks and Queues
佐治亚理工:Mary Hudachek-Buswell教授
佐治亚理工的数据结构和算法课程是2022年最受欢迎的100个免费在线课程之一,你将学习基本的线性数据结构和在这些结构上操作的算法。课程结束后,你将了解线性数据结构的基本原理,能够区分这些线性结构和有效地实现它们,并能够分析它们的性能。
这个课程为期5周,每周9-10个小时,通过一系列的短片来教学,并穿插一些互动练习来检查你的理解,还将有一个可视化的探索性实验,让你更深入地理解数据结构和算法。数据结构和算法I是数据结构和算法专业证书的一部分。
5. Algorithmic Toolbox
加州大学圣地亚哥分校:Michael Levin教授等
加州大学圣地亚哥分校的算法工具箱在线课程,涵盖了在日常应用中经常出现计算问题的基本算法技术,这个超级工具箱让你实现大量的算法。通过练习解决计算问题,设计新的算法和实现有效的解决方案,你将成为一个更好的程序员。
课程为期6周,每周4-8小时,提供视频讲座和额外的资源供你学习。每周都会有多项编程任务测试,课程还附带一本书,有许多解决方案(包括Python代码)和课程中问题的提示。
6. Intro to Data Structures and Algorithms「链接」
谷歌公司:Horatio Thomas和Brynn Claypoole
如果你正在准备技术面试,但从没有上过数据结构或算法的课程,或者需要复习,那么这门课程非常适合你。 谷歌提供的数据结构介绍技术人员面试技巧,数据结构和算法将介绍Python中的通用数据结构和算法,为你的技术面试做准备。你将遇到常见的技术面试问题,并学习如何组织和解释你的回答。
本课程为期4周。在整个课程中,你将通过视频教程学习,并观看经验丰富的工程师在解决算法问题时解释他们的推理。然后你将练习模拟面试,以获得具体的改进建议,准备好接受技术面试官对你抛出的任何问题。