这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

学习方法

taoism

学习,从其本质上讲,是人类自然的求知欲的延伸,是对未知领域的探索和对已知知识的深化。如果说学习是一个困难和痛苦的过程,那么这种经历往往是由于我们所使用的方法不当或资源利用不足所导致的。

老子在《道德经》中提到:“道法自然”。这句话可以解释为“遵循自然的法则”。将这一思想应用于学习,我们可以得出学习应该是一个与人的天性和认知方式相协调的过程。我们不应该逆自然而行,强迫自己用不合适的方法来吸收知识,而应该顺应自己的认知习惯,寻找最适合自己的学习方式。

1 - 技巧

本章介绍计算机考研复习方法和学习方法,主要依照笔者的过往学习经验和咨询经验,以及结合我课余时间阅读的一些认知科学和心理学书籍,希望可以帮你找到最适合你的学习方法,并且提升复习效率,最终可以取得一个好成绩。

1.1 - 复习方法论

计算机考研的专业课范围广泛,涵盖了大量需要理解的概念以及记忆的细节。鉴于考研的终极目标是实现高分通过,我们需要一套有效的复习策略来确保以最高效的方式达成目标。这需要一种方法论来引导我们在备考过程中,聚焦关键内容,并充分利用时间和资源,以优异的成绩为复习的努力画上圆满的句号。

抓住关键知识点

二八原理(也称为“80/20原理”或“帕雷托原理”)最早是由意大利的经济学家帕雷托提出来的,关于这个原理的详细介绍请看“这里”。通俗地说,就是【因果的不对称】。20% 的原因导致了 80% 的结果;而其它 80% 的原因只产生 20% 的结果。当然,这里提到的“二八开”的比例不是绝对的,从“四六开”到“一九开”都有可能。

为了给不了解它的人一点感性认识,我举几个例子:

首先,这个原理的关键处就在于它挑战了传统的理念。比如:小时候老师经常教导说:“一分付出一分回报”。用数学的术语讲,就是付出和回报是呈线性相关的。很多人受此影响(可能是潜意识的影响),都习惯于平均分配时间、精力来处理问题。结果就导致我前面所说的投入很多,回报很少。因此,要运用二八原理之前,你先得改变自己头脑中的思维定势,要以【不平等】的观点来看周围的问题。

28principle

考研其实是一个“田忌赛马”的游戏,你的目标是获取全局的最优,要把注意力和精力放在最重要的东西上(那些常常考察的知识点、以及如何保证对于这些题目不出错),而不是花了很多时间去研究那些冷门知识点,这就好像用自己的上等马与别人的劣等马去比赛,最后是拣了芝麻丢了西瓜(芝麻你也不一定能捡到,因为冷门知识点由于练习少,所以能容易遗忘)。

回到考研,对于不同的知识点,我们需要学习到不同的层级

  • 对于那些常常在大题中考察的知识(比如树、图、排序、虚拟内存、cache、CPU、指令集、进程PV操作等),我们需要学习到第四个层级,即使不在考场上,你也应该能马上能说以来关于这一点会怎么考。
  • 对于某些会在选择题中考察到的知识点,我们对其的熟悉程度可以稍小一些,学习到第三个层级即可,如果遇到问题,我们多思考一下,可以得出答案。
  • 对于那些冷门的知识,只要学习到第二个层级即可,这些问题在考试中可能作为选择题考察,遇到能蒙一把就可以。

这正是本教程的核心理念所在。我已经按照内容的重要性进行了标注,从而使你能够根据个人学习需求和目标分数预期,灵活地调整对各个知识点的复习深度和投入强度。你可以优先掌握核心概念和高频考点,同时根据时间和能力,选择性地深入那些较为复杂或者不常考察的领域。


基于实践

对于考研复习,我常见到以下的学习模式:

  1. 扫荡式复习:反复阅读书籍,每个章节都平等对待,试图记住每一个知识点。
  2. 延后实战:希望在完全掌握所有知识后,再开始真题的模拟练习。

第一种方式就如第一点所说,没有抓住主要知识点。第二种方式的问题在于学习与实践脱离,考研复习的目的就是在考试中获得好成绩,所以在平时学习过程也也要和真题结合。并且,从认知科学的角度来说,做题是最有效的学习策略之一。做题是一个主动检索的过程,你花费的心思越多,收益就越多。

一个更高效的复习策略是基于历年真题来规划。你可以尽早地去尝试一下往年的真题,观察一下题目的风格,尝试性地做一下题目以判断自己对于知识点的掌握还差多少火候。然后在后续的复习过程中针对性地加强薄弱的部分,并且结合其他习题去深化自己对于相关知识点的理解。

我的复习经验更为极端一些,在还未开始书籍复习之前,我尝试了几套408的早年真题。尽管我的成绩并不理想,只有六七十分,但这个过程使我清楚地认识到了自己的薄弱环节和哪些内容是复习的重点,我发现这种方法显著提高了我的复习效率。

实践出真知,如果你只是一直看课本的话,你永远无法深入地理解知识,你需要去基于实际的场景或题目,主动地去应用这些知识,而不是被动地一直摄入更多的知识,才能真正掌握这些知识。


寻找关键问题

在过去,我接受过一些同学的咨询。他们经常表示对某些知识点存在困惑,并希望我能提供解答。对此,我常常会反问:“你在这个知识点的哪个部分感到困惑?”有趣的是,部分同学竟然难以明确他们的困惑之处,而只是希望我能重新讲解整个知识点。

当遇到这种情况,我会建议他们先明确自己的疑惑,再来咨询我。令人意外的是,很多同学在明确自己的疑问之后,再经过一段时间的自学,竟然能通过自主学习找到答案,并解决问题。

根据我的观察,这些同学大多处于“有意识的无能力”阶段:他们知道该知识点的用途,但对其仍然只有片面理解,缺乏全局的认识。

通过主动提问,他们实际上是在连接大脑中分散的认知片段,逐渐深化对知识点的理解。我认为,这一过程虽然挑战重重且消耗大量的时间和精力,但通过主动提问和自我探索,同学们能更加稳固地掌握这个知识点。

在整个过程中,使用语言来明确和表达你的思考是关键。例如,当你在学习时,大声说出自己的理解和疑问,这可以帮助你更加清晰地看到自己的思维过程。同样地,当你“扮演”教师的角色时,口头传授知识将进一步深化你对主题的理解。


了解自己

everyone_is_different

要达到最高的学习效率,深入了解自己是关键的一步。首先,要明确自己更偏好哪种学习媒介,是文字阅读、视听材料,还是实践操作?哪种方式能够最大程度地激发你的好奇心和学习动力?你是适合长时间专注在一门科目,还是每天将时间分散到不同的科目?在学习过程中,你还需要反思自己常犯的错误和盲点,是理解性问题、应用问题,还是记忆方面的短板?

每个人都有其独特的学习特点和习惯。所以,寻找适合自己的学习策略远比盲目跟随他人更有价值。只有真正了解并适应自己的学习风格,才能达到事半功倍的效果。过于依赖固定的学习模式或是随大流,可能会让你看似付出了很多,但实际上收获甚微。

因此,个性化的学习策略才是关键。你应该根据自己的情况,量身打造学习计划,而不是机械地跟随大多数考研大军走进图书馆或教室,过着那种看似很努力,题目刷了一道又一道,课本读了一遍又一遍,但是实际上不高的效率复习生活。高效学习并不仅仅是时间的长短,更多的是如何有针对性、有策略地利用这段时间。

比如我在当年就总结出自己的学习特点:

  • 基于问题的学习方式可以最大程度促进我的好奇心和学习动力,在对知识点建立基本了解的情况下,我会去做相关的真题,然后基于真题中的问题,我会定向地去补充不足的知识,这个过程于我效率是最高的。
  • 在我复习时,长时间专注于一门科目对我效果更好。比方说,我不会去制定那种 “每天复习1小时英语,3小时数学和3小时专业课” 的这种计划,因为我是一个天性十分自由散漫的人,这种非常严格的计划对我来说很折磨。在我复习时,我可能会根据当下的状态去选择复习动力最大的科目,然后长时间专注于这一门课。
  • 我的记忆力一般,所以对于那些比较偏向于记忆的知识点,我很容易遗忘,而且我从小就很马虎,看题目常常不仔细,很容易犯想当然的错误。所以我在平时会注意积累那些我容易遗忘并且容易犯错误的点,将它们添加到Anki中,通过不断地练习以至于自己可以形成下意识的反射,以避免相关错误。

1.2 - 快速学习

你也许会被这个标题吸引进来,学习可以是一个“快速”的过程么?俗话说欲速则不达,速度和质量往往无法兼得。但我认为在你掌握合适的方法的情况下,学习可以是一个可以“快速”的过程,但是不太会是一个“轻松”的过程。

本节讲解了我们在学习知识的四个阶段以及不同阶段之间的转换,希望可以为你带来一些思考。

认知的四个阶段

在认知科学中人对于知识的理解被分为四个阶段:

如何在阶段之间转化

1. 从“无意识的无能力”到“有意识的无能力”

这个阶段不要局限于使用课本来进行学习,尤其是国内的课本,国内的课本对于很多知识的讲解都是基于文字的,没有例子,没有实际的场景,大多数是只用只用干巴巴的文字来表述“作者自我的逻辑”,国内写书的老师大多只是为了完成任务,混绩效赚钱,并不从学生以及初学者的角度出发来编写教材,所以书常常看起来像八股文一样,晦涩难懂。

使用这些资源来学习常常会让你怀疑人生,你会觉得是不是自己智商有问题,难以理解这些问题。诚然,我承认不同人在学习这些抽象知识时会有天赋上的差距,但是更重要是 我们学习的方式以及所用的资源,学习知识的过程不应该是困难重重的,应该是循序渐进的,从简单到复杂的,多维度的。

以下是笔者在过往咨询经验中总结的一些经验,如何快速地对完全陌生的知识建立起直觉:

  • 由于人们通常难以通过纯文字来深入理解抽象概念,我们的大脑对于图像和故事结构更为敏锐。因此,当遇到难以把握的概念时,选择那些有助于形象化理解的资源,例如包含动画演示的视频或以实际例子为基础的外文教材,往往更为高效。
  • 频繁地询问 WHAT,明确这个知识点的实际应用或其存在的目的,这可以为你的学习过程提供清晰的导向。
在WAHT这个阶段,你可能会询问如下问题(以cache的学习为例):

cache是用来干嘛的?
cache为不同映射方式的区别是什么?
cache的结构是什么样的?

2. 从“有意识的无能力”到“有意识的有能力”

这个阶段在我看来也是最困难的,处于“有意识的有能力”时,你的认识是模棱两可的,有时候是说不清道不明的,这个时候你可以说具备了理论上的知识,但是对于如何将这个知识实际利用是毫无头绪的。

以下是笔者的一些经验,如何进入到第三个认识阶段:

  • 在实际中去尝试应用知识,尝试不同的练习题和实际场景,以帮助巩固和应用所学知识。在这个过程中你会遇到很多“问题”,你需要掌握讲这些“问题”具象化的能力,用语言和文字定义是哪些点还没有真正理解,在找到这些点后,首先自己思考尝试解决疑难,如果不能的话可以求助他人或者进一步查询其他资料。
  • 多问一问 HOW,不同于“what”的是,“how”更加注重实际操作和应用。简单的记忆并不足以掌握如何操作或实践。你需要培养分析和推理能力,并学会有效查找和使用相关资料来帮助解决问题。
在HOW这个阶段,你可以询问如下问题(同样以cache的学习为例):

○ cache是用来加速地址读写的,所以从一个物理地址到读取cache中的内容,具体是如何进行的?
    (可以包含如下子问题)
    ○ 如何去通过地址去判定应该访问哪几个cache块?
    ○ 对于不同的映射方式,如何判断是否命中?
    ○ 如果没有命中会怎么样,写策略在这个过程中充当什么作用?

3. 从“有意识的有能力”到“无意识的有能力”

在 “有意识的有能力” 这个阶段,你已经可以使用知识去解决问题,但是仅仅是解决问题而已,有的时候这个过程是机械化的,遇到一些新的问题你就可能有一些不知所措了。

进入“无意识的有能力”这个阶段,需要你对于知识有一个更高维的认知,可以通过如下阶段实现:

  • 使用费曼学习法,假如你是一个老师,要将这个知识教给其他初学者,你会如何构建自己的语言,如何讲述,通过向他人传授知识的过程(可以不用真的找人教),以及尝试用简单的语言去阐述复杂抽象的知识,你可以从另一个层面上思考自己学习过的知识。
  • 多问问WHY,思考为什么这样实现,采用其他的方式设计会怎么样。并且尝试与其他领域的知识或技能结合,这样可以加深对当前知识的理解,也可能导致新的发现或创新。
在WHY这个阶段,你可以询问如下问题,尝试将不同的知识结合起来:

○ cache的不同映射方式有什么优劣
○ cache相比于主存的关系和TLB相比页表的关系有什么联系?TLB结构和cache有什么类似之处?
  TLB也可以使用像cache一样的映射方式么?
○ 操作系统使用虚拟地址访存,从 TLB ----> 页表 ----> cache ----> 内存,这个过程具体发生了什么?

1.3 - 使用 Anki

计算机专业课程囊括了大量需记忆的知识点,这些内容若不经常复习,极易忘记。鉴于这一挑战,本节将推荐使用Anki这一强大的工具。Anki能够协助我们制定针对性的复习计划,确保每个知识点都得到适时的巩固和回顾。

人类的遗忘曲线

如果你还不熟悉艾宾浩斯记忆遗忘曲线,请允许笔者在这里为你介绍一下:

人类的遗忘曲线是由德国心理学家赫尔曼·艾宾豪斯(Hermann Ebbinghaus)于 19 世纪末提出的概念,用来描述人们在学习新知识后随时间逐渐遗忘的情况。这一概念对于理解记忆和学习过程中的遗忘现象非常重要,也对制定有效的学习策略有着重要的指导意义。

Memory
Memory
The remembered ( days
The remembered ( days
Text is not SVG - cannot display

遗忘曲线的主要特点包括以下几点:

  • 遗忘迅速:在学习新信息后,最初的遗忘发生非常迅速。艾宾豪斯的研究发现,学习后的第一天,人们可能会遗忘掉大约 50%的新信息。
  • 遗忘逐渐减缓:随着时间的推移,遗忘速度逐渐减缓。也就是说,在最初的几个小时或几天内,人们会遗忘最多的信息,但随后的遗忘速度较慢。
  • 遗忘稳定:一旦过了一定的时间阈值,遗忘曲线会趋于稳定。这意味着在一段时间内(通常是数天到数周),遗忘的速度相对稳定,而不再像最初那样迅速。

遗忘曲线的重要性在于它提醒我们,学习仅仅是获取信息的一部分,而记忆和巩固知识同样重要。

408 的复习难点

我想首先说一下我理解的 408 的复习难点:

  • 知识点太多,很多知识点在一段时间后容易遗忘,或者出现记忆不牢固的现象,在做题时难以迅速回忆起来
  • 很多知识点是记忆背诵性的内容,相比理解性的内容,记忆性的内容更加容易遗忘
  • 扫荡式的复习太耗费时间,效率不高,有工具帮助自己记录哪些知识点最需要复习最好

接下来我会介绍 anki 这款程序,并且说明使用 anki 如何可以解决上述问题,然后结合我自己的使用经历来阐述如何可以更好地使用该软件。

Anki

什么是 Anki

Anki 是一款非常流行的开源记忆卡片应用程序,旨在帮助用户更有效地学习和记忆各种知识。Anki 的名称源自日语单词"暗記",意为"记忆"或"记住"。它的主要特点是使用一种名为"间隔重复"的记忆技术,通过定期重复学习材料,以帮助用户更容易地记住信息。

Anki 以词条的方式记录信息,词条包含正面和反面,正面记录问题,反面记录答案。

选择特定的 deck 进行复习

choose_deck

向 anki 的某个 deck 中添加词条

add_to_anki

使用 anki 复习

anki_front

查看之前编辑的答案

anki_back

Anki 中的算法可以按照艾宾浩斯记忆遗忘曲线为你安排复习进度,在每次打开答案时,你会有四个选项:

  • Again:完全忘了
  • Hard:花了很大的功夫才从头脑中搜寻出该问题的答案,但是还是想起来了
  • Good:花了一小段时间回忆起答案
  • Easy:很轻松快速地就回忆起答案

Anki 会根据你的选项为你安排下一次复习进度,安排的过程是根据 Anki 内置的算法,算法主要基于该词条的复习次数、距离上一次复习的时间以及你主观地当前对于该词条的记忆程度的评估。

Anki 是一款开源项目,其算法内容依据了最新的关于人类记忆方式的研究,根据笔者的使用经验,Anki 确实帮助我更加牢固地记住了知识点,所以我也在这里大力推荐这款程序,目的也是帮助各位读者可以在最短的时间内取得最好的学习效果。

使用 Anki 的好处

  • anki 安排的复习流程符合遗忘曲线, 与人脑的客观规律相匹配,可以最大化我们的复习效率,帮助我们用最少的复习次数记住知识点
  • 主动回忆 的复习方式,anki 中很好的一个点就是你每次在看到问题时是在主动回忆曾经不熟悉的知识点,这一点非常重要,这种复习方式远远优于你把书本翻一遍又一遍,低效率地阅读重复。这也与费曼学习法相匹配,这个时候,你是自己在做自己的老师,效率相比一个“被动的学生”,肯定不知道高到哪里去了。

笔者是如何使用 Anki 的

我想从两个方面阐述一下我的 anki 使用经验,这也是经过很多时间摸索出来的最适合于我的方式,希望可以给大家带来一些思考。

什么时候添加 anki 词条

当我们复习到自己不熟悉的知识时,都可以向 Anki 中添加新的词条。但是这种情况会有一个问题,就是打开电脑或手机添加词条会打乱当前的学习节奏,也使得当前的学习过程中断了,反而降低了学习效率。

笔者在过去复习过程中,当遇到一个可以添加的词条时,我并不是马上打开 anki 进行添加,而是将该问题记录到一张纸上(只记录问题)。随着今天的复习流程结束,纸上可能已经包含很多问题了,比如可能是如下的情况:

  • 如何将一个数组转化为一个大根堆, maxHeapify 的算法过程
  • 三次握手中 flag, seqno 以及 ackon 是如何设置的
  • TCP 的拥塞控制算法有哪几种,拥塞窗口在每个算法中是如何变化的
  • ……

在每天的一个 固定时间段 ,可以是当天复习完成后,也可以是其他时间。我会将之前总结的问题 使用电脑批量添加 到 anki 中,这种方式除了使得添加的过程不再分散外,也可以帮助我们对于之前记录的问题进行初步地复习(你在编辑和添加问题时就已经在复习了)。添加 Anki 答案时可以不用写得特别详细,列出其中的关键点就行,这里我们主要还是利用 anki 帮助我们在适当的时间进行主动的回忆。

什么时候复习

我之前是喜欢在晚饭后进行复习,拿着手机,打开 anki 软件,一边沿着学校散步,一边回忆知识点,个人感觉比较放松惬意。其实复习时间还是因人而异,只要每天都拿出固定的时间段来就可以。

如何组织 Anki 的词条

Anki 中有一个 deck 的概念,即一个词条组,用于组织一系列同类的词条。你可以将不同的主题创建为不同的 deck,比如数据结构创建为一个 deck,然后计算机网络再创建为一个 deck。在每个 deck 中你可以为每个词条创建多个 tag 标签,在 Anki 的词条浏览器中你也可以根据 tag 对一个 deck 中的词条进行检索。

笔者的组织方式稍有不同,我在考研期间只创建一个 deck 叫做 Grudate ,对于 408 中的不同科目,我在创建词条时为其打上相应的 tag 。组织方式如下:

  • deck (Grudate):
    • tag (ds)
    • tag (network)
    • tag (cons)
    • tag (os)
    • tag (math)

其中 dsdata structure 的缩写, networkcomputer network 的缩写, conscomputer constition 的缩写, osoperating system 的缩写。

对于笔者而言,这样组织比较简单,也避免了在多个 deck 中跳跃建立词条的麻烦。并且这样在复习时 Anki 会为你交叉地安排不同科目的知识,我觉得这样复习效果意外地还不错,推荐大家尝试一下。