【字幕】恋上数据结构与算法之01为什么要学习数据结构与算法

视频地址:请查看01为什么要学习数据结构与算法_哔哩哔哩_bilibili

同志们好,我是小码哥的mj李明杰。非常欢迎大家来学习链上数据结构与算法,从今天开始呢就由我来带大家一起来学习和掌握这个数据结构与算法啊。在正式学习之前我们先来看一下学前须知啊,首先第一个我们要了解一下我们为什么要学习数据结构与算法啊,然后我们这个课程呢又是采取什么编程语言来讲解呢?然后再介绍一下课程大纲和注意事项,最后再说一个关于课程的一个选择问题啊。

首先我们来看第一个问题,我们为什么要学习数据结构与算法呢?那说到这个数据结构算法,大家对它的第一印象可能是怎么样呢?可能是觉得它复杂深奥难学,其实之所以会这么认为呢,我觉得主要是因为没有找到适合自己的学习资料,对吧?其实任何知识点只要找对的学习资料和学习方法,我觉得都是可以学习和掌握的啊。

另外同学们也可能会觉得这个东西呢不常用,啊,因为在平时的开发过程中啊,好像不怎么用到数据结构算法对吧?比如说一个产品从开发到上线的过程中,好像压根就没有用到数据结构算法啊,好像我们不懂这个数据结构跟算法,也能出色地完成平时公司给我安排的任务啊,也能照样拿高薪啊对吧?

那么我为什么还要学习数据结构算法呢?其实有一个很重要的原因,那就是为了应对面试。

数据结构算法可以说是民企面试必考啊,也就是说国内外一线的啊大型互联网公司,他在面试的过程中多多少少都会问一些数据结构算法的这个题目啊,而且是规模越大的公司呢,它就越注重这个数据结构算法,甚至现在连中小型公司的面试啊都可能开始问什么呢?算法题了。

其实不管什么行业吧,为了筛选出更优秀的人才,随着这个时间的推移,那这个面试的难度肯定是会越来越高的啊。

那说到这里同学们可能会觉得很奇怪,唉平时工作中呢我们根本就好像用不到数据结构算法,那为什么面试的时候还会经常问呢?这不是很搞笑吗?甚至呢可能会觉得不公平,甚至觉得这种方法会误伤人才啊。

比如说有些人开发基金至少5年了,那技术实力呢业务能力的学习能力其实都很强,那公司给他安排任务呢他也能很出色的完成,但可能仅仅是因为他不会数据结构算法,那大公司就进不了对吧?

被大公司拒之门外,但其实呢它整体的综合能力可能会比大公司的一些人还要强,那这样的情况其实有很多,比如2015年home blue的作者去Google面试home,blue这个工具,相信很多同学应该都听过home blue是MAC平台的安装包管理工具,可以说全世界大大小小互联网公司的程序员都可能在用这个工具,那这个足以说明后不如作者的技术实力了吧对吧?

那肯定是很有实力的一个人,但是他却被Google拒绝了。

当时呢他就发了一条Twitter来吐槽,啊那这个图片就是他Twitter的这个内容上面写的什么意思呢?Google说我们90%的工程师都在使用,你写的碰不入,但是呢你却不能白板编成一个二叉树的翻转,所以请滚蛋吧,也就是说因为他没法手写一个二叉树的翻转,那这个时候Google就把他给拒绝了。

不过后来呢啊很多硅谷的大公司都抢着要他,所以啊大公司面试如果着重考察数据结构算法的话,确实会误伤一些人才,那为什么还要这么做呢?其实不管是哪个公司肯定都想招聘优秀的人才嘛,但是你在短短的几个小时的面试过程中,你想了解清楚一个人的话其实是真的非常困难的。

所以很多大公司招聘的第一步呢就是卡学历,比如说要求本科,要求硕士甚至是博士,因为从概率上讲,那高学历出现优秀人才的几率肯定也会大一点嘛,对吧?比如举个例子,一个是计算机硕士,他呢毫无开发经验,一个呢是大专学历,有至少三年开发经验,那这个大公司呢就很有可能会选择招聘这位硕士啊,因为大公司呢很多时候更看重的是一个人的长期潜力啊,就是长期的一个潜力。

如果你不会这个技术没有开发经验不要紧,他可以培训你,他愿意花时间培养你,除了通过学历来固定人才呢,那在面试的时候去考察这个数据结构跟算法,其实也是在短时间内考察一个人长期潜力的一个捷径,因为数据结构算法功底扎实的程序员技术实力、业务能力、自学能力一般都不会差。

还有如果我们问的都是平时工作中常用的技术点,那大家的答案其实都差不多,而且很多时候大家在面试前都会去背一些题目对吧?把这个题目背下来,那这样大家的答案都差不多,你怎么去区分这些人才呢?那算法题就不一样了,那这个没法背啊对吧?因为算法题的这个范围可大了,对不对?而且这考验的是一个人的功底和长期积累,所以通过算法题呢就可以将这个人才啊进行再次的这个区分,进而挑选出更优秀的人才嘛,所以大公司面试的时候考察这个数据结构跟算法不是乱来的,也是有一定的道理的。

总而言之呢如果你想进入更大的公司,数据结构算法肯定是你必须要掌握的。

那接下来我们再看一下数据结构和算法究竟用在什么地方,这个是什么东西啊?这个数据库对吧?比如说平时你用这个oracle,my sql,sqlite,不管是哪个数据库,它的底层肯定都用到数据结构了,比如说用到b树,用到哈希表等等这些数据结构。

唉大家可能会想平时我在用数据库的过程中,好像也没有用到数据结构算法,对,平时我们用数据库是不是直接用SQL语句就好了?如果你是想重新开发一套数据库,那必须要会数据结构跟算法了,对吧?而我们平时用的这些数据库绝大部分都是由大公司开发出来的,对吧?

所以大公司对数据结构算法的要求肯定是非常非常高的。

然后再来看一个应用啊,这个是一款游戏叫做梦幻西游,很多同学可能玩过啊,你看这是一幅地图,然后这个主人公呢想从这个长安城走到这个阴曹地府,对吧?那这个时候你会发现这个游戏就会帮他规划这个路线,从这个位置先走到这里,然后再走到这里,然后再走到这里对吧?帮他规划好这个路线了,那规划路线这种东西肯定也用到一些数据结构,比如说图对吧?

图这种结构,然后也用了一些算法,比如说最短路径算法,游戏开发里面肯定也是用到大量的数据结构跟算法的,然后这是什么呢?Block chain前阵子比较火的一个东西,区块链啊那这个是比特币,那区块链跟比特币它底层也是用到大量的数据结构,比如说用到了链表、二叉树、哈希函数等,然后人工智能arvr然后无人驾驶这些东西肯定都是基于数据结构跟算法的。

可以看出来数据结构跟算法真的是无处不在啊。

最后我们再总结一下啊,一开始我们提到唉在平时的开发过程中好像不怎么用到数据结构算法,其实是因为我们的很多开发任务呢都是直接使用各种第三方框架来完成的,实际上呢很多第三方框架内部呢又用到了大量的数据结构跟算法,所以啊如果啊你懂数据结构算法的话,那你就能更好的去阅读这些框架的源码,也能更能体会这些作者的设计思想,也能更好的让你使用框架对吧?

可以把这个框架的价值呢发挥到最大,而且你有没有思考过,为什么别人就能写出这么优秀的这个框架呢?其实不仅仅是开发第三方框架的时候要用到数据结构算法,你的工作过程中其实也是有可能要用到数据结构算法的。

比如说当你的用户量大到一定程度,比如说上百万上千万上亿用户的时候,这个时候你就要面临处理上百万上千万上亿条数据对吧?当你处理这些海量数据的时候,你怎么可能不用到数据结构算法呢?如果你是一直都没用过数据结构算法,有可能你做的一直都是小项目,当你进入更大的平台,更大的公司面对更多的这个用户量的时候,你肯定必然要用到数据结构算法,所以希望同学们以后再也不要去说数据结构不常用,数据结构没有用,这样的话说直接一点其实并非是用不上数据结构算法,而是你自己的层次还不够。

另外在计算机编程领域呢刚刚也说到数据结构跟算法的应用是无处不在的,比如说图像视频处理,数据库游戏开发、编译器、搜索引擎、arvr人工智能区块链,这些其实都用了大量的数据结构跟算法,如果我们的数据结构算法功底比较扎实的话,我觉得是能让我们站在更高的角度去思考代码的写出性能更高的这个程序,而且也能让我们更快速的去学习上手各种新技术,比如说刚刚提到的人工智能区块链,而且我觉得也能让我们打开一扇全新的大门,因为这样呢我们能进入更高级的编程领域,对不对?

那为什么有些人学新技术这么快呢?比如说这个区块链人工智能一出来很多人就已经嗯搞得很厉害的是吧?很精通了,那人家的数据结构算法功底比较扎实嘛,那学的快也是很正常的。

那今天呢我刚好又在朋友圈看到一个比较扎心的视频啊可以给同学们看一下,虽然它是个电视剧,但我觉得说的也是挺有道理的,那这个就是现实嘛,作为一个程序员,你的年龄已经很大了,我问你你学新东西有年轻人快吗?再说以你的性格又做不了管理层,我的怎么样是不是很扎心啊?

我看了,我觉得这个视频真的是很扎心哈,确实随着年龄的增长的话,我们的学习能力体力确实会有所下降,我自己现在都感觉真的是熬夜真的是熬不动了,所以我觉得真的是不要在应该努力奋斗的年纪啊选择安逸对吧?

我们学习跟积累其实都得趁早啊,而且只要你想在it路上走得更远,站得更高的话,我觉得数据结构跟算法肯定是必须要掌握的,既然迟早都要学到,那为何不从现在开始学呢?对不对?趁我们现在脑子还很灵活对吧?趁趁我们现在这个学习能力还跟得上,我觉得就把它给攻克嘛对吧?

从现在开始,而且我觉得这他真的是那种一次掌握终身受益的这个技术,比如说这这项技术肯定是伴随着我们整个程序员生涯了,而且都是有用的。

最后呢再给大家说一个小知识啊,这个Pascal这个编程语言可能很多同学听过啊,Pascal之父Nicklaus Wirth呢他曾经凭借一个公式就获得了这个图灵奖,什么是图灵奖?

图灵奖是算是计算机领域的这个诺贝尔奖啊,那什么公式呢?这个公式大家可能看过,算法加数据结构等于程序,可见算法跟数据结构确实非常非常的关键,对吧?凭借这么一个公式就拿到了这个图灵奖。

最后呢我再说一点题外话啊,其实早在2015年的时候,我就想推出这一类的课程了,但是因为种种原因呢一直没有推出啊。

就据我了解呢,其实国内的很多开发人员呢其实都是半路出家,也就是并非是计算机专业出身的,所以很多计算机基础课呢可能都没有学习过,比如说数据结构算法对吧?但是他们的技术实力呢学习能力呢我觉得是一点都不比计算机专业的差的,也可以把这个代码写得很好,也可以把这个这个项目做得很优秀。如果因为卡在数据结构算法导致不能进入更大的公司的话,我觉得还是挺可惜的,所以所以一直很想推出这个课程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值