计算机相关专业,培训机构都会教简单的数据结构和算法。但是,绝大部分程序员对数据结构和算法一窍不通,只是听过最基本的数据结构和算法,数组、列表、冒泡、快排。稍微复杂一点的就完全没有概念了。
一、大厂面试必考
不管校招和社招,算法提是必考的。
对于校招,很多人都没有项目禁言,而且大厂也不看重你的项目。注重的是你的基础。所以,算法是重中之重。
对于社招,项目经验是一方面,但是算法确实一个最大的门槛。
二、对代码的追求
进了公司,干的活就是用封装好的接口来堆砌业务代码,CRUD,时间久了,虽然你能用的很熟练。但你并不知道背后的一些逻辑,比如你应该用ArrayList还是LinkedList,也不动得如何去评估代码的性能和资源消耗。
工作总还会用到很多的框架、中间件、底层系统,spring、redis。这些技术中有很多的基础数据结构和算法的设计思想,当你去翻看源码的时候,如果没有一个好的基础,很难看懂。
三、我们的目标
现在互联网上各种技术文章、博客。有的人写的东西只能在公司内部小范围使用。而有的人写的就能在github开源,甚至被Apache收录。为什么会有这么大的差距?
高手之间的竞争其实就是基础,更小的资源消耗,更优秀的代码逻辑,这些都离不开最基础的数据结构和算法。如果你去学习redis的源码实现,就能了解到,他的快不仅仅是放到了内存中,代码方便也是做到了极致。
四、算法是内力
想要写出精炼、优秀的代码,了解各种技术的背后逻辑,甚至自己去做一套基础架构,没有算法是不行的。
五、什么是数据结构、什么是算法,两者有什么关系
数据结构就是指数据的存储结构,算法就是操作数据的方法。数据结构是为算法服务的,算法要作用在特定的数据结构上,两者相辅相成,缺一不可。
数据结构和算法的内容:
我们要学的:
10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、字典树;
10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。