我认为最应该学习的前五位课程是:
数据结构与算法
操作系统
计算机网络
数据库
至少一门编程语言(C/C++、java、C#、python等)
一、数据结构与算法
这里把数据结构和算法整在了一起,其实数据结构与算法是相互独立的学科。但是二者之间关系又很密切,数据结构用于解决数据存储问题,而算法是思考如何利用存储的数据快速无误地解决问题。在解决问题的过程中,数据结构要配合算法选择最优的存储结构来存储数据,而算法也要结合数据存储的特点,用最优的策略来分析并处理数据,由此可以最高效地解决问题。
作为计算机专业最重要的必修学科之一,计算机专业考研的必考知识,以及众多 IT 公司笔、面试的侧重考点,仅仅这些光环,就足以说明学习数据结构与算法的重要性。学习数据结构需要读者有一定的空间想象能力,所以强烈建议读者在看文字资料的同时,再找一套相应的视频资料,两者结合来学习,往往会事半功倍。学习过程中一定要多动手,边学习边画图。因为,对于数据结构中的存储结构来说,尤其是树结构和图结构,存储结构确实比较复杂,仅靠空间想象难免会有纰漏,而通过亲手画图往往能避免很多“坑”。
另外,可以在leetcode和牛客网多刷题。
书
比较系统地学习数据结构的话,推荐看《大话数据结构》、《算法(第4版)》和《数据结构与算法分析》。
如果刚接触数据结构的话,可以从《算法图解》、《我的第一本算法书》入手。
网课
1、郝斌数据结构
虽然比较老,但是讲的比较详细,容易理解,对初学者非常友好。
https://www.bilibili.com/video/BV1Ut411a7rN?from=search&seid=14411767501116137153
2、数据结构-浙江大学
课程是由陈越与何钦铭共同录制,b站与慕课网都有,慕课网比较清晰一些
https://www.icourse163.org/course/ZJU-93001?from=searchPage#/info
3、数据结构与算法基础
课程由青岛大学王卓老师录制,非常适合考研,讲的题比较多。
https://www.bilibili.com/video/BV1nJ411V7bd?p=1
二、操作系统
操作系统作为最基础的计算机专业课程,可以说是对日后工作影响最大,也是面试中最常涉及的。操作系统中设计方式、算法以及解决问题的逻辑都可以应用到程序系统设计中。一些理论基础也能解决有时候所谓知其然不知其所以然的问题。
对一些以后从事后端开发方向(例如C/C++后端开发)的小伙伴而言,操作系统是必须要扎实掌握的。如果不懂操作系统,你在未来学习编程语言的高级特效,涉及到线程进程调度,多线程、锁、内存分配,或者是学习Linux相关的知识时,都会一头雾水。
书
现代操作系统(第3版)
本书是操作系统领域的经典之作,讲的全面详细,包括进程、线程、存储管理、文件系统、I/O、死锁、接口设计、多媒体、性能权衡,以及有关操作系统设计的最新趋势。不仅涵盖了现代操作系统的原理和实践,而且特别关注了Linux操作系统、Windows Vista操作系统、嵌入式操作系统、实时操作系统以及多媒体操作系统。所以也是面试笔试操作系统的宝典。
其他书籍:
《操作系统真象还原》、《30天自制操作系统》。
视频
操作系统(哈工大李治军老师)32讲(全)超清
https://www.bilibili.com/video/BV1d4411v7u7?p=1
2020 南京大学 “操作系统:设计与实现” (蒋炎岩)
https://www.bilibili.com/video/BV1N741177F5?p=1
三、计算机网络
计算机网络相关知识的在互联网校园招聘技术岗位的考察中可以说是重中之重。大家可以看下很多面经中都有计算机网络的题目。像ip, tcp/udp,http相关协议的都是高频考点。
书
TCP/IP详解 卷1:协议
堪称 TCP/IP 领域的圣经。作者 W. Richard Stevens,他从使用者(程序员)的角度,以 tcpdump 为工具,对 TCP 协议抽丝剥茧娓娓道来,让人叹服。恐怕 TCP 协议的设计者也难以讲解得如此出色,至少不会像他这么耐心细致地画几百幅收发 package 的时序图。
计算机网络:系统方法(原书第5版)
经典书籍,着重看TCP/UDP部分。
视频
计算机网络微课堂
https://www.bilibili.com/video/BV1c4411d7jb?p=1
韩立刚计算机网络 谢希仁 第7版
https://www.bilibili.com/video/BV1gV411h7r7?p=1
四、数据库
做项目几乎离不开数据库,所以数据库必须掌握,数据库也是计算机专业必须的一门功能。
书籍
见书单
网课
MySQL_基础+高级篇- 数据库 -sql -mysql教程_mysql视频_mysql入门_尚硅谷
https://www.bilibili.com/video/BV12b411K7Zu?from=search&seid=2779357081480449466
五、至少一门编程语言
必须掌握至少一门编程语言(C/C++、java、C#、python等),不论做什么项目,可定需要编程语言实现的。