刷题到底有什么用?你这么刷题还真没用

2020-12-04 18:29:47 +08:00
 hakunamatata11

刷一道算法题,求解的思考过程远比知道最终解法要重要。就好比数学 /物理定理,你知道了会用是一种境界,能完整证明它们又是另一种境界。所以如果可能的话,尽量不要让自己陷入靠记忆解决问题的地步。

要怎么做呢?我提供一个以前同学的例子。他本科是工科,研究生转了 CS 专业,毕业后刷题 3 个月拿到了 Facebook,Google,Amazon 的全职 offer 。他刷题的方法就是做笔记,这是他 3 个月刷题过程中整理的笔记,将近 900 页,你们感受下(笔记链接点这里

他刷题的原则很简单,不要把“题目数量”作为刷题指标,而应该把问题拆解,拆成具体的问题模式和对应的解决方法。用图来表示的话大概像是这样:

每道算法题都有其构成的基本单位,比如有什么数据结构、用到了某某算法等。通过将问题拆分,做类比分析思考,自行做“聚类操作”,我们就能构建自己的算法知识体系。这个过程做笔记是最有效的。

比如很多问题都可以转化成“Tree”或者“Graph”,或者“递归”

所以刷题实际上是不断抽象,越刷越少的过程。面试中遇到了所谓“新题”,很可能只是我们抽象总结得还不够。

很多题看过答案后,你以为自己懂了,其实并没懂。

就拿动态规划来说,刚开始刷的时候往往都摸不着头脑,看了答案之后恍然大悟,原来是这样,只要找到状态转移方程,之后就简单了。

然而答案一般直接告诉你了状态转移方程,却不会说明是如何找到状态转移方程的。这个思考过程在刷题中其实是欠缺的,下次遇到动规题还是很大可能不会。

回到刷题本身,不要寄太大希望于“速成”。一般要制定一个至少几个月的学习计划,根据自己当前的基础和水平做针对性训练。

针对算法面试,我也总结了面试常见知识点的考察频率和建议的刷题量。

在我主讲的《九章算法班》中,除了会讲如何刷题外,还会谈谈面试中正确沟通的技巧,培养 coding style 和 bug free 的能力。按照我的方法刷题,1 个月就能搞定算法面试。

报名方式

戳我立即免费试听前三章

530 次点击
所在节点    推广
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/732225

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX