一.为何要学习数据结构和算法
面试大厂
- 若是本身之后想在大厂发展,数据结构和算法是必须具有的技能,不管是校招仍是社招,大厂都喜欢让人手撕算法代码。
业务开发工程师程序员
- 虽然成天都是使用CRUD,可是想要用好,用对类库,就须要了解它们的设计原理(数据结构),时间、空间复杂度分析等。
- 咱们还会使用到各类框架,中间件和底层系统,譬如Spring、RPC框架、消息中间件、Redis等,里面有不少基础的数据结构和算法的设计思想。
- 掌握数据结构和算法,对于阅读源码,理解背后的设计原理都很是有用。
基础架构开发工程师面试
- 好比设计RPC框架,想达到开源水平,必须在算法优化,数据存取效率,内存节省等方面比别人更胜一筹。
- 性能好坏是该能力的一个很是重要的评判标准,若是连程序的时间、空间复杂度都不会分析,很难写出性能较优的代码。
中年危机算法
- 不少人认为,程序员 35 岁以后很容易陷入瓶颈,被行业淘汰。其实就是说若是你不懂数据结构与算法, 35 岁以后很难再有提高,也容易被年轻程序员所取代。数据结构与算法就是一个可积累的技能。在金庸小说里面,一我的练降龙十八掌,一我的练全真教内功,刚开始,练内功的被吊打,十年后依然被吊打,但二十年后,降龙十八掌就怎么也打不过练内功的了,算法和数据结构就是内功,降龙十八掌就是各类框架,再怎么熟悉框架,也不如了解它内部的算法和数据结构。
二.数据结构是什么
定义:是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。数据结构
三.经常使用的数据结构

四.算法是什么
就是操做数据的一组方法,数据结构和算法是相辅相成的,数据结构是为算法服务的,算法要做用在特定的 数据结构之上。架构
五. 常见的算法

学习这些内容主要从这几个方面的入手:框架
是要学习它的“来历”“自身的特色”“适合解决的问题”以及“实际的应用场景。数据结构和算法
