很多人看到一些大佬说,算法以后再学可能你工作五年都用不上。还有人说现在数据存储技术和计算机运算速度非常快,将来算法还重要吗?其实算法可以解决很多问题,并不是人工智能、数据搜索和数据挖掘才用得上算法。
很多大厂面试,不管是二面还是笔试,经常会问到算法。面试官可以通过算法看出一个程序员的编程思维,考察对复杂问题的设计和分析能力。
为什么工作中很少用到算法现在很多程序90%以上都被项目和UI实现业务逻辑给占据了。但是任何软件其实都是算法和数据结构组成的。我们说百度,每天网站要处理十亿个搜索数据,如果没有好的算法,根本都实现不了。
算法比起其他编程语言的学习,对理解能力要求更高,学习起来也相对困难一些。在学习算法的过程中,刚刚入门的学习者总会遇到各种各样的困难。尤其是大量初学者没有正确的学习方法与完整的知识体系图谱,实际编程中遇到问题无人指导。
需要进行系统化学习充分建立算法学习思维,扎实编码能力。从基础来讲要学习算法,至少要非常熟练地掌握一种排序算法,各种线性表的插入、删除算法,树的遍历和插入、删除算法,图的遍历算法等。
在小公司不用处理大规模数据其实我们可以以这样的心态面对工作,数据结构和算法如果我们一直不学就一直用不到。之前我们需要花费很多经历来设计架构,但是有了数据结构和算法知识体系,很容易就可以理解了。
如果我们不明白类库背后的原理,不懂得时间和空间的复杂度分析,谈用好也不是很容易。
作为业务相关的程序员,我们会用到各种框架和中间件、底层系统等。比如Spring、RPC框架、消息中间件、Redis等等。在这些基础框架中,很多基础数据结构和算法的设计思想。
如何实时统计业务接口99%的响应时间?可能我们最先想到的就是每次查询从小到大排序。如果有个数据,那么个数据就是99%的响应时间。
但是,如果你知道“堆”这个数据结构,用两个堆可以非常高效地解决这个问题。基础架构研发工程师,写出现在互联网上的技术文章、架构分享、开源项目满天飞,照猫画虎做一套基础框架并不难。
本文只是希望大家重视数据结构和算法,很多我们觉得很难不知道如何学习的内容,可以提升我们的竞争力。