几年都用不到一次数据结构与算法,学它干嘛?| 极客时间

百家 作者:InfoQ 2021-12-19 13:45:27

最近刷脉脉看到一个问题:

这个灵魂拷问,估计每个小伙伴或多或少都怀疑过。

毕竟工作中写业务代码,用着别人封装实现好的函数、类、库、中间件,程序只是搭积木而已,“日常增删改查、API BOY”的形容,是不好听,但却是很多程序员的真实写照,写代码更像是体力活。

还有人戏称“面试造火箭、入职螺丝刀”,但实际上,大厂面试卡算法,高薪资的背后,是通过算法,来筛选有思考能力、解决问题能力的人才。

算法的价值,不仅止于面试,更在于入职后,真正解决工程实战中存在的问题。

评论区有位阿里大佬说得非常不错:

毕竟算法在工作中无处不在,你可能经常会碰到:

  • 要根据你的业务排序需求来选择是用稳定排序还是非稳定排序;

  • 要根据插入和删除数据的频率来选择使用 array 还是 linked list;

  • 对上亿数据排序除了外排序是不是也能用 bitmap;

  • 在不同的 workload 下应该选择行存还是列存的数据库,选择基于 lsm-tree 的索引还是 b+ tree 的索引;

  • .....

还有每天都在使用的 JDK、STL 等基础库中的算法等等。只有搞懂什么场景下、该选用什么算法和数据结构,并且深入了解程序在物理机上到底是如何运行的,面对特定问题,才能用较优的时空复杂度求解,尽可能避免性能瓶颈,真正写出高效运行的程序。

所以那些背了很多“八股文”、学了很多概念的人,在真正临上阵时却不会用。比如都知道 Redis 实现有序集合底层采用的是跳表,但跳表的实现细节、跳表和红黑树相比有什么优势,就很少有人真正理解了。

算法,不仅仅是应对技术面试的工具,还是编程的灵魂。如果你想吃 IT 技术这碗饭,算法会制约一个人的上限,等到技术更高深,经验越丰富,算法的重要性就越来越明显。

如何在实际工作中用好算法?

武功套路容易学,扎马步基本功难练,学算法也是一样。你没办法讨巧,你要像郭靖学习降龙十八掌那样,一掌一掌劈下去才行。

网上资料不少,大多讲的理论,不结合实际问题,不考虑工作场景,还是学不会。最近看到极客时间上了个《算法实战高手课》专栏,还是让我眼前一亮的,点题就是「实战」,我第一时间就订阅了,看了更新的几篇,可以说是从实际工程问题的视角,真真切切的为大家呈现了一堂实用的算法课,分享一张专栏中「核心算法应用图」。

这个专栏是从算法的工程实践开始,着重讲算法是如何运行在真实的物理机器上的,如何解决实际业务系统中的问题的,如何在各个稳定运行的中间件、分布式系统、基础库中实现的。再加上源码剖析,手写实现,深入细节,带你掌握 35 类算法实战应用场景、6 大领域常用算法知识体系,真正提升你解决问题的能力。

刚上线,最是优惠,还有隐藏口令,到手 ¥89。 

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接