计算机刷题的意义是什么(除了应付考试)?(指的是考试、考研以及练习册习题等等),对做公开课的lab、pro的帮助是什么?就比如 刷一些那种期末考试的、考研的C语言或者数据结构等等之类得的那种题的意义是什么?

我唯一的想法就是,能增加熟练度。比如在做公开课lab的时候,你就可以直接上手,就不需要花太多时间去查资料。但是如果你不刷题增加熟练度的话,做lab的时候,很多知识忘了,又要重新查,感觉效率就没那么高。

我其实一直不太喜欢就是把计算机当成数学那样刷题的学科。但是最近也因为考试,去刷题,然后其实能感觉到,就是很多知识点不记得,然后去查资料,但是似乎感觉这样熟练度能提高点。这样感觉以后做公开课lab、pro的时候,好像可以省一点查资料的时间,就是通过刷题对以前遗忘的知识点进行巩固。

    Amo-zwk 更改标题为「计算机刷题的意义是什么?

    这个问题其实在数学物理上是会更明显。
    在这些理论学科上,做题是让你掌握最基础的解题能力与思维方式,使你有机会在更高的层次去研究一些问题,所以刷题是非常有必要的。

    而计算机领域的刷题的话,因为它的分层设计与各种抽象,实际上这些底层的细节知识,没有必要全部在脑子里记得一清二楚(况且这也太难了)。
    所以抛去找工作应付考试外,做 lab,做习题,其实都只是手段,真正目的是帮你去理解与熟悉这些领域内最基础的解题能力与思维方式,使你有机会在更高的层次去解决或研究一些问题。

    它只是给了你一个深入的机会。当然你刷得越多,肯定就越难忘。

    但是对于一般人,我觉得适可而止就行吧,比如我做题时只追求「理解」,并不追求「熟练」。

    计算机的细节这么多,在深入学习时,回过头补一些遗忘的或者以前没学好的知识,确实还挺难避免的。
    这个时候就凸显出笔记的重要性了,如果你前期做的笔记够清晰,它就能成为你的第二大脑,帮你记住这些不够熟悉的东西。

    刷题当然能帮助你提高熟练度,从而学习其他内容的效率,不过有一个「度」在,我感觉你现在就刚好刷到了舒适区~

    不一定是熟练度层面,我认为主要在于肌肉记忆和直觉的培养,如楼上说的,无论是计算机还是数学还是其他理工科,乃至于人文社科艺术都有类似规律。

    曾经我是很排斥刷题的(可能是高考带来的 PTSD),一度导致我大一时高数挂科。后来慢慢深入拆解这个问题,直到发现一个演讲提到 数学与 patterns 的关系才豁然开朗。我们所学习的东西,到最后其实都来自于我们的日常生活的一些模式,然后形成基础的概念,在这些概念之上再一步步抽象和变换。

    有的概念本身就比较抽象,离具体实现较远,而难以被肉眼直观所解释,要想理解,只能靠做题的方式去锻炼思维的“肌肉记忆”直觉,由基础的直觉逐步上升到更抽象的直觉。课程设计者也是通过题目的方式,去引导思维的训练和培养。

    关注点主要在于一个 概念形成 -> 转变为直觉 -> 逐步向上建构更高维度概念 的过程。具体在这个帖 数学与编程 也有聊到。

    所以我现在的这个排斥也细化了,排斥的是以内卷竞争为目的刷题,但不排斥正常的搭建理解为目的做题。

    Amo-zwk 对做公开课的lab、pro的帮助是什么

    不确定你指的 lab / pro 是什么东西,最好举例一下

    Amo-zwk 计算机刷题的意义是什么(除了应付考试)

    你这个问题也很泛,计算机科学有很多细分知识,单举例大学课程就有典型的数据结构与算法、操作系统原理、计算机网络等等。它们可能存在课堂留题,这一般是教师为了巩固和检验教学成果的手段;也可能存在非教材读物的章节练习题,一般是书籍作者认为对应章节所讲述的知识足以或可辅以解决某些配套迷题,留给读者自行发挥和练习;也可能是为了给某些考试、笔面试设置区分或筛选门槛而设置的题目。

    所以你看同样是刷题,它们的目的可能不一样,其意义应该取决于你想达成什么样的目标。

    单论刷题这个行为,本质上就是重复练习。著名的“10000 小时定律”虽然饱受争议,但其实有一定的可取之处,即刻意训练。为什么会有讲师、教授的区分,为什么会有初级/高级/资深/专家工程师的区分,除了不同等级所要求的软素质不同外,是不是也应该存在某种技能体系的广度、深度、熟练度的要求?熟练度或许是这个问题讨论的关键。

    除学术研究外,工程和应用技术最讲究动手实践,很多东西你没做、做过但不多、做过很多次、做过很多也思考了很多完全不是一个体验。最简单的例子就是所谓的设计模式,它只不过是当年一群走到了行业顶级的人,根据他们的经验总结出软件开发的几种可行且可复用的套路,你学习到了他们的基础思想,套用上合适的设计模式,似乎就能设计出看起来还不错的程序。那么问题来了,如果你不实际动手去做,就算这是前人的优秀经验总结,你怎么知道什么情况下套用哪种模式是最合适的?它在一些边界情况的细节处理怎么搞?在你没做过的情况下,你只是很机械地照本宣科罢了,实际工程环境的复杂度可能超乎你想象;在做过但不多的情况下,细节就可能处理不好,可能也不能活用,比如你可能设计了一套很复杂的抽象工厂应对 A 处理 a / B 处理 b 的需求,实际上可能简单做个策略模式就能搞完;做过很多也思考了很多,你可能会把多种模式结合在一起使用,甚至会提出新的设计模式也说不定对吧。

    而跟上面工程实践例子比较相像的就是刷算法题。本质上打竞赛的人刷题也是在掌握公认的有限几种适合比赛的基础算法的前提下,尽可能多地见识不同题型,不同陷阱与套路罢了,它就跟高考一样,很枯燥。达到区域赛拿牌水平,可能仅一种算法比如贪心的不同题目都刷过上百道,所有算法题加起来几千道;一般寄希望于刷题过大厂笔面试的求职者,刷 LeetCode 前百道包含各种贪心、搜索、动态规划等各种算法的题目,跟竞赛选手比起来简直就是小巫见大巫。不管竞赛也好求职也好,刷题的共同目的是让自己更熟练,在有限时间内越快越好越准确地解决问题。这也是国内大环境大家觉得“卷”的一个缘由,大家都觉得自己智不如人,那就只能靠努力来填补;而准入机制又因为大家的平均熟练度水平越来越高,不得不一次又一次地提高门槛。

    但刷题不一定只给你带来熟练度的提升,于是你会发现我在开头就做了一个错误引导,我并没有明确“刷题”的概念,而是按一般人理解的题海战术来讨论的。回到工程实践,其实你不一定(且大概率不)是主观地重复练习,你可能因为实际生产需要而不停地运用你过往的经验、知识和技能,复刻出实质相似的工作成果。通常评价要求工程师摆脱被动,由初阶晋升为高阶,这就离不开总结与归纳,并化被动为主动,能够运用自己的知识经验发现并解决问题,而不是等问题来找你给它一个交代。这也是“刻意训练”的另一种内涵,这里的训练从以量取胜转变为以质取胜,说人话就是像楼上说的追求理解,知道它什么能做/不能做、为什么能做/不能做,知道它怎么做/怎么改进,这需要你付出脑力去思考,通常消耗的心智是远比在海量中灵光一现发现规律要多得多的。

    这里我稍微偏离讨论,单独点一下求职者刷面经的模式。我就不喜欢这种形式,换个角度看也是一种对自己的不自信,通过观察面试官会出什么题来做针对性练习,以达到在所考察的范围内都貌似优秀的结果。这可能是双方都有锅的,一方面求职者不自信、不熟练,甚至可能不诚信(开摄像头笔试都能搞出投屏枪手代答的操作),另一方面是部分面试官不专业,出刁、难、怪题,出工作中用不上的造火箭题。于是负反馈循环,求职者要摸清行情,面试官要设置准入门槛,越来越难。

    忽略上面的偏离,让我们总结一下并回到主题。同样是刷题,分支可能不一样:更偏记忆的理论学科 vs 更偏实践的应用学科;目的可能不一样:比赛 vs 考试 vs 求职;形式更是千人千面,有题海战术这种极端,也有形成了方法论的学习方法。这完全取决于个人,也就是你自己。在你有明确的目标方向,或者正式进入社会做一个打工人之前,你可能缺乏实践的机会,刷题是弥补这种缺憾的一种手段,这就是刷题的意义。它当然不是唯一解。你说我就喜欢先理论学习,然后直接上手工程实践怎么办?那也可以,如果你真的能在学习之后就手撕操作系统内核实现、手撕 tcp/ip 协议栈实现、手撕大数据集多维解空间下的最佳求解策略,并且真的做出来了还能开源放在 github 上接受同行 CR 并且没什么大问题,那就不需要刷 OS 题、计网题、算法题,做到这个地步那就是妥妥的天才,不论是研究所还是企业都抢着要,对吧。

    © 2018-2025 0xFFFF