算法到底应该怎么学?IIT在读学长来说说自己的看法

罗同学是伊利诺伊理工大学软件工程硕士在读学员,目前是成都某通信公司测试主管,行业经验丰富,本文约稿自罗同学,未经许可,禁止转载

作为一名非科班出生的从业者,试着来说说自己对学习算法的看法:

1.Why——为什么要学习算法?

李开复曾经把基础课程比拟为“内功”,把新的语言、技术、标准比拟为“外功”。整天赶时髦的人最后只懂得招式,没有深厚功力,是不可能成为高手的

真正学懂计算机的人,既能用科学家的严谨思维来求证,也能用工程师的务实手段来解决问题,而这种思维和手段的最佳演绎就是“算法”。

现在互联网公司面试的时候多多少少都会问到算法,但是考算法,重点不在考,而是考察和验证一个人是否聪明,是否基本功扎实,是否能够顺畅沟通,是否能够快速反应和学习。

比如,面试官可能会问是否知道一些常见的排序算法,那不管是在学校,还是在工作中,都应该可能涉及到。如果一无所知,有很大的概率就无法通过面试。

算法到底应该怎么学?IIT在读学长来说说自己的看法

我个人认为学习算法一个重要的目的是培养我们解决问题的思路,遇到类似的问题能够类比去解决,或者自己能够分析出解决方案。

比如实现一个网络爬虫,爬取页面中的网页链接,然后再去爬取这些链接对应的网页内容,这里我们就会遇到一个问题,同一个网页链接可能包含在多个页面中,这样就导致会重复爬取相同内容,我们最可能想到的就是记录已经爬取过的链接,在每次爬取前先去我们预先设计好的数据结构中查询。

如果存在则表明该网页已经被爬取过,当然这个问题有很多满足这种条件的动态数据结构,但是考虑到数据量,带来的内存消耗是否可以接收呢?

这个问题就是典型需要通过算法来优化的案例,大家可以思考一下,让你来设计这个算法你会怎么来做?

2.What——学习算法有什么作用?

可能很多人会有这样的疑问,算法学习了有什么用,可能工作中一辈子都用不上,就算能用上,常用的算法都有对应的库和包,直接调用就行了。

确实是这样,在实际工作中我们所接触更多是对业务逻辑的理解,开发语言特性的了解,设计模式,代码风格的把握,各种同步异步的处理,代码测试、部署等等。

需要设计甚至实现一个算法的机会确实很少,即使用到,现学可能都来得及,但是对基本算法了解的好处可能在于,当一段代码包含一些基本算法的思想,你可以更快对其理解,读到一段烂代码,你能够知道为什么烂,如何去优化。

算法到底应该怎么学?IIT在读学长来说说自己的看法

当真的需要有一些算法设计在程序里面的时候,对基本算法的掌握会让你更有可能给出一个完备的解决方案,对每种程序中出现的算法或比较复杂的逻辑时间复杂度等你会更有敏感性。

熟悉算法你还可以成为一个更优秀的面试官,还可以和别的程序员聊天时候不被鄙视。

3.How——怎么学习算法?

算法有很多经典的书籍,但这些书籍都是劝退杀手,比如经典的算法导论等等,这些书本身是非常经典非常好的,但对于小白来说太难理解了

初学者学习算法最好的方式就是跟着视频学,现在互联网如此发达,在B站或者YouTube都能找到很多资源。

视频学完后,就可以开始啃书和刷题了,当然在啃书过程中得带着问题去啃,有目标的去阅读和突破,不建议上来就从头啃到尾,另外啃书过程中配合刷题,刷题最著名的就是LeetCode,可以从简单的难度刷起,逐步到最难等级。

视频、啃书和刷题都搞定后,还想继续提高就可以考虑参加算法比赛了,比如蓝桥杯,ACM,LeetCode周赛等等。

以上对学习算法的观点仅限本人,不喜勿喷,感激不尽。

彼岸教育连接全球优质资源,与多所海外名校合作,让好学者有更适合的学位项目,让奋斗者向目标更进一步。

伊利诺伊理工大学作为全美前十理工强校,在线硕士项目覆盖人工智能、计算机科学、软件工程、电气与计算机等多个热门专业。

文章标题《算法到底应该怎么学?IIT在读学长来说说自己的看法》,转载请注明出处。如有错误或侵权,请联系zuoyan.li@beaconedu.com调整或删除。

进击的跃跃的头像进击的跃跃
Previous 2022年8月18日 下午3:24
Next 2022年8月22日 下午7:50

相关推荐