开篇 重拾数据结构与算法

DebugCat
图片: 图片来自网络,侵权删 作为程序员,数据结构与算法是必须要迈过去的坎,不然纵有武林秘籍傍身,没得心法要领,也是徒然。 犹记得,大学时候学数据结构和算法的就是一学就头大,别说具体的代码实现,有时候连基本伪代码思路都不一定看得懂,只是靠着考试前的几次连夜突击勉勉强强混一个及格。毕业后也全都还给了老师,除了还记得一些基本的概念名词。再到后来参加工作,日常开发中也是很少主动去了解和学习与这些知识,即使用到了也是退避三舍,动动手指google,懵逼中解决当下的问题再说…即使心有不甘,也没有时间(勇气)去研究其背后的数据结构和算法思想。直到有一天,你觉得该换份工作了,觉得自己的项目经历足够优秀,想象着自己舌灿莲花,唬的面试官一愣一愣的场景喜不自胜… ---- 面试官:手写个基本的链表反转吧 你:额… 面试官:那你写个简单的快排算法吧 你:额… 面试官:那你写个基本的二分查找? 你:额… ---- 我相信上面的场景你或多或少遇到过,是时候了,重拾数据结构与算法; 其实相比大学时候学习数据结构与算法的一脸懵逼,工作几年后回头来看数据结构与算法,我们反而才更能体会以前觉得这都没啥用的在工作中多有用,日常开发中遇到了很多数据结构与算法的实践场景,因此反过来学习其理论和基本实现要比大学时期容易的多。事实上日常开发中数据结构与算法的影子无处不在,我们平时阅读源码的时候也会发现很多框架和中间件都会要求我们具备扎实的数据结构和算法能力,比如Lru Cache是依靠什么数据结构实现的, HashMap的底层实现原理是什么...刚开始我们可能关注的最多的是Android的硬技能,比如怎么去自定义View,研究事件传递的机制等等,对于数据结构和算法仅仅处在会用的阶段,但是如果我们想要成为一名真正的“高级工程师”,这个坎也就必须迈过去。我们常常急于求成,却忘了厉害的招式非一朝一夕所能练成。我相信提…