恋上数据结构笔记:为什么要学习数据结构与算法

杂记2052 字

为什么要学数据结构与算法

说到数据结构相信大家的第一反应就是复杂、深奥、难学,至于大家为什么会这么觉得,我认为是没有找对学习资料,只要找对了学习资料相信大家都是可以掌握的。

另外可能会觉着数据结构与算法并不常用,一个产品从开发到上线压根就没有用到数据结构和算法,好像就算我们不懂数据结构与算法也不耽误我们完成研发任务,拿很高的薪资啊,那为什么还要学习数据结构与算法呢?

其实有一个很重要的原因就是我们要应付面试,数据结构和算法可以说是民企面试必考的内容,也就是说国内外一线的大型互联网公司,它在面试的过程中都会多多少少问一些数据结构与算法的问题,而且规模越大的公司,越注重数据结构预算法,甚至现在连一些中小型公司的面试都可能开始问算法题了。

随着时间的推移,面试的难度肯定会越来越高的,这个时候可能会觉着很奇怪,工作中根本用不到算法,那为什么面试的时候还会经常问呢?

这个时候可能会有人觉着委屈,命名研发能力很优秀,但就是因为不会数据结构预算法那大公司就进不了,被大公司拒之门外,但是它整体的综合能力可能会比大公司的一些人要强,这样的情况其实有很多。

在 2015 年 homebrew 的作者去 Google 面试却没有通过面试。

Max Howel

这是他的一条吐槽,内容大概是我们公司百分之九十的人都在用你写的工具,但是你却不能白板编程二叉树的翻转。

但是后来硅谷的大公司都在抢着要他,所以公司面试死盯着算法这一项的确是很容易会误伤很多人才,那为什么要好这么做呢?

其实无论是什么公司都想要招聘优秀的人才,但是你在短短的几个小时面试过程中想要了解一个人的话,其实是真的很困难的,所以很多公司招聘的第一步就是卡学历,因为从概率上讲高学历出现优秀人才的几率肯定会更大一点。

举个例子,一个是计算机硕士但是毫无开发经验,一个是大专学历,有三年开发经验,大公司很有可能会招聘这位硕士,因为大公司会看一个人的长期潜力,如果你不会这个技术,没关系,公司可以进行培训,花时间去培养。

除了通过学历来过滤人才,在面试的时候去考察数据结构和算法也是在短时间内考察一个人长期潜力对的一个捷径。因为数据结构算法功底扎实的程序员,技术实力、业务能力、咨询能力一般都不会差。

还有如果我们问的都是平时工作中常用的技术点,那大家的答案其实都会差不多,而且大家在面试前其实都回去背一下题目,这个时候企业无法去区分人才,算法题就不一样了,这个没法背,考验的是一个人的功底和长期积累,所以通过算法题就可以将人才进行再次区分,进而挑选出更优秀的人才。

所以大公司面试的时候考察这个数据结构和算法不是乱来的,也是有一定的道理的,如果你想要进入更大的公司,数据结构和算法是必须要掌握的。

数据结构与算法的应用

databases

我们平时用的各种数据库在底层肯定用到了数据结构,例如 B 树,hash 表等等这些数据结构,我们平时用数据库的时候直接写 SQL 语句就好了,如果你想重新开发一套数据库,那就必须要会数据结构与算法了。

这些数据库大多数都是由大公司开发出来的,所以大公司对于数据结构与算法的要求肯定会非常高的。

梦幻西游地图

这张截图来自于梦幻西游,我们的游戏人物香葱长安走到阴曹地府,这个时候你就会发现这个游戏会帮助角色规划路线,从长安出发途径建业、东海湾最后到阴曹地府。

规划路线肯定会用到图这种结构,还会用到最短路径算法,游戏开发里面肯定会存在大量的数据结构与算法。

区块链

比特币

区块链和比特币底层也会用到大量的数据结构比如说:链表、二叉树、哈希函数等。

人工智能、VR、AR、自动驾驶

人工智能、VR、AR,无人驾驶肯定是基于数据结构和算法的,可以看出来数据结构和算法可以说是无处不在。

在我们平时的开发中用不到数据结构和算法的原因是因为我们直接使用了很多第三方框架来完成任务,实际上很多第三方框架内部又用到了大量的数据结构与算法,所以如果你懂数据结构和算法的话就可以更好的去阅读这些框架的源码,也更能体会作者的设计思想,更好的使用框架,可以把框架的价值发挥到最大。

你有没有考虑过一个问题,问什么比人能够写出这么优秀的框架?

其实不仅仅是开发第三方框架需要用到算法,你的工作中其实也需要用到数据结构和算法,比如说你的用户量达到上百万,千万,上亿的时候,你要处理海量数据的时候,你怎么可能用不到数据结构算法呢?

如果你一直没用过数据结构和算法有可能你做的一直都是小项目,当你进入更大的平台,更大的用户量的时候,你肯定必然要用到数据结构与算法,所以希望大家再也不要去说数据结构不常用,数据结构没有用的话。

说直接一点,并非是用不上数据结构,而是你的层次还不够。另外计算机编程领域数据结构与算法的应用无处不在的,我们刚才举例的几个场景其实都会应用到大量的数据结构与算法,如果我们的数据结构预算法功底比较扎实的话,我觉着是可以让我们站在更高的角度去思考代码的,写出性能够高的程序。而且也能让我们更快的去上手各种新技术。

学习数据结构预算法也能够让我们打开一扇全新的大门。因为我们这样能够进入更高的编程领域。

为什么有的人学新技术那么快?

比如说人工智能,区块链一出来,很多人已经搞的很厉害了,因为他们的数据结构预算法功底扎实,学的快是很正常的。

接下来的画面可能会很扎心。

都挺好截图

随着年龄的增长,我们的学习能力,体力的确会所有下降,所以趁着脑子还没有生锈,攻克它,一次掌握,终生受益。

Pascal 之父 Nicklaus Wirth 凭借一个公式获得了图灵奖:

算法 + 数据结构 = 程序

可见数据结构与算法在编程领域有多么重要,要不他凭什么一个公式就拿到了图灵奖呢?

maksim
Maksim(一笑,吡罗),PHPer,Goper
OωO
开启隐私评论,您的评论仅作者和评论双方可见