先自报家门,答主是经历了“二战”后,20考研我一志愿初试、复试的排名均为前5%,最后我以前5%的综合排名成绩成功上岸兰州大学计算机专业。
今天,我就把自己备考计算机的经验分享给大家,希望大家少踩点坑,如果耐心看完我的回答,相信一定会有所收获!
一、计算机各科目考试重点
考研计算机难度是很大的,对于跨专业的考生来说难度就更大了,计算机基础综合题的难度系数并不算高,但是在短短半年时间复习数一、政治、英语,外加计算机的四门课程,时间实在是太少了,尤其对第一年考研的来说,时间非常紧张。
所以,对于应届生来说,尤其是跨专业的应届生,一定要尽早准备,越早越好,保证足够的复习时间是成功的首要条件。
我当初“二战”时,是下定决心必须要上岸成功。当时花了钱报了班,一方面是为了解决我当初“一战”备考学习时留下的问题;二是为了更加刺激自己,毕竟花了钱,再怎么也要对得起自己的付出。
由于兰州大学计算机是自主命题的,老师通过惊呼帮我找了一位兰州大学计算机专业的研究生学长。一些很基础的知识对于外行来说很难,对于科班生却很简单,并且他们可以以简单易懂的方式讲清楚。辅导我的直系学长非常有耐心,他帮我划了重点,给我列了一个复习提纲。另外,学长还有齐全的往年真题,也一并给我了,真的太感谢学长了!
下面是我根据学长以及我自己当初备考复习时所总结的重点,大家可以弄清楚重难点,进行有针对性的复习。
数据结构是一门比较抽象的学科。光论知识点的话,其实数据结构并不难理解,但之所以很多人头疼主要是算法设计比较难。
大家也不要有心理压力,这里有两点原因。
第一点:虽然算法难,但是数据结构本身不难,只有学好数据结构,学算法才会比较轻松。
第二点:算法确实很难,做题也确实很痛苦,我们要做的就是记住什么问题用什么方法解决,吃一堑长一智就足够了。
第一章,基础知识,重点就是学会计算时间/空间复杂度。
第二章,第三章分别是线性表,栈,队列,是最基本的数据结构,知识点并不难理解。这三章最重要的就是多看看相关的算法题就行。
第四章,树与二叉树。这章着重应该掌握递归的编程思维,同时关于各种树的根,叶子特性都应该牢记于心。其中二叉排序树,B树等可以等到看完第六章(查找),第七章(排序)之后再回过头来看。
第五章,图。概念很多,但是最应该掌握的应该是图的各种存储方式,图的遍历方法以及生成树原理。至于AOV,AOE网则根据往年考题来决定是否需要花功夫来琢磨。
第六章,第七章分别是查找和排序。除了B树,B树之外的知识点,相对前面的章节而言比较简单,多是一些概念性和模式化的东西,并不难掌握。多记就行。
Part02:计算机组成原理
计算机组成原理应该是计算机所有专业课里边最难的一门。主要难于知识点比较抽象,学完之后很难对书中的知识有个清晰的理解。
同时,计算机组成原理不仅各个章节之间关联性比较强可以考察许多综合题,还可以与计算机网络以及操作系统一起考察,这就导致有些计算机组成原理的题非常复杂。
但是大家学的时候还是不要有太大的心理负担,毕竟能考察的知识就这么多。
只要把唐朔飞《计算机组成原理》这本配套的学习指导和习题解答搞定,最后再做完王道或者天勤的复习书,组成原理基本上就没什么问题了。
第一章,计算机系统概论。都是概念性知识,不难。根据报考院校历年真题是否考察这章来决定是否需要背诵这章的知识点。
第二章,运算方法和运算器。对很多人来说是巨难的一章,前期可以不用看,等到其他章节都看完之后再来看。重点难点都一样,就是数据的各种存储方式以及加减法运算。
第三章,内部存储器。从这章开始,知识点开始密集,并且和其他章节其他科目都能有所关联,一定要重点掌握。重难点在于清晰理解内部存储器的结构,各个结构之间的关联,存储器设计以及Cache相关的运算。
第四章,指令系统。单考比较简单,但是结合其他知识点一起考察就比较难。重点是各种指令的结构以及各种寻址方式。
第五章,中央处理器。计算机组成原理的又一波高潮知识点,知识点多也杂。和第四章关联非常密切,常常一块出题,需要花费大量精力去熟练掌握。重难点在于控制器的结构,指令执行步骤以及流水线相关的计算题。
第六章,总线系统。从这张开始,难度开始缓和,主要难点在于总线仲裁方式,其他都是概念性知识,背背就好。
第七章,输入输出系统,都是概念,同第一章不再赘述。
操作系统应该是计算机所有专业课里边复习起来最舒服的一门。因为操作系统每个章节的知识都具有逻辑性很好理解。同时每个章节之间低耦合性很低,学习起来不会觉得知识点杂乱。
综合以上几点原因,操作系统是我最推荐大家先开始复习的专业课(如果考的话)。操作系统的重点内容比较集中,难点也比较少,所以复习起来还是很容易的,只要有针对性的做一些练习就好了。
第一章,计算机系统概述。这一章都是基础性的知识点,绝大多数情况下都是考察名词解释题。
第二章,进程管理。这一章是热门的考点,几乎必考无疑。其中进程的互斥和同步是最难也是最爱考的考点。另外,还有进程的调度也非常重要,这块内容可以出的很难也可以出的很简单。所以大家掌握这块内容的时候不要有侥幸的心理,一点要把所有的题型都掌握了。同时,进程的概念,死锁的概念,这些都非常重要,一定要记下来。
第三章,内存管理。全章共两节也都非常重要,其中内存管理考察的题目不会难到哪里去,做题的时候只要注意好细节就没有太大问题。第二节的知识很综合,可以联合计算机组成原理一起考察,难度非常大。因此,前期主要掌握基础知识即可,到后期复习完计算机组成原理之后,需要再回过头来好好整合一下。
第四章,文件管理。知识点比较多的一章,但是题目难度都不大。主要的重点是磁盘调度算法。这块多做题就行了,不用太担心。
第五章,输入输出管理。全章都是概念性的知识,和计算机组成原理有一些关联,但是题目难度不大。唯一有难度的知识点就是缓冲区相关的考题,但是这部分内容,做几道题,自己推导推导公式,问题也不大。
计算机网络这门课程并不难,只是知识点多而杂。
因此想要学好计算机网络更多的是靠记背,而不是解题技巧。
第一章,计算机网络体系结构。总领全书所有知识点的章节,推荐大家好好看看,会有利于大家吸收后面的知识。重点掌握ISO/TCP协议的参考模型以及模型各层的功能。
第二章,物理层。知识点比较简单,重点掌握各种物理层的通讯技术,通信设备及其优缺点。
第三章,数据链路层。难度较大的一章,建议多看看。重点是流量控制机制,差错控制机制以及局域网协议(IEEE 802.3/802.11)
第四章,网络层。计算机网络中难度最大的一章。重点掌握拥塞控制方法,IPV4/IPV6协议以及路由器的工作原理。
第五章,传输层。计算机网络中最重要的考点。重点掌握TCP,UDP协议的格式及工作原理。
第六章,应用层。概念性知识,没有难度,记住即可。
弄清楚了计算机的重难点,我就给大家分享一下改如何去着手进行复习。
回顾往年的考题,圈定分数占比大的重点知识。着重复习这些重点以掌握试题的脉络结构。这样做,前期不仅复习的会很快,同时也保证了自己专业课能拿到大部分的分数,从而让自己后期复习的时候比较安心不会慌。
根据考研大纲,无死角扫过涵盖的所有知识点,并且把建议参考用书的课后题都给做一遍。
目标院校的考研群或者淘宝店,一般都会出售考研相关的资料(历年考题以及题库)。这个时候就挑选合适的考研教材进行购买,然后就是一遍又一遍地刷题。当时,我的辅导学长直接把他之前整理好的电子版真题发给我,省去了我很多时间。
是一门说难也难,说不难也不难的科目,这个主要取决于目标院校的考察风格。
以兰大为例,每年的数据结构(50分)几乎都是送分题。题目都是很基础的题,例如万年不变的名词解释,二叉树/树的互转,按图写链式存储以及按图画生成树路径等。
但是反观408的话,数据结构考察的就比较难,着重考察栈,队列,树的结构以及算法设计。
所以针对数据结构,复习建议很简单,就是按照报考院校的历年真题来进行准备。
Part02:计算机组成原理
由于计算机组成原理各个章节之间联系比较紧密,因此很多时候考察的题目就比较复杂综合。
这就要求大家熟练掌握各个章节的重点知识,因为只有牢固掌握了重点知识,在面对复杂题目的时候你才能做到逐步拆解,各个击破。
前期可以作为其他课程学习之余的消遣,权当做一种科普就行。
到后期的时候,借着前期看的零星知识,也就可以很快的将知识串联,从而摸清知识脉络。
另外,看计算机网络的时候推荐大家一定要勾勾画画,一遍做题一遍在知识点上做补充,这样后面复习的时候就不用翻来翻去了,能节省很多的时间。示例如下:
操作系统的知识点学起来比较轻松,但是做题还是需要一些技巧以及注意一些细节的。
因此大家学习操作系统还是应该以多做题多总结为主。下图就是根据学长的讲解总结出来的笔记。
三、计算机复习参考书目推荐
关于计算机参考书目的推荐,我将从教材和教辅两方面进行推荐。这些都是我当初备考时,学长推荐给我的资料,也很适合我个人的学习情况。
教材:一般都是使用严蔚敏的《数据结构》,很多学校也将这本教材作为大学本科教材。
唐朔飞的《计算机组成原理》和配套的学习指导与习题解答;电子科大出版社的《计算机组成原理考研辅导教程》
汤子瀛的《计算机操作系统》、电子科大出版社的《操作系统考研辅导教程》、清华大学出版社、曾平的《操作系统习题与解析》。
谢希仁的《计算机网络》和清华大学出版社,鲁士文的《计算机网络习题与解析》。
想必参加计算机考研的人都会知道天勤以及王道这两种教辅。
天勤的视频,通俗易懂,花式讲解书上的知识点,因此对于抽象类的知识讲解,例如数据结构就比较适合看天勤。
王道是讲解知识比较正统,讲的东西相比天勤会更加的综合,因此对于知识点比较死的科目,例如计算机组成原理,计算机网络,操作系统这3门课就比较推荐大家看王道。
当初我在看视频网课的时候,也会遇到一些不懂的问题。以前“一战”的时候,看网课真的最头疼的问题就是,老师讲的一些知识点和例题自己听了几遍都听不懂,但是又不知道问谁,所以导致我累积的问题到了后期越来越多,知识掌握不牢固,做起题来真的很费力。
后来“二战”报班后,我遇到问题就会直接问辅导我的学长,他会通过做题演示,以及给我讲解他的解题思路,直到我搞懂为止,这确实帮了我不少。
关于公共课政治、英语、数学的复习方法我在这里就不作过多的描述,大家如果有需要参考的可以看我这篇回答,里面有写到我一些公共课的复习方法。
总之,考研不是件容易的事情,计算机考研更要做好心理准备,当你定好自己的目标后,就行动起来。经验贴看几篇就够了,毕竟都是别人的学习思路和方法,要自己真正学会去运用,去刷题才会明白自己的强弱。
行动,是成功极其重要的一步。看到这了,就赶快动起来。祝愿大家都能够顺利上岸!
今年刚从 985 毕业的老学长说下吧,毕竟在计算机专业摸索了 7 年。
自学计算机主要做好下面两点:
其实学习能力、团队协作能力、学历也会有一部分考量因素,但在这两个前提条件稳的基础上,其余的条件都会被弱化。
万年自学党了,直接说下学习路线吧:
计算机专业导论是面向非计算机专业人员和学生介绍计算机基础知识的计算机基础教程。
内容涉及计算机应用,Internet,与计算机交互,音频、视频和打印,数据处理,存储数据,操作系统,应用软件,网络,在线世界,数据库管理,信息系统,软件编程和开发,以及计算机安全等内容。
呃,说到这,我推荐看一门《计算机科学速成课》。
这门 40 集的课真的包含了超多的基础知识:
像计算机的早期历史、编程的发展史,到二进制、指令和程序,到算法入门、数据结构,甚至是计算机安全、黑客、加密、机器学习 & 人工智能、计算机视觉、自然语言处理、机器人等等等等都有涉及,感兴趣的可以看下,链接在下面:
立志做技术行的同学,从 C 语言入门百利无害。
很多人都觉得 C 语言入门难,不能像 Python 这种编程语言一样快速获得成就感。
为啥现在还有这么多技术大佬建议学一下 C 语言呢?
因为 C 语言是一门面向过程的语言,运行速度极快,是计算机产业的核心语言,像操作系统、硬件驱动、数据库这些都离不开 C 语言。不学 C 语言,就很难深入了解计算机底层的运行机制。
现在常见的高级语言的底层几乎都是 C 语言实现的。
在大学的时候搞 ACM,用过三年的 C 语言,自认为比较熟悉,给大家总结一下 C 语言的学习路线。
C 语言的学习其实就三个阶段就好了:
这个阶段学习 C 语言的基础语法知识。
目标是可以开发一些简单的控制台小程序。
这个阶段学习 C 语言自带的库函数,形成 C 语言的基本知识框架。
目标是开发一些基本的应用程序。
这个是实战阶段,要具备一定的综合性应用软件开发能力。
目标是能够开发像贪吃蛇、图书管理系统、学生信息管理系统等项目。
对于小白来说,建议上来看视频,不建议直接啃书,因为干看看不懂,容易劝退。
可以先从视频教程开始。
C 语言的视频教程我只推荐一人:浙江大学翁恺老师的 C 语言课,yyds!
是一个课程质量非常棒,讲课幽默,深入浅出的课程,非常容易理解!
当时学 C 语言的时候,自己还是个从来没接触过编程的菜鸡,当时的学习全靠翁恺老师了!
不多说,看过的都知道。翁恺老师的课是在 MOOC 上开的。
- 第一门是面向高考结束想提前自学一些编程的或者是刚开始学习的大一新生,叫《程序设计入门-C语言》,涵盖了主要的 C 语言知识点。
完成本课程之后,就能具有初步的运用C语言编写程序的能力。
2.第二门是《C语言程序设计进阶》,这门课就是要告诉你C语言到底有哪些独特的地方,为什么能长期占据15%上下的编程语言份额。这门课同样也是带你项目实操,和设计入门搭配使用,效果翻倍。
我姑且认为现在题主有了一点基础,可以能配合视频看书了。
入门书籍推荐《啊哈!C语言》
这是一本是一本非常有趣的编程启蒙书。
从中小学生的角度来讲述,没有生涩的内容,取而代之的是生动活泼的漫画和风趣幽默的文字。
从开始学习与计算机对话到自己独立制作一个游戏,由浅入深地讲述编程的思维。
同时,与计算机展开的逻辑较量会让人觉得很有意思。
这本书是我学 C 语言一段时间后啃的书,一本大部头。
语法全覆盖,细节多,知识点讲的清楚,内容极多。在你觉得入门差不多,就可以啃一下这本书。
现在是第六版了,书的封面啥的都换了,内容也更贴合现在的需求。
- 第1、2章介绍了C语言编程的预备知识。
- 第3~15章详细讲解了C语言的相关知识。
- 第16章、17章介绍C预处理器、C库和高级数据表示。
至于提高阶段和应用阶段,更加详细的学习路线可以看我下面这篇文章:
重要的计算机基础课是下面这些:
数据结构重要的主要是下面这几个:
算法的话,需要掌握以下内容:
学习数据结构与算法的第一课,我永远都选复杂度分析,在我看来,这是数据结构与算法中最重要的知识点,且不接受任何反驳。
复杂度分析包括时间复杂度和空间复杂度。
以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。
通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。
- 《数据结构》,浙大陈越和何钦铭教授联合授课,其大名在计算机领域可谓耳熟能详了。
这门课的主要特点是:对每一种重要的经典数据结构,都会从实际应用问题出发,导出其定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例和练习题帮助学员增强对理论的感性认识,从而明白这些数据结构为什么存在以及在什么情况下可以最好地解决什么样的问题。
数据结构与算法的学习,往往要伴随着“刷题”,如果没特殊情况,我建议大家刷 LeetCode 就好。
刷题按照分类来刷,如果不知道刷哪几道题,可以看下这个前字节大佬的刷题笔记:
针对 LeetCode,题的解法有很多,我们往往追求的是最优解,这里有一份清华学长整理的 LeetCode 最优解,强烈推荐:
两者配合起来应该非常舒爽。
我在大学的时候参加 ACM,拿过亚洲区预赛银奖,刷题贯穿了我的整个大学生涯,总结了一些刷题的经验,感兴趣的可以看下。
针对算法小白,我总结了一套算法小白的刷题顺序,可以作为参考。
计算机组成原理,即“计算机”“组成”的“原理”。
我觉得它是所有计算机基础课程中最难学的一门课,整个课程的核心就是使用数字逻辑电路和触发器搭建一个可以运行汇编指令的机器。
《计算机是怎样跑起来的》、《程序是怎样跑起来的》
《深入理解计算机系统》
- 视频首推卡内基梅隆大学的《深入理解计算机系统》系列课程,英语不好?没关系,有中英文字幕,看完这套视频,知识+六级顺利拿到手。
看这个视频的配套教材是《深入理解计算机系统》。
- 此外,国内的可以看下哈工大刘宏伟老师的课程(135讲)
无论你学习什么语言,都避免不了和操作系统打交道。所有语言的最后执行,都是靠操作系统。
比如你学习 Java,用到多线程技术,实际上操作系统才是负责管理进程和线程的。
不懂操作系统,你在未来学习编程语言的高级特性,涉及到线程进程调度,内存分配,或者是学习 Linux 相关的知识时,都会一头雾水。
只有学会了操作系统,才能够更好地学习其他语言和技术。
所以,操作系统是程序员进阶必会的知识。
《操作系统导论》、《现代操作系统》
《深入理解计算机系统》
操作系统,说实话,在刚开始学的时候不建议直接闷头看书。
因为书看起来是真没意思。
- 这里推荐清华大学的操作系统课程,B站上可看。分上下。
看视频的时候可以结合着上面的【书籍推荐】。
看(上)的时候可以搭配《操作系统导论》
看(下)的时候可以搭配《现代操作系统》
计算机网络的相关知识在工作时使用的频率较多的。
学习计算机网络,你需要懂得Socket编程,知道TCP/IP网络模型,了解OSI七层网络架构,知道一个数据包是如何层层包装,再层层拆包,从客户端发送到服务端。
但是计算机网络好学的多,因为计算机网络不抽象,在现实生活中,都能找的到例子。
《图解 HTTP》、《计算机网络》
绝大部分都在用谢希仁的这本《计算机网络》,讲的很好,浅显易懂,同样也是考研 408 的常用教材。
- 首先必须强推湖大教书匠的计算机网络微课堂,yyds!!!
一个动图做的最好的计算机网络视频课程,老师讲课逻辑清晰而且特别容易懂,b 站上有视频,可以 1.5 倍速使用哟。
数据库就是存储数据的地方,但也不只是这么简单。
学习数据库,不仅要懂得SQL语句,表设计结构这些基础部分,还要懂索引、慢查询优化,配置参数调优。
再深入点儿还要学习SQL优化、备份与恢复、架构优化等等进阶内容。
《SQL必知必会》、《MySQL必知必会》、《SQL学习指南》、《数据库系统概论》
《MySQL技术内幕——InnoDB存储引擎》 《Redis设计与实现》
- 推荐人大王珊老师的《数据库系统概论》,别问,数据库领域 YYDS!
我选的是 Python,那这里我就来说下 Python 的学习路线。
我们学任何东西学习之前,肯定要先快速的了解它是什么,大概做到心中有数,帮我们初步判断一下这个是不是想进一步学习的东西,帮助消解一下面对未知时的恐惧。
这里大家可以看一下GitHub上的这个项目,可以让你在短短几分钟之内了解一门技术:
不管是零基础学习 Python 或者其他的编程语言,在刚开始的时候还是建议视频为主,书籍为辅。
毕竟啥也不了解,直接上来就看书,立马从开始到放弃。
1、[小甲鱼]零基础入门学习Python
我大二的时候有一段时间想转去 Python,当时也没买书,就想先了解一下,不知道怎么就搜到了小甲鱼的论坛,当时跟着他的视频学过一段时间,觉得讲的挺有意思,还专门去他网站冲了个永久的会员,好像一百多来着,后面好像再也没登陆过...
后来看到小甲鱼的这门课在 B 站上已经 1500w+ 的播放量,搜索排名第一(不过第一的那个应该别人发的,他们自己的账号是200w+播放)。
这个课程看起来有点老了,但是内容差别不大,后来又搜了一下,他们又录制了最新版的《零基础入门学习 Python》,现在是更新到了序列,觉得不错的小伙伴可以追一下,对新手还是比较友好的。
这是微软放出的一门免费的 Python 教程,名字叫 Python for Beginners,专为初学者打造,一共有 44 个视频,每个视频的时长大概在 2-6 分钟之间,只有极少数的几个时间在 10 分钟以上。
整个课程由两位讲师共同讲解,分别是微软高级项目经理Christopher Harrison和微软的 AI Gaming 开发经理 Susan Ibach,英文配中文字幕,食用起来极佳,同时课程的示例代码和 PPT 微软也同步到了GitHub 上,只能一句卧槽走天下了...
如果你觉得这个教程不错,学完了基础可以看一下后续的微软官方的进阶教程,其实也是基础语言的一部分。
这是我买的第一本 Python 书,当然也是刚开始学的时候看了别人的推荐,加之也是豆瓣评分 9.1 的书,就买来看看。理论 + 实践,前面是基础知识,后面是实战项目。
前面的基础知识讲的很详细,以至于给我当时的感觉有点过于啰嗦了,不知道其他人看会是什么感觉。每个知识点后面都带着“动手试一试”,我感觉这点比较好,学编程之初,就是要多练,多敲代码...
至于后面的实践部分,包括一个简单的 2D 游戏、数据可视化和 web 项目,可能是当时我太菜了,或者之前没有做过项目的原因,我觉得这三个项目出现的太突兀了,2D 那个游戏做完我就直接被劝退了,倒是没觉得有啥提升,没甚意思,sad...
而且跟着书做项目,因为书出版的时间太长,很多用法都变了,照着书上做,大概率会有运行错误的时候,可能心态有点崩...
我大二的时候有一段时间想转去 Python,当时也没买书,就想先了解一下,不知道怎么就搜到了小甲鱼的论坛,当时跟着他的视频学过一段时间(现在看来当时的视频比较老),还专门去他网站冲了个永久的会员,好像一百多来着,后面好像再也没登陆过...去年他的书出了第二版,就买来看了一下...
怎么说呢,算是为当初看的视频充值了...
非计算专业的同学可以拿来一看,如果你想系统学习一下的话,就别花这钱了,内容有点乱,这个得真的配合他的视频食用了,不然真的难顶,但如果一本书需要配合视频才能看懂,那也就不太推荐了...
这本书是我朋友送我的,书到了以后一直在吃灰,因为那时候 Python 学的差不多了膨胀了...
翻开也是很偶然,那天刚好很无聊,就随手拿出来翻了翻,然后就翻完了,怎么说呢,这本书的内容给人一种很舒适的感觉,我很少有觉得读起来很舒服的技术书...
整个的结构很清晰,内容简单但是不肤浅,整个基础知识的讲解简洁明了,一点也不啰嗦,很容易就看懂了,不会有那种我看了好几遍才理解的情况(os:我什么时候也能写成这样),各种小的代码片段比比皆是,在练习的过程中反过来再加深对概念的理解。而且作为实践部分,它后面带了十个小项目,按照实际开发的步骤介绍Python 项目的过程。
如果实在让我推荐一本,我是会推荐买这本书的...
码字不易,如果觉得不错,记得帮我 点赞呀。