算法和数据结构,作为计算机出身的程序员在大学中一般都会学到,但是我们都是学习这些算法的理论,毕业之后基本都还给老师了。我们毕业后工作可能大部分人都不会在使用一些复杂的数据结构或者算法去实现结构,一般都是网上找现成的框架、API,然后copy到项目中,完成项目的需求就不再管了,也就成了代码搬运工,有时候可能觉得算法和数据结构离我们很远。真的是这样的么?
其实我们学习的算法与数据结构,是为了解决实际问题的。
我们肯定在项目中会使用很多官方的或者第三方比较优秀的API、框架,可能有些框架我们自己也能够写出来,但是却会有很多bug. 为什么人家能够写出很优秀的框架?而且能够被很多人会采用?其实是写这么框架的人的内功好,作者在写这么框架的时候考虑到了很多细节性能方面的问题,解决这些性能方面的问题就需要有很强的内功(算法、数据结构、操作系统、网络), 也就是我们在大学中学习的那些知识。当然了不是说我们一定要达到人家那种水平,至少我们也要一定的基础,这样如果我们有阅读人家源码的时候,还可以理解作者某段代码为什么要那么写? 否则我们可能只是知道作者实现了效果,但是完全不能理解作者的意图是什么。所以说学习算法与数据结构对我们阅读优秀代码,甚至是写出优秀的框架来说是必备的条件。
我们在找工作的时候,很多公司都会出几道算法题,为了应付面试,我们会在网上背几个常考的算法题。但是如果公司算法题稍微改造一下,我们就不知道处理了,造成了很尴尬的局面。很多大公司现在都会在面试的时候考算法。如果我们不好好学习算法与数据结构,可能就会失去了很多去工作的机会。
可能在小公司中,可能业务量没有那么大,开发中我们也不用关心性能上的问题。但是如果我们去大公司,比如BAT上班,公司的业务量会很大,如果有一点性能问题,可能就会影响很多用户,给公司造成很大的影响。
如果我们不好好学习算法与数据结构,只是天天搬砖,到了35岁之后肯定要被社会给淘汰。现在技术发展那么快,区块链、人工智能都是算法为基础的,如果我们不会算法,怎么能学会这些新技术,怎么能跟上趋势。前段时间给几个大学的师兄聊天,他们已经再给孩子搞少儿编程,我们如果不再学习,我们的优势会越来越少,到时候我们拿什么去竞争?为了工作,为了不被社会淘汰,也要好好学习算法与数据结构。