程序员练级攻略理论学科.pdfVIP

  • 1
  • 0
  • 约5.39千字
  • 约 5页
  • 2025-05-17 发布于北京
  • 举报

74|程序员练级攻略(2018):理论学科

2018-06-14

74|程序员练级攻略(2018):理论学科

朗读人:柴巍10′41′′|4.90M

进入专业的编程领域,算法、数据结构、网络模型、计算机原理等这样的计算机科学专业需要学习

的理论知识是必须要学习的。下面我们先来讲述数据结构和算法。

数据结构和算

算法是比较难学习的,而且学习算是需要智商的。数组、链表、哈希表、二叉树、排序算

等一些基础知识,对大多数人来说是没什么问题的。但是一旦进入到路径规划、背包问题、字符串

匹配、动态规划、递归遍历等一些比较复杂的问题上,就会让很多人跟不上了,不但跟不上,而且

还会非常痛苦。是的,解决算法问题的确是可以区分人类智商的一个比较好的方式,这也是为什么

好些公司用算法题当面试题来找到智商比较高的程序员。

然而,在很多时候,我们在工作中却发现根本用不到算法,或是一些基本的算法也没有必要实现,

只需要使用一下第的库就好了。于是,导致社会上出现很多算法无用论。

对此,说,算法真的很重要。我这20年的经历告诉我,无论是做业务还是做底层系统,经常

需要使用算法处理各种各样的问题。比如,业务上我需要用算法比较两个数组中差异的布隆过滤

器,或是在做系统时实时计算过去一分钟的P99统计时的蓄水池算法,或是数据库的B+树索

引,还有Linux内核中的epoll的树,还有在做服务调度里的背包问题等都会用算法,真的

是会本质上帮助到你,也是会让你非常有成就感的一件事。

虽然算法很难,需要智商,但我还是想鼓励你,这其中是有很多的套路是可以学习的,一旦学会这

些套路,你会受益无穷的。

这里有几本书着重推荐一下。

基础知识。《算》,是算法领域经典的参考书,不但全面介绍了关于算法和数据结构的必备知

识,还给出了每位程序员应知应会的50个算法,并提供了实际代码。最不错的是,其深入浅出

的算法介绍,让一些比较难的算法也变得容易理解,尤其是书中对树的讲解非常。其

中,还有大量的图解,详尽的代码和讲解,也许是最好的数据结构。不好的是不深,缺

乏进一步的算法设计内容,甚至连动态规划都未提及。另外,如果你觉得算法书比较枯燥的话,

你这本有趣的《算法图解》。

理论。如果说上面这本书偏于实践和工程,而你看完后,对算法和数据结构的更浓了,

那么你可以再看看另一本也是很经典的偏于理论方面的书——《算法导论》。虽然其中的一些理

论知识在《算法》那本书中也有提过,但《算法导论》这本书更为专业一些,是计算机科学

本科生的教科书。

思维改善。还有一本叫《编程珠玑》的书,写这本书的人是世界著名计算机科学家·本特利

(JonBentle),被誉为影响算法发展的十位大师之一。你可能不认识这个人,但是你知道他的

学生有多厉害吗?我例举几个,一个是Tcl语言设计者约翰·奥斯德奥特(JohnOusterhout),

另一个是Java语言设计者·林(JamesGosling),还有一个是《算法导论》作者之

一·(CharlesLeiserson),还有好多好多。这本书也是很经典的算法书,其中都

是一些非常实际的问题,并以其独有的洞察力和创造力,来读者理解并学会解决这些问题的

方法,也是一本可以改善你思维方式的书。

然后,你需要去做一些题来训练一下自己的算法能力,这里就要推荐LeetCode这个了。它是

一个很不错的做算法训练的地方。现在也越做越好了。基本上来说,这里会有两类题。

基础算法题。其中有大量的算法题,解这些题都是有套路的,不是用递归(深度优先DFS,广

度优先BFS),就是要用动态规划(DynamicProgramming),或是折半查找(Binar

Search),

文档评论(0)

1亿VIP精品文档

相关文档