21世纪的算法和数据结构

2025-06-09

21世纪的算法和数据结构

在他的“问我任何问题”节目,我问尼克·卡尼克,他最初的成功之路是什么,你可以在这里看到他的完整回答,但我觉得最有趣的部分,也是促使我写这篇文章的部分是这部分(粗体是我的):

虽然我看起来似乎无所不能,但我所做的一切都提升了我的简历,并帮助我磨练了解决问题的能力。这是长期成功的基础。你必须持续学习,并达到能够做到“即时学习”的程度。一旦你精通一门编程语言,比如 C++,你几乎可以学习任何东西。除此之外,你应该专注于数据结构、算法和设计模式

我能给出的最好建议是,只关心自己,别管别人在做什么。别管那些过时的框架和当年流行的库。制定一个计划,并坚持执行。像90年代那样学习编程,专注于基础知识,并在实际项目中实践。

粗体部分是本文主题中最重要的部分:算法和数据结构。他建议学习这些知识,并最终像 90 年代那样学习编程。这正是我如今学习和深入理解算法和数据结构的感受,它们并非 90 年代的东西,而且早已被解决了?何必再学习它们呢?

我感觉很多人读到这篇文章会火冒三丈,开始追究我的异端邪说,不过我还是想解释得更清楚一些。大学期间,我学过大部分数据结构和一些基础算法,但这些课程总给我一种印象,那就是它只是让学生打下扎实的基础,学会逻辑思维等等,而不是让他们死记硬背如何实现,只要理解就够了。虽然我忘了完整的解释和其他一些细节,但我知道什么是队列、堆栈、树、图……例如,我确实记得调用堆栈及其在编程中的重要性,因为我每天都要接触它;我记得树及其在搜索中的良好用途,还有著名的二分查找、图以及寻找最短路径的问题,诸如此类的东西。

然而,在体验了 Google 的选拔流程之后,我发现仅仅从经验上理解是不够的,还必须深入了解,包括所有这些流程的实现。对于那些不熟悉的人,Google 会进行电话面试,面试官和你都会查看一份 Google 文档,他们会根据流程描述测试所有这些算法和数据结构。面试官会列出一大堆算法和数据结构,虽然我看到了很多熟悉的名字,但我确信在第一次联系和面试之间的 2 到 3 周内,我无法做好充分的准备,所以我要求在预约之前退出面试。尽管我还没有准备好,但我还是可以参加面试的,但我决定不去,我认为这没有好处,相反,我的目标是改进,然后再试一次。等我!

我打算在这方面付出一些努力,因为之后我发现,不仅谷歌需要这类知识,很多其他公司也需要。这对很多人来说可能很奇怪,但对我来说却很新鲜,因为我专注于Web开发,很多职位并没有明确要求具备这些知识。

尽管有这个目的,但为了更好地掌握基础知识,问题仍然存在……既然这些算法和数据结构大部分都已经被解决了,并且已经有现成的实现等着我们去使用,为什么了解它们仍然如此重要?为什么大公司在这个时代还要寻求这类知识?

附言:我在这里读到的经验丰富的开发者的文章越多,就越觉得这个坑比现在看起来的要深,学到了很多东西。谢谢你!:D

PS²:Nick 说的“忘记当今的框架和当年的图书馆吧。”这部分实际上是另一篇文章的内容。

鏂囩珷鏉ユ簮锛�https://dev.to/leoat12/algorithms-and-data-structs-in-the-21st- century--40a2
PREV
您如何练习新的编程语言和/或框架?
NEXT
3x AWS 认证:已完成