不废话,直接上干货。首先拿到某985院校的计算机科学与技术的培养方案。拿到最精确的信息,学最重要的知识点。
易道云出品
一、学习好一门编程语言
可以参考我这个回答,这个回答有理有据,通过数据分析,用数据论证了如何选择编程语言:https://www.bilibili.com/video/BV1T84y117e3/
二、学习网络编程和网络原理
目前的互联网时代,程序基本上都离不开网络,我个人觉得了解计算机网络是必须的,在大学的课程中,基本上会开设这门课。
不知道大家有没有想过,一台计算机是怎么把数据发给另外的计算机的呢?我们可以把问题再分解一下:
1、两台计算机完全没有连接,怎么通信?
2、全世界有那么多计算机,如何识别呢?---类比到人类,用什么来识别你是一个真真正正存在的人?也就是说如何识别那台有特点的计算机呢?有人说我们可以用 mac或者 IP 来唯一标识,可是,全世界那么多计算机,有了这个IP,我们如何查询呢?难道去遍历吗?
3、多个程序同时发消息给一台计算机,计算机是如何准确把这些信息拿到,并分配给这些不同程序的呢?
4、如何处理丢失的信息?
如果说大家把这几点信息理解了,那么网络编程的原理就能理解一大半了。在这里我只是举个例子,具体我不展开了。
关于推荐书籍大家一般都推荐《计算机网络:自顶向下》、《图解http》这两本,但我看了一下,术语太多,难理解,不适合初学者。
我觉得两本就够了,尹圣雨《TCP/IP网络编程》韩国人写的,都是通过举例子,写得非常好,大概一星期就能看完了;第二本就更好了,来自于游双的《linux高性能服务器》,我就是看了这本书正式从嵌入式端转为服务器开发的。
具体怎么学?纸上学来终觉浅,绝知此事要躬行。我是把里面的demo代码一个个敲完的,收获非常大,强烈推荐。
三、学习操作系统原理
操作系统是真的难理解,所以要选择一本好的教材是非常非常重要的,我强烈推荐一本宝藏书籍,叫做《操作系统哲学》。我个人建议不要去学那些网上推荐的什么《现代操作系统》、《操作系统—精髓与设计原理》、《深入理解计算机操作系统》,我看过目录,用一个词来形容就是:枯燥无味。当我看了《操作系统哲学原理》之后,我真是太佩服这个作者了,能够把如此索然无味的操作系统写得如此有趣。
易道云出品
不得不佩服这位大佬的智慧,吐血推荐。说实话,在我毕业之前,我是完全不知道如何去理解操作系统。
四、学习数据结构与算法
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。那怎么学习数据结构??
1、记忆,记住算法思想
我觉得这个是数据结构与算法学习最基础的部分。
学完之后,你至少得能给人说明白,什么是”堆栈“,什么是”平衡二叉树“等等等吧。我之所以说”记住“,是希望这些能够形成长久记忆,存储到你的”硬盘“里,而不仅仅在学习的时候过了一遍你的”内存“。
例如,学习哈夫曼树的时候。哈夫曼树的定义:WPL(带权路径长度)最小的二叉树;哈夫曼树的特点:(1)没有度为1的结点;(2)n个叶子结点的哈夫曼树共有2n-1个结点;(3)哈夫曼树的任意非叶节点的左右子树交换后仍是哈夫曼树。关于”数据结构“,需要记忆的内容也需要自己在其中慢慢领悟。
至于”记住算法思想“,举个例子,思考我们如何构造一个”哈夫曼树“。当然,在知道它的定义后,我们可以自己去设计一个算法。如果,自己可以想出来,恭喜你。如果自己没想到,再看看先人的解决办法后,不是仅仅“惊叹”一声,更要去记住它。我强调“记住”,并没有死记硬背的意思,而是,很多东西的理解和创新都是以记忆为前提的。
2、练习,用编程语言去实现某一数据结构上的算法
因为人的精力有限,千万不要贪多,只需要搞定那些常见的就行了,这就足以去搞定90%以上的公司,如果是算法岗位就当我没说,如果只是一个开发岗位,那就只需要掌握最常用、最基础的20个数据结构与算法,学习他们的“来历”、“特点”、“适合解决什么问题”和“实际的应用场景”。
数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Tire树
算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。具体分为3个小步骤:
(1)边学边练,每周花 1~2 小时集中攻关一个数据结构和算法,全部写出来。
(2) 多思考、多拓展、多理解,找到适合的方法去解决问题。
(3)自我激励,每次学习完做一篇学习笔记。
吐血推荐书籍:程杰老师的《大话数据结构》
易道云出品
五、学习设计模式
设计模式是在软件工程实践过程中,软件开发者们总结出的良好的编程方法,使用设计模式能够增加系统的健壮性,易修改性和可扩展性,当你进行开发的软件规模比较大的时候,良好的设计模式会给编程带来便利,让系统更加稳定。
怎么学习设计模式??
1、记忆,记住典型案例
2、看一些开源代码,比如redis;
3、练习,用编程语言去实现一些设计模式;
4、吐血推荐书籍:程杰老师的《大话设计模式》
易道云出品
非常非常好的设计模式的入门书。基本上也把每个设计模式讲清楚了。国内很多教材和教师讲述专业知识都是很枯燥的,就因如此才把很多初学者拒之门外,让一部分人丧失了学习兴趣。而这本书则类似于少数名师一样,采用交互式及启发式的讲述方式,在不知不觉中向读者传授了知识。有些人倾向于像专业论文一般严谨的表述方式,但如此以来在理解上就要多花一些工夫了。就目前而言,像这本书一样,以大家所熟知的例子来描述问题,步步深入,具有中国特色风格的书,才是我们更加需要的。把这些设计模式读进去了,那么你对编程的理解就会更上一层楼。