左耳听风_075_74_程序员练级攻略理论学科

你好,我是陈浩网名。

做耳朵house要进入专业的编程领域,算法、数据结构、网络模型,还有计算机原理。

这些计算机科学专业需要学习的理论知识啊是必须要学习的那首先呢我们来看一看数据结构和算法,那算法呢是比较难学习的,而且学习算法是需要智商的数组,还有链表哈希表、二叉树,还有排序算法等一些基础知识,对大多数人来说啊是没什么问题的。

但是一旦进入到路径规划,还有背包问题,字符串匹配,还有动态规划,还有递归遍历等等。

一些比较复杂的问题上,就会有很多人跟不上了,那不但跟不上,还会非常痛苦。

是的,解决算法问题啊,的确是可以区分人类智商的一个比较好的方式。

这也是为什么好些公司啊用算法题当面试题来找到智商比较高的程序员。

但是在很多时候啊,我们在工作中却发现根本用不。到算法,或者是一些基本的算法也没有必要实现,只需要使用一下三方库就好了。

于是呢就导致社会上出现很多算法无用论的声音。

那对此呢我想说算法是真的很重要。

我这二十年的经历告诉我,无论是做业务还是做底层系统,呃,经常都需要使用算法来处理各种各样的问题。

比如说业务上我需要用到比较两个数组中差异的布隆过滤器,或者是在做监控系统的时候,实时计算过去一分钟的p九九统计用到的蓄水池算法,或者是数据库的毕加树索引,还有linux内核中的一put的红黑树,还有在做服务调度里面的背包问题啊,都会用到算法。

那这些啊真的是会在本质上帮助到你,也是让你瞬间会产生成就感的事情。

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

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

那首先是基础知识方面,在基础知识方面啊,算法这本书是算法领域经典的参考书。

他不但全面介绍了关于算法和数据结构的必备知识,还给出了每位程序员应知应会的五十个算法,并且提供了实际的代码。

那他最不错的是他深入简出的算法介绍,让一些比较难的算法也变得容易理解。

尤其是书中对于红黑树的讲解非常精彩。

那其中呢还有大量的图解和详尽的代码和讲解,也许是最好的数据结构,入门图书。

那它不好的方面呢就是不够深入,缺乏进一步的算法设计内容啊,甚至连动态规划都没有提到。

另外呢,如果你觉得算法书比较枯燥,你可以看一看这本有趣的算法图解。

那如果说刚刚这本书偏于实践和工程,而你看完之后对算法和数据结构的兴趣更浓了。

那么你就可以再看看另一本啊,也是很经典的偏于理论方面的书叫做算法导论啊。

虽然其中的一些理论知识在算法那本书中啊有提到过,但是算法导论这本书啊更为专业一些是美国计算机科学本科生的教科书。

那还有一本叫做编程朱基的书写。

这本书的人啊是世界著名计算机科学家乔恩本特利,他被誉为影响算法发展的十位大师之一。

你可能不认识这个人,但是你知道他的学生有多厉害吗?啊,我列举几个那一个呢是TCL语言设计者约翰奥斯德奥特啊,另一个呢是java语言设计者詹姆斯高斯林,那还有一个是算法导论的作者之一,查尔斯雷斯尔森,那还有好多好多。

那这本书啊也是很经典的算法书啊,其中呢都是一些非常实际的问题。

并且用它独有的洞察力和创造力来引导读者理解并学会解决这些问题的方法,也是一本可以改善你思维方式的书。

然后呢,你就需要做一些题来训练一下自己的算法能力。

那这里啊就要推荐leaddcode这个网站了,那它是一个很不错的做算法训练的地方,现在啊也越做越好了。

那基本上来说会有这两类题。

那第一类呢是基础算法题,这其中有大量的算法题解这些题啊都是有套路的。

不是用递归,就是要用动态规划或者是折半查找,或者是回溯或者是分制法,还有大量的对数数组,还有链表字符串和哈希表的操作。

那做了这些题啊,就可以让你对这些基础的算法的思路有非常扎实的了解和训练。

那对于我来说啊,动态规划是我的短板,尤其是一些比较复杂的问题,在推导递推公式上总是有思维的缺陷。

那做了这些题之后啊,我能感觉到我在动态规划的思路上受到了很大的启发。

那第二类题目呢是编程题,比如说a to i string、 string,还有acto numbers括号匹配,还字符串、乘法、通配符匹配,还有文件路径,简化text、 justification,还有反转单词啊等等。

那这些题的add case和corner case有很多,他们都需要你想清楚了再干。

那只要你稍有疏忽啊,就会有几个case让你痛不欲生。

而且一不小心啊就会让你的代码写的又臭又长无法阅读。

那通过做这些题啊,就可以非常好的训练,你对各种情况的考虑,以及你对程序代码组织的掌控。

我觉得每个程序啊都应该花时间和精力做这些题。

因为你会从这些题中得到很大的收益。

我在立扣上做的一些题的代码,在我的gaay half上啊,可以给你一些参考。

那如果能把这些算法能力都掌握了,那么你就有很大的概率可以很容易的通过这世界上最优秀的公司的面试啊,比如说google、 amazon,还有facebook之类的公司。

那对你来说啊,如果能够进入到这些公司里面工作,那么你未来的想象空间也会大很多。

最后啊我们要知道这个世界上的数据结构和算法有很多。

那我这里啊推荐两个网站,那第一个呢是list of hgorithms.那这个网站罗列了非常多的算法啊,完全可以当成一个算法字典,或者是用来开阔眼界。

那还有一个是数据结构动画图的网站,data structure visualizations.那除了数据结构和算法相关的知识以外呢,你还需要学习一些其他的理论基础知识。

那接下来啊我要介绍的基本上都是计算机科学系的大学教材。

那如果你想有科班出身的理论基础,那这些书啊是必读的。

当然啊这些理论基础知识比较枯燥。

但我觉得如果你真的想成为一个专业的程序员,那就应该找时间读一下。

那第一本呢是数据结构与算法分析。

这本书曾被评为二十世纪顶尖的三十部计算机著作之一。

那作者mark伦anwaways在数据结构和算法分析方面有很大的成就。

那他在这些方面的著作啊非常畅销,而且广受好评,已经被世界五百多所大学用作教材。

那第二版呢是数据库系统概念,它是数据库系统方面的经典教材之一。

那国际上许多著名的大学啊,包括斯坦福大学、耶鲁大学、德克萨斯大学、康奈尔大学,还有伊利诺伊大学,还有印度理工学院等等,都采用这本书做教科书。

这本书全面介绍了数据库系统的各种知识,透彻阐释了数据库管理的基本概念。

他不仅讨论了数据库查询语言模式设计、数据仓库、数据库应用开发基于对象的数据库和XML、数据存储和查询事物管理、数据挖掘与信息检索,还有数据库系统体系结构等等方面的内容。

而且呢对性能评测标准、性能调整标准化,还有空间与地理数据和事物处理、监控等高级应用主题进行了广泛讨论。

第三本书呢是现代操作系统,这本书是操作系统领域的经典之作。

本书中集中讨论了操作系统的基本原理,包括进程线程、存储管理、文件系统、输入输出,还有死锁等等。

那同时呢它还包含了有关计算机安全、多媒体操作系统、掌上计算机操作系统,还有微内核多核处理机上的虚拟机和操作系统设计等方面的内容。

那第四本书呢是计算机网络。

那这本书啊采用了独创的自顶向下的方法啊,也就是从应用层开始沿协议站向下讲解计算机网络的基本原理。

它强调应用层范例和应用编程接口内容深入浅出,注重教学方法理论与实践相结合。

那新版中还增加了无线和移动网络一张,并扩充了对等网络。

Bgpmpls网络安全广播选录和因特网编制和转发方面的材料啊,是一本不可多得的教科书。

那第五本书啊叫做计算机程序的构造和解释。

那这本书啊也很经典,是MIT的计算机科学系的教材。

这本书中主要证实了很多程序是怎么构造出来的啊,以及程序的本质是什么。

那整本书呢主要是使用scheme和list语言,从数据抽象过程抽象迭代和高阶函数等等。

编程和控制系统复杂性的思想,到数据结构和算法,到编译器和解释器和编程语言的设计。

我推荐的第六本书是编译原理,而这本书啊又叫做龙书。

它全面深入的探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时环境目标、代码生成代码优化技术、并行性检测和过程间分析技术,并且还在相关的章节中给出了大量的实例。

与上一版相比啊,这本书进行了全面的修订,涵盖了编器开发方面的最新的进展。

那每章中啊都提供了大量的系统和参考文献。

好了,最后呢我们来总结一下今天分享的内容。

在这节课中呢,我建议想进入专业编程领域的人,一定要学习算法、数据结构、网络模型、计算机原理等理论知识。

并推荐了相应的学习素材啊,给出了我的思考和建议。

我认为啊虽然这些理论知识枯燥难学,而且通常学完了在工作中啊也并不是马上就能用上,但这些知识啊是必须要学好的。

这些理论知识啊可以说是计算机科学这门学科最精华的知识了。

认真学习,理解他们背后的逻辑和思维方式,会让你受益匪浅。

那不管是未来,你是要学习新技能,还是要解决什么疑难问题,都能在这些知识中啊获得灵感或者启发。

在下节课呢,我们将分享每个程序员都需要掌握的系统知识,敬请期待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值