如何高效学习《数据结构》以备战名企算法面试?

发表时间: 2021-07-11 18:11

如你是计算机科学与技术、网络工程、软件工程、信息安全、嵌入式开发等计算机专业,《数据结构》是必修课。

很多人会觉得这门课程很难,而且觉得没什么用,包括毕业多年的同学,因为在工作中使用得少,也会觉得没什么用。

其实这种理解是错误的。

这门课程的确很难,难在要用代码把算法实现出来并在计算机上运行出来。

但是也正因为它难,所以很重要,难的东西才稀缺,因为稀缺才变得更可贵。

所以现在大部分互联网大厂不管你是什么职位,只要和编程相关,笔试面试都会考算法和数据结构,比如说字节跳动,算法是必考的,算法不过基本上不可能拿到Offer。

为什么数据结构很有用?

举个例子,比如盖房子,我们都知道盖一栋房子没那么简单,不止要砌砖,刷墙等这些表面的东西。钢筋水泥如何铺设,格局如何设计,如何用料,用多少?这些都很重要,房屋建筑基础不好,质量肯定不过关,所以才会有工程造价这个专业。

写代码开发软件,就像盖一栋房子,你需要知道数据如何存放,如何查找,计算机才能更高效地执行你的程序,如果代码写的不好,数据组织的不好,开发出来的软件会启动很慢或者运行很消耗内存,导致计算机很卡,严重会导致软件崩溃,计算机死机等等。

比如盖一栋房子,用料不好,基础设计不好,偷工减料,质量不过关,轻微的一个地震就可以把房子震塌下来,这是一场灾难。

假如你在开发一款银行的APP,如果设计的算法不好,用户查询一笔账单的时候因为数据量巨大,导致查询缓慢,半天没有反应,这样的APP用户体验会好吗?

又比如,你在开发一款火箭发射的控制系统,如果你的代码写得不好,运行后导致软件崩溃,计算机死机,那将会是一场灾难。

如何学好数据结构?

说了这么多重要性,那么我们该如何把这门课程学好呢?

一、首先预习很重要

我们从小学到高中都知道学习一门新知识,需要提前预习,为什么到大学就忘记了呢?

预习是提前了解陌生的知识,让你在上课时不会觉得这个知识那么陌生,也比较容易听懂老师讲的东西,不容易走神。

预习第一次看,看不懂,那再正常不过了,大家都是普通人,也不是什么天才、神童。

正因为你看不懂,所以才要预习。你能看懂,那还预习啥,不上课都可以了。看不懂,当你带着问题去听老师讲课后,印象更加深刻,还可以在课堂上及时提问。

二、认真听课很重要

如果你看不懂,那就认真听老师讲课,不懂得及时问老师,搞清楚原理,才能把代码写出来。

当然有些老师可能自己懂,但是很难把这些东西讲出来让你也听懂,如果存在这种情况的同学,我建议去网上找名校名师的课程去学习,网络上有很多名校都有公开的数据结构课程视频,如清华大学,浙江大学等。

三、复习很重要

数据结构这么门课,你光听课,是不够的,如果课后不复习是很容易忘记的,因为它知识点非常多,技巧性也很强,需要很强的理解能力去理解和记忆。

可能上课时听懂了,但是到下课时就已经忘记了,所以建议计算机专业的学生要定期复习这些算法。

四、上机实践最重要

前面几个步骤都可以没有,但是这个步骤没有,小馆敢肯定你学不会数据结构。

不管是在书上,还是在课堂上,数据结构上的算法实现都是伪代码,并没有完整地实现代码,这些伪代码只是让你理解算法原理的并不能直接应用于实际开发中,还需要你去完善它。

所以,当你学会一门编程语言后,必须把数据结构课程上的每一个伪代码用编程语言在计算机上实现并运行一遍。

当然,第一次写代码很困难,因为你不知道该如何下手,万事开头难,只要你开始了,就成功了一半。

第一次写不出来没关系,可以先看别人的代码,网上非常多优秀的代码,你可以先在编辑器上手打着抄一遍,记住一定是自己手打,不能复制粘贴,复制粘贴是没有意义的,因为只有自己一个一个字符打出来,你才能感受到写代码的乐趣,才能发现问题

小馆敢肯定,你第一次抄代码,肯定会有语法错误,导致编译器运行不通过,这个时候就是锻炼你的调试能力了。

一般的编辑器都会提示你哪一行有语法错误,这个时候就知道去哪一行寻找并对照正确的程序改一遍。

如果你是直接复制粘贴,一般是不会有语法错误,这样也就锻炼不了你敲代码和调试代码的能力。

当你抄完几次代码之后,就可以开始模仿着写代码了,比如换一种解法看看能不能实现,如数学,通常一道题目都有多种解答方法,算法也一样,每种解法都有优劣。

然后你就可以开始尝试的,不看答案,自己一个个代码写出来,如何不行那就继续看着写,直到你可以不看答案写出来为止

最后,当你可以不看代码实现出来之后,就可以把书上的题目都实现一遍,然后继续研究其他解法,并比较他们之间算法的时间复杂度和空间复杂度。

五、把数据结构与算法应用到实践应用中

最后一步,就是把你所学,应用到实际项目中,比如参加一些比赛,或者是组织几个同学一起开发一个软件、网站、游戏,在开发过程中肯定会遇到数据的组织、存储读取、查找、排序等等这些问题,这个时候你就可以判断需要使用数据结构中的哪一种算法去解决。

这个过程就是一种巩固,进阶,提升的过程。

相信,经过以上步骤,你的数据结构一定能够学好,再也不用担心以后毕业找工作的问题了,面试进大厂So easy。

欢迎关注我,学习更多计算机知识。