别让算法和数据结构拖你职业生涯的后腿
IT行业一直流传着一句名言,“程序设计=算法+数据结构”,这是瑞士计算机科学家Niklaus Wirth于1976年出版的一本书的书名,那么数据结构与算法在程序开发中的重要性也就不言而喻了。还记得刚上大学开始学习数据结构的时候,偶然听到一位编程大佬说数据结构其实是计算机专业基础课里最难的一门,我内心是不认可的,然而后来接触更深入时我才发现是我太年轻,并且也没有意识到它的重要性。
如果说你要修一座房子,那么数据结构就是你的地基,地基不稳,如何建造高楼大厦?数据结构的一般定义是指相互之间存在着一种或多种关系的数据元素的集合,以及该集合中数据元素之间的关系组成。人可以随心所欲的交换这些数据元素,或者查找某个元素,机器可不会,机器需要你明确的指令,那么你所使用的数据结构类型以及算法的设计,就是最为关键的部分。
提到算法,算法是程序的抽象逻辑,是解决某类客观问题的数学过程,数据结构与算法是不可分割的一家人,数据结构解决了数据存储问题,而算法对数据进行处理与分析,听起来虽然是不同的学科,但它们可谓是相辅相成、互利共赢吧。在任何开发过程你都无法避免数据结构与算法,可能你想说现在开发不都是利用已封装好的类库、接口来翻译业务逻辑就好了,这的确是一个非常便捷高效的方法,然而很多第三方框架内部都用到了大量的数据结构与算法的知识,你如何高效的去利用好第三方框架、把框架的价值发挥到最大也是一个值得思考的问题,这个时候如果你擅长数据结构与算法,对于理解框架的底层原理,势必是事半功倍,并且我们也不能仅仅满足于第三方框架的使用,我想一个有追求的程序员怎能只甘心于不加思考的调用别人写好的库,不是应该拥有自己的开发思想和逻辑吗?甚至是写出更优秀的框架能够供其他开发者使用,那么对数据结构与算法的融会贯通就是你的第一步!
暂且抛开数据结构在开发过程中重要性不说,对于计算机专业的同学来说,无论考研还是找工作,数据结构真的是必备技能,这点我深有体会,可以翻一翻各个高校计算机专业研究生招生目录,大约有八成学校的初试科目或者复试科目中都包含着数据结构这门课。再去看看阿里巴巴、腾讯、百度这些国内一线互联网企业技术岗的笔试题,无论前端开发还是后端开发,里面也总是有关于数据结构的题目,在招聘工程师的面试过程中,对数据结构和算法能力的考察也都是重中之重。
现如今走在这AI时代的风口浪尖,我想很多开发者也都想来蹭蹭人工智能的热度吧。在人脸检测与图片识别等服务开发过程中,你是否考虑过图像的数据结构化是如何实现的?在强大的数据分析能力背后,你是否思考过,需要用什么样的算法对海量数据进行高效处理,提高数据存取效率?日常生活中,订餐外卖、出行导航、位置共享……定位服务无处不在,在具备强大定位能力的同时你是否思考过,如何平衡定位速度、精度及手机功耗,采用何种算法较为合适?
数据结构与算法作为程序开发的灵魂,对每一位开发者而言都至关重要。知其然,才能快速接入开放能力;知其所以然,才能懂得接口背后的原理,建立时间复杂度和空间复杂度意识,充分使用各类服务、功能,不仅让你的APP脱颖而出,甚至做出一套属于自己的高效算法!
严蔚敏老师的《数据结构》必然是经典,但不是每个人都能够对其深入理解,那么如何参透数据结构与算法的奥秘,理解其核心关键,斩获大厂offer,在这里也给大家推荐一个覃超老师数据结构与算法面试经验指导的分享,个人觉得比较实用,有兴趣的同学可以戳戳看。
链接:https://developer.huaweiuniversity.com/portal/courses/HuaweiX+CBGHWDCN041/about?source=LTkol