万字版
@TODO 有大概了,但是看到新一轮各种考试又要来临,先上简版尽量给筒子们一些启发
思考
- 应试是什么,如何看待?
- 刷题错很多,如何看待?
- 为什么这套方案有用?
目标
- 你应试的目的是什么?
- 如果不知道目的,如何查找?
杀题
- 有了目标,刷什么题?
- 该怎么刷题?
改进
- 如何提升(upgrade)?
如果有任何疑惑或指正,请在评论区提出;如果有帮助到你,请在评论区留下你的成功经历激励大伙。
致谢
全篇大量引用以下慷慨无私的前辈的文章:
没有前辈们的倾囊相授,我可能也还陷在应试的泥潭沼泽中。
他们是柏拉图《理想国》中明明可以走出洞穴独自享受阳光而选择了转向洞穴分享所知的先行者们。
应试行法(又名学习行法)
今年应试了三五次,算是取得了满意的成绩,关键是性价比很高,并没花太多时间,这种事半功倍的应试节奏可以说是我高二以来一直苦苦寻找的,踩了不少坑,现在总算是有点眉目了,现在分享一些所得。
选调大概排名 4/300(虽然没上哈,20 天),另一场考试排名 2/50(10 天),一场面试中上(跟我见过的最高分差 3 分,5 天),SAS BASE 认证 967/1000 分(4 天),长期的应试成绩也还可以:硕士 GPA 3.61(2/17,妮可硕士绩点算法同北大,不好拿高,每门课只有 20% 能 A- 及以上)。
大概回顾一下,高二下开始在应试上有点找不准方向,在创新班从中上滑到中下,总是做事倍功半的事情,高考略砸:2000 -> 3000(不是凡尔赛,懂的什么叫事倍功半的痛苦的自然懂)。大学期间完美主义的毛病很重,成绩也不好看,GPA 3.61(20/52),令人烦恼的不是这个成绩有多烂,而是你花了大把别人周末出去玩的时间用来看书,但是只能艰难地跟上平均水平这种感觉。
如何看待应试:灵活应用能力罢了
Q:应试是什么,如何看待?
A:万恶的工业化产物,把人干成了牛马; B:小镇做题家都是 XX; C:一种对应用能力的考察,没创新能力那么惊艳但是也很重要; D:狠狠地考试就完了,想这些干嘛。
《谁动了我的奶酪2》在讲一个道理:如果你停滞不前了,那大概得改变观念才能继续进步。如果在应试上有所困扰,不妨先看看自己的观念是不是不够积极。
首先要清楚,不论国内外,应试能力和科研/工程能力是生存、进化很重要的两种能力,分别对应知识掌握的七个境界里的第五、六重境界(实践境界,灵活应用境界)。可惜国内国外似乎都只着重宣扬对其中一种能力的培养,有时甚至互相冲突(如在妮可,高 GPA 和科研能力经常得二选一),烙饼希望双修(真不愧是双子座 HAHAHA)。
然后强推大家都去看看我大杀题哥的所有与应试相关的高赞回答(当然其他问题也答得很有趣):@Haojun,我大二一次折戟后看了他的回答,才发现应试、刷题也是一种很重要的能力培养过程,应该一百二十分地重视。
曾经的烙饼对应试、刷题这些词很膈应,不愿刷题。现在想想,其实平常心看待就行,应试能力就是一种灵活应用能力,“遇到这样一个问题,能不能联系已经掌握的知识,有理有据的说明白你得出结论的依据?”,别总说国外不搞应试,不应试雅思托福 GRE 哪里来的?以及像 leetcode 这种东西不是应试是啥?像我最近在上的 CS61B,差不多上一小时的课,做一小时的练习,考一小时的试。
而且,应试的定义其实可以推广,不仅局限于考试,而是所有没创造出新东西、考察熟练度的测试,比如面试、课堂大作业等等。所以摆正心态,我们一辈子终究是会面对不少应试的。当然应试能力和科研能力很大一个差别就是你不会记一辈子某次考试考了多好多好,但是你大概会记得你发明创造的东西,不过这已经牵扯到人生意义了,点到为止。总之,烙饼觉得,良好的应试节奏应该是:用最性价比(时间/金钱)的方案拿个 90 分左右,排个 5% 内的名次,接着开心一两天,然后忘掉它,转头去做创新性工作。
如何应试
从机器学习的成功中得到启发,利用明确的损失函数和有效的梯度下降法来锻炼大脑。
损失函数:怎么考,考什么,如何评分?!?
看似简单的问题,实则很多考生到头也没整明白,出现很多南辕北辙的问题:
- 2 小时的考试,练习的时候怎么可以慢悠悠地用 2 小时 10 分的速度
- 考试考所有知识点,天天练单元卷有什么用(类似的,考试多是基础题,天天钻研机构模拟的怪题难题有什么用)
- 考察面试,不知道真实考场上的考官是怎么评分的,而去相信机构写的字字珠玑、天花乱坠的逐字稿
- 考场机考,练习的时候却用纸笔
记住,应试怎么考的,就怎么练,而且一定要更狠地练(主要指速度),考试 2 小时,那限制自己练习的时候 1.5 小时;面试的时候给 30 秒准备,那练习的时候就尝试脱口而出地训练,习惯了这样的节奏那么到了真正的考场上,就算紧张就算出了啥幺蛾子哪怕拉肚子了我们也能不崩。这种练习方式,一开始的成绩可能并不好看,但是烙饼得指出筒子们可能有个误区,总想着先建立好知识体系然后直接在模拟时拿下 8,90 分,这种想法行不行得通呢?我们可以反证一下,如果真的通过看书、练习模拟单元卷这样一步步训练可以到达这种境界,那么高考不应该很简单么(其实确实很简单哈哈)?只要跟着老师一轮轮复习大家就都能 600 分了,但现实情况是很多筒子当年跟老师学的是死去活来,靠自己刷题反而有所起色(对吧?),那如果考试只以分数为目的的话,哪种方法又更科学呢?总之,烙饼的建议是,建立起能得 5,60 分的知识体系后就可以开始刷题了,烙饼刚开始刷面试题的时候还只有 3,40 分呢。
当然,现实生活中的例子会复杂一点,需要个性化调整迁移:
大学期间的科目考试,可能没有往年的卷子或者是换了新老师新风格,这种时候就不得不通过各种蛛丝马迹猜测他的考试风格。
搭建知识体系这种看似很虚的想法其实也可以定目标函数,比如合上书本尝试回忆目录,看能否做到八九不离十(此处的想法感谢数学系的 @HHX 同学,虽是转专业学数学但是非常的有见地)。既然这种东西都能定目标函数,那么工作中那些 KPI 是不是也可以转换成目标函数呢?大家可以自行思考一下。
SGD:刷题法
更多的应试刷题细节看我杀题哥的回答以及《高三突围》(B 乎大佬的作品,个人最推荐“刷题”篇)这本书,大体就两点:真题 + 速度。坐下来,把近些年的所有真题和解析找出来,大概算下每天要练习几套题目,刷题的时候要比真实考试在时间上更严苛地要求自己,如果是考试那就力争培养出题目、选项只看一遍,选出答案就走人不再看剩下选项这样的自信。杀题哥可以做到 2 小时的卷子只用 40 分钟完成,没有速度就没有量,没有量的保证就没法踩过一遍所有的陷阱,如果没有踩过所有的陷阱那“失败乃成功之母”就真的只是一句空话了。
如何改进:把刷题中犯的错误跟高分回答比较并向其靠拢的过程非常非常重要
最近在开车的时候,一开始转弯不太熟练差点挂到车,于是回来后上网搜了些视频,里面教了“左转转大弯斜弯,右转小弯”,很快地 get 道,在下一次驾驶的时候落实了这些理念,开得非常舒服的,感觉开车其实也挺享受的。
按之前的[定义@TODO],灵活地开车也是一种应试能力,上述经历是可以说展现提升应试能力正循环非常好的一个例子:
据我观察,很多小伙伴能刷几天的题,但是往往会被刚开始的低分整得士气低落,且觉得自己改进不了,从而三分钟热度,放弃刷题。
机器学习里随机梯度下降法(Stochastic Gradient Descent)是一种非常简单而有效的优化方案,都说机器学习是对人脑的模拟,那么我们何不反过来用机器学习的思维指导学习呢?沐神这篇用随机梯度下降来优化人生写的是用 SGD 优化人生这种大目标,我们这里用来提升应试能力。在第一步定好损失函数之后,我们就应该
在训练一个机器学习或深度学习模型时,我们首先定义一个损失函数,它用于度量模型预测值与真实值之间的差异。梯度下降法的目标是找到能够使损失函数最小化的模型参数,使得模型的预测结果尽可能接近真实值。
梯度下降法的基本思想是沿着损失函数的梯度方向,不断地更新模型参数,以使损失函数减少。梯度可以理解为损失函数对于每个参数的偏导数,它告诉我们在当前参数值下,沿哪个方向能够使损失函数下降最快。
---from ChatGPT
那如何用梯度下降法指导学习呢?梯度下降学习法就是把刷题中犯的错误跟高分回答比较并向其靠拢的过程,就是熟称的对答案,但是对答案不是简单地把答案抄一遍,而是看看答案解析是怎么做的,想想自己又是怎么做的,差距在哪里,是不是答案的思路更加合理值得学习(这里要有区分好坏答案的能力,不该学的别学);
可以说,如果考试能达到 60 分,那看答案的速度就不成大问题了,这种时候的改进就是想想怎么跟上答案的思路。
不过,我经常看到筒子们刷了题却不校对,一步步校对答案当然不好受,甚至可以说比限时刷题更痛苦,尤其刚开始时,可能 2 小时的题做完后更需要 3 小时才把答案的思路完全复刻到脑子里。但我还是得说,如果不把自己的思维提升到答案的维度,那题就是白刷了。
在应试领域,对答案就是最重要的能力。(不信去观察身边的各层次同学)
记住 bobo 老师的这句话:“通常在一个领域里,你最不喜欢做的事情,就是这个领域的核心竞争力!”
这部分是整个应试行法最硬核的地方,需要你一步一个脚印啃下一个又一个答案的思路,没人能取代你做这一步,机构不行,教师不行,我也不行。不过有个好消息是,一旦你开始好好对答案了,你会发现自己分涨得很快(只需要刷几套真题)。
[PIC]
在说最后一点点,对答案不是让人死磕看不明白的解析,如果 3,5 分钟还是一点头绪没有,建议换个答案的资源(传送门:[搜索技巧@TODO])。
参考:
[如果高效学习有什么秘诀的话,那就都在这里了:)@TODO] 之 “7)debug非常非常重要。”
7)debug非常非常重要。
我看到的另一类“经典”问题就是:老师,这个代码为什么错了,然后贴一大段代码。这种问题背后,依然是,透露着学习方法的不对劲:提问的同学懒得debug。在计算机领域,debug近乎和实践是一个意思。如果只是把材料上的代码“抄”一遍,这不叫实践,这叫抄代码。小学生也能做。但是“抄”一遍,不小心没抄对,发生了错误,然后自己一点一点调试,找到错误的根源,这叫真的实践。小学生不能做。(当然,自己理解了算法的逻辑,按照自己的理解,把算法写出来,才是终极目的:)
不过很多同学不喜欢debug,我当然理解。其实谁都不喜欢debug,但是,debug才是最重要的能力。通常在一个领域里,你最不喜欢做的事情,就是这个领域的核心竞争力!我见过的所有计算机领域的“高手”,不管是在哪个细分领域,都无一例外,是个debug好手。我经常告诉大家,在实际工作中,其实debug的时间要占你真正编程时间的70%。如果你做一个项目,根本不需要debug,要么是你的项目对你来说太简单了,要么是你根本没有接触到这个项目的核心。
debug不仅仅是找到代码错误,解决错误的手段,其实更是一个重要的学习手段。通过debug,看看自己写的程序执行逻辑,哪里和自己设想的不一致?再回头看自己哪里想错了,或者想漏了,分析一下自己为什么想错了,或者想漏了,等等等等,依然是,进步就是发生在这个过程的。
在我的算法课程中,很多同学对递归想不明白,我的建议都是:用一个小数据量,一步步跟踪程序,看看程序到底是怎么运行的。通常这么做,1个小时的时间,就足以让你深刻理解递归程序的运转逻辑。可是,很多同学懒得花这1个小时的时间,最终的结果是,花了一个下午,对着代码生看,硬想,最终还是没有理解程序的运转逻辑。
如果是面试,那往往要自己录像,自己或者让同学来评判和面试高手的差距并补上。把握好节奏,烙饼刷选调卷的时候一般是刷两套然后看下有什么题老是错或者做的慢(比如空间想象题),然后 B 站或者 B 乎看看高手们是怎么做的,把值得学习的地方通过刷单元卷学过来变成自己的东西,这样每次刷卷子都会大概有个 1,2 分的提升。注意这里烙饼也会去刷单元卷,但这和一上来先刷单元卷再刷套卷是完全不一样的,烙饼刷单元卷是为了针对性补强而不是为了建立什么体系。
Q:刷题错很多,如何看待?
A:绷不住了,还是打电动吧; B:不犯错,勿学习; C:跟自己比就行,一次比一次提高几分,一步步前进; D:智商不够,平常心对待。
考前状态
这点烙饼自己也做的不够好,简单说下跟大家共勉。烙饼理想中的考前 1 天的状态应该是合上所有卷子、书本,尝试自己回顾各个题目的知识点、陷阱等等,再翻翻书看看有哪些地方没考虑到的,查缺补漏。但即使是最近几次考得不错的应试,考前 1 天烙饼也还是在刷题 QAQ,只能说希望以后更早更高效地开始准备。(但即使是这样上考场已经足以吊打 90%+ 的人了)
To my love
亲爱的筒子们,不要害怕应试这件事,写这篇文章的人当年也是个 Java 64 分差点挂科的主。现在看到筒子们陷在考研/公考之中,也是很想帮帮忙的,首先不要被报考人数给吓到,想选调考都是全国的优秀大学生,会应试的不见得有几个(不然怎么能让我瞎蒙十题还能第四)。静下来,拿张纸条缕一缕:
- 考的究竟是什么,是如何评分的(完成这一步,你就成功了一半,至少有一半的人没搞明白考的是啥或者咋评分的)
- 准备用 SGD 刷题法,那么总共需要刷多少题?每天要刷多少题呢?
- 考前应该准备到什么样子?
对亲亲们真的真的还有很多想聊的地方,但是正如《谁动了我的奶酪》所言:
唧唧在考虑回到奶酪C站去,看是否能找到哼哼——但首先得肯定自己能找到回来的路。如果找到了哼哼,他会把自己学到的东西告诉他,帮助他摆脱困境。但唧唧又想起已经试图改变过他的失败经历。
哼哼必须自己发现适合自己的道路,摆脱安逸,超越恐惧。没有人可以代替他做到这一点,或者告诉他应该怎样去做。他必须迈出第一步,否则他永远不会看到改变自己所带来的好处。
况且烙饼自己在科研能力上也有还很长的路要走,像毕业论文,感觉写得就很倒数的烂 😂。长路漫漫,让我们相依相伴。
筒子们~ 一起加油!