记得以前读书的时候,每每老师讲到数据结构和算法下面就一堆人都在睡觉,不知道是老师讲的无聊还是真的很难,直到毕业我对数据结构和算法的看法都是:难学、学了用处不大。
我相信大部分程序员都是像我一样,进入社会工作,一开始都是做一些基础的重复的工作,根本用不到什么算法和复杂的数据结构。直接靠各种语言的类库堆砌就可以完成几乎所有工作,干嘛吃力不讨好的去研究算法呢,还不如花时间多学习几个框架和语言。
当然,有上述想法的程序员没有什么问题,现在的就业环境就是这样,大部分中型公司并不看重你的对算法和数据结构的了解,面试的时候大量的问题都是关于熟不熟悉某个框架或语言,有没有大数据高并发的开发经验等问题。而大部分程序员靠着平时的经验积累和对框架的熟练运用都可以应付过来,找到一份还不错的工作。
按理来说,只要你工作没有需要,当然可以不学算法,其实大部分java程序员确实都不会算法,但是,我要说但是:
如果开发一个非常复杂而且有高并发的大型系统,必然会在系统中使用算法,而且大公司数据结构与算法用的比较多,建议先学基础的算法,如掌握常见的排序算法等。
程序=算法+数据结构,好的程序,算法和数据结构是很重要,简单的说数据与数据之间的关系叫做数据结构,可以是数组、队列、堆栈、树或者图,数据结构使用计算机语言定义了程序,而算法则是实现程序的具体步骤,将这些结构贯穿在一起,两者密不可分。
大型的程序,整个架构内的数据结构的合理性,算法的高效性,是保证具有很多独立功能模块更好的高效协作、解决问题的核心,平常java开发有现成的框架、类库、设计模式的支撑,而这些都是建立在正确的结构以及高效的算法上。因此程序员,都应该学好算法和数据结构,来提升自己技术理解能力,能更好的解决实际问题。
更何况在许多大公司面试的时候会问到算法题,如果你不会,通过几率相对就小很多,所以我的建议是,有空还是得学!
算法是一个程序员必备的内力,国外的大厂面试90%的题都是考算法,他们是非常重视算法基础的,他们认为任何一门编程语言花不了多长时间就能上手,所以他们最主要的就是考验程序员的内力(算法基础、逻辑基础、数学基础)。国内的BATJ也非常重视算法基础,如果你想进大厂,那么你必学算法。
这里推荐一个学习数据结构和算法的地方,里面的内容简单明了,分门别类,从易到难,非常适合准备系统的学习数据结构和算法的小伙伴,特别是准备面试进大厂的同学。
数据结构:数据结构面试题,数据结构知识库 - 小牛知识库全网最全的数据结构知识库,整理了各数据结构的相关知识,轻松面对面试和工作需要https://www.xnip.cn/sjjg/
算法原理:算法原理,算法面试题,算法知识库 - 小牛知识库全网最全的算法知识库,整理了各大经典算法的原理与解析,轻松面对面试和工作需要https://www.xnip.cn/suanfa/