本人211科班出身,目前大学临近毕业,想给迷茫的同行者或者后来人一些建议和推荐,少走弯路。想想自己被学校的一些垃圾课程和教材(部分不是全部)摧残的一度丧失学习兴趣,加上都快毕业了,给大家推荐这四年来的心得吧,分享我认为比较好的计算机科学与技术学习路线,算是我目前的全部经验。
适合读者:
- C++初学者
- 已经掌握一门编程语言&想提升编程能力的初学者
- 想学习编程基础四大件(数据结构与算法、计算机网络、操作系统与计算机组成原理、设计模式)以及linux的科班生
至于为什么要学linux,因为企业级应用都是基于linux的啊,没有熟练掌握linux的还是初级程序员(个人浅见,因为我还没有工作,但是这些经验都是有工作经验的过来人说的)。还不明白linux/Unix重要性的可以自行Google百度
网课视频推荐
推荐B站小甲鱼的C++快速入门的教学视频,讲的通俗易懂又有深度(也适合接触过C++的同学补习一遍)
书籍推荐,看书顺序由浅到深
入门级:
登堂级:
入土级:
如果说想偷个懒,快速入门C++,就学
最后多一嘴,程序员的能力提升,真的是从自主发挥主观能动性去自学开始的
因为C++设计感很强,STL是其泛型编程的杰出代表作,你学会了C++的基本语法和STL中的容器与算法,不论是以后本科的学习,还是刷oj题,还是进一步的学习,这样的基础就够了。
基础四大件包括数据结构和算法、计算机网络,计算机操作系统&计算机组成原理,设计模式
推荐一个学习顺序吧:数据结构,算法,计组,OS,计网,设计模式。
基本的概念学习之后要高强度的去刷leetcode的题目
数据结构我本科学过两遍,加上中间还上了一门叫做算法的专业选修课,体会到了什么叫做“数据结构是服务于算法的”,关于数据结构的重要性,我就不赘述了,直接上推荐
数据结构推荐书籍:
说实话,大二学完数据结构,我很快就忘的差不多了,除了觉得数据结构里面有些东西很艰深晦涩,没有发现这玩意没有什么用——直到我大三学了算法(真香),突然发现数据结构非常有魅力,很多神奇的操作,一些非常有名且巧妙的算法都是基于我们学过的数据结构,不多说了,上推荐吧
算法推荐书籍
《算法图解》 豆瓣评分8.4(算法入门书,简单易懂,但是缺乏代码实现)
《算法》第四版 豆瓣评分9.4(我本科用的就是这本,适合有数据结构基础的同学阅读,特点就是包含代码实现,用的是Java,并且这本书的内容和代码都在作者的网站上非常推荐)
《算法设计与分析基础》豆瓣评分8.7(推荐这本算法书的原因是上一本《算法》只是挑了几个经典的算法作了详细的介绍以及代码实现,而这本书包括了几乎常见的算法,内容比较全,适合进一步入门,其中算法实现采用的是伪代码)
《算法导论(原书第3版)》豆瓣评分9.2(神书,算法的百科全书,很有难度,适合ACM大佬以及相关研究方向的硕博)
找工作推荐书籍
剩下的精力去刷题,只有刷题,写具体代码而不是伪代码,才能带来真正的能力提高。这里推荐三个刷题的oj网站——leetcode(题解丰富,讨论中有很多大佬的题解),牛客网(很适合找工作),PAT(浙大研究生复试采用PAT甲级成绩,不用我过多介绍了吧)
操作系统和计组我合在一起讲,因为这两者有交叉的内容
估计有很多人像我一样本科或者自学的时候学不懂操作系统吧,或者觉得OS学起来非常空中楼阁。那么如何把操作系统学明白呢?下面这段话是我见过的最好解答
为了理解操作系统,需要学习汇编,推荐书籍
OS推荐书籍
计组和汇编就比较近了,除了涉及OS中内存管理,硬盘管理,还会涉及计算机架构,CPU原理等等
如果想偷懒,操作系统和计算机组成合起来推荐一本
TCP/IP协议栈——狭义理解
掌握原理,ARP协议,IP协议,ICMP协议,TCP/UDP协议
DNS协议,HTTP协议和HTTPS协议
推荐书籍
这里主要学习计算机网络的原理,想学习网络编程的可以看其他书籍。因为在网络方面,学通网络基本原理,再学socket编程之类的,能达到事半功倍的效果。网络编程我只会皮毛,这里我就不推荐了。大家可以自行知乎百度。(或者我以后学了再来填坑?)
有没有人和我一样没有听说过设计模式TAT,我大四才听说并且开始重视设计模式
设计模式就是编程范式,就算以后不搞开发,设计模式的学习对于大型项目还是非常有裨益的。
23种设计模式,熟练常见的:单例,工厂,代理,策略模式,模板方法即可
推荐的书籍
企业级开发,后端开发(服务端开发)都是在linux上开发的
推荐书籍
《linux鸟哥私房菜》 豆瓣评分9.1 (非常经典的linux入门书)
《linux就该这么学》豆瓣评分5.7 (比鸟哥的书新一点,但是内容可能差一点)
win下是vs,用的微软自己MS编译器
linux下是GCC,GCC掌握了其他问题不大
实际项目的编译动作叫make,编译动作过程都是写在makefile文件中
makefile要自己会写,即编译过程是自己去设计,自己去写的
企业级开发中的调试和vs中的调试不一样,尤其是C++的后台开发在linux上用的主要是GDB调试工具
推荐资料:
注意下面不是书籍,是文档,网上都有,自行Google百度,我就不附上链接了
linux系统编程
推荐书籍
本文共推荐了32本专业书籍和4份学习文档,都是我本科四年来遇到主流的、比较好的资源,有很多书我其实也没有读过,也算是自己的mark页吧,加油!
制作不易,如果觉得本文对你有帮助,欢迎点赞、收藏、分享,一键三连~(哈哈,我在想p吃)也欢迎大家积极留言评论互相讨论,我看到评论会第一时间回复的。