这是我在其他平台看到的问题,题主很疑惑为什么算法又没有实际工作经验重要了。这个问题被浏览超过了一千万。今天就跟大家聊聊这个问题,我是个老程序员,但曾经也是从学生过来,接触过很多语言从脚本到C语言。
先不卖关子,直接说结论:实际工作算法对于90%的工作是没有任何用的,你可能只有工作了才知道,工作几年基本用不上写递归,也不用写二叉树,不用写快排。但是不影响算法很重要。
尽管列表我们可以用ArrayList也可以用LinkedList,Map可以用HashMap,你再看无数次源码,研究hash函数到底是为什么,实际工作中无非还是put和get。但是!尤其是对于校招的同学们来说,都别说互联网大厂,中型公司都会考算法题。
甚至有些公司直接发两张A4纸让你手撕二叉树。
另外在特殊领域中,如果算法跟不上基本无法工作,比如图形处理的领域。不管是图形变化还是增强,都要用到矩阵变化。这是一定涉及了线性代数的内容。
另外就是数据结构和算法基础不牢固,职业生涯不一定长。
日常工作中也许用处不大,但是你会发现,业务能力好的小伙伴的算法能力和学习能力都很强。尤其是在高并发和高可用的时候。
所以,大家与其纠结算法重要不重要,不如先看自己当下最缺什么。
如果你是一个应届生,那么算法和数据结构就是你进入大厂的敲门砖。如果你是一个自学者,算法和数据结构算是你未来路上要走长远的一步台阶。如果你现在已经在职,那么实际工作经验要优先于算法的排名。
每一个初级程序员都应该经历的阶段是从拧螺丝开始,如果你螺丝已经拧的非常熟练和优秀了,那么就可以来思考一下,这个机器是如何运转的一些问题。所以数据结构、设计模式,分层封装的思想都很重要。