尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

用第一性原理拆解面试八股文:从背答案到推导知识链

用第一性原理拆解面试八股文:从背答案到推导知识链 面试八股文这件事我用“第一性原理”重新拆了一遍之后突然发现以前背了又忘、忘了又背的那些问题其实根本不用背。过去我准备面试和人一样打开题库就开始刷HashMap原理、TCP三次握手、Kafka为什么快……刷完一遍觉得都会了合上资料一回忆脑子里的东西像一盘散沙面试官多问一句“为什么”就当场卡壳。后来我换了个思路不再把答案当结论去记而是从每个问题背后的底层公理开始一层一层推导出结论。这一套走下来复习效率、记忆深度、面试时的抗追问能力都完全不一样了。这篇文章我就把这个方法完整拆开讲适合所有正在背八股文准备面试的Java、C、前端、测开、嵌入式等方向的同学尤其适合那种“背了很多题但总觉得没学透”的人。1. 为什么“背结论”总翻车先说清楚八股文的病根1.1 你背的是答案不是知识的推导链我记得特别清楚有一次面试官问我“HashMap的加载因子为什么是0.75”我当时把什么负载因子、扩容机制、红黑树转换阈值背得滚瓜烂熟结果人家一问这个“为什么”我愣了半天说“因为JDK源码这么写的”。这其实就是背八股文最大的隐患你记住了结论但不知道结论是从什么前提推出来的。面试官一旦把问题角度偏一偏比如问“如果加载因子设成1会怎样”“如果设成0.5会怎样”我脑子里只有一串死记硬背的数字根本不知道怎么根据条件去推演。这个问题的病根在于“知识的组织方式”。背结论时你的记忆单元是“一句结论”是孤立的。而真正的理解记忆单元应该是“一条推导链”每一个结论都挂在几个底层公理下面。你记住0.75这个数和能从“时间换空间、空间换时间”的权衡推导出0.75这个数在面试时是两种完全不同的状态。前者是撞运气撞到原题就赢换一个角度就输后者是真正的能力怎么问都能从底层逻辑绕回来。我后来反思八股文之所以存在“背了又忘”的死循环是因为每一条知识点对大脑来说都是一个独立的、没有锚点的信息。大脑天然排斥孤立信息所以你得反复刷刷完一周不看又忘。但如果你给每条结论补上“推导链”结论就不再是孤立的点而是一棵知识树上的叶子树根是几个公理树枝是推导逻辑。这样复习一遍之后你忘掉叶子也能自己重新长出来。1.2 第一性原理复习法的核心从公理出发重新“算”出答案“第一性原理”这个词最早是物理学里的思路意思是把问题拆到不能再拆的基本事实和基本假设再从这些“公理”出发逻辑推导出整个体系。马斯克造火箭时说过一句话“不要类比要把问题回归到最底层的物理原理。”用这个思路来做面试复习就是把每个八股文问题拆到“操作系统的IO原理”“数据结构的时间复杂度”“TCP/IP协议设计初衷”这种层面然后一步步推导出面试官想听的答案。举个例子。Kafka为什么能支撑百万并发很多人背的答案是“因为Kafka用了顺序写、页缓存、零拷贝、批量压缩、分区并行……”。如果面试官继续问“为什么顺序写就能快随机写慢的根因是什么零拷贝到底省了什么”背答案的人就开始慌了。但从第一性原理出发你会先确立一条公理磁盘寻址慢、顺序IO比随机IO快几个数量级用户态与内核态之间的数据拷贝是有开销的网络传输是瓶颈。基于这几条公理Kafka的设计几乎是“逼出来的”——要解决磁盘写入效率问题所以日志必须顺序追加要减少拷贝开销所以引入页缓存和零拷贝要打满网络带宽所以批量发送、压缩。你不需要背Kafka具体功能点你把底层公理摆出来Kafka的每一项设计都变成“顺理成章”的选择面试官怎么追问你都能接住。这就是第一性原理复习法与传统背题法的本质区别传统复习是“记住正确答案”第一性原理复习是“把正确答案推出来”。前者靠重复记忆后者靠逻辑推导。后者还有一个巨大优势就是市场上八股文题种类再多底层公理就那么多你掌握了公理和推导方法面对一道没见过的新题也能现场“算”出答案而不是只能依赖刷题量。1.3 两种复习方式的对比为什么第一性原理更抗“追问”我把两种复习方式放在一起对比了一下差距非常明显。下面这张表我建议你先存下来复习每一道题之前都问自己一句我是“记住了”还是“能推出来”。维度传统背题法第一性原理复习法记忆单元每条结论独立记忆底层公理加推导链复习频率需要反复刷否则遗忘公理不变推导链可快速重建抗追问能力弱换个角度问就懵强从公理出发可应对各种变式迁移能力弱只答得上原题强能推导出同类型新问题初期成本低直接开背高需要先找公理、搭推导链长期收益低考完就忘高知识体系完整面试和工作中都用得上这表一列出来我自己都觉得“背题法”简直亏大了。但你可能会想那如果面试时间只剩三天还要不要用第一性原理我的答案是就算只剩三天也至少把高频题的推导链搭出来再针对推导链做精简记忆这比单纯背三百题更有效。因为面试官问八股文本质上就是在考察“你到底懂不懂原理”你只要把原理讲透结论稍微说偏一点问题也不大。2. 案例拆解怎么从公理推导出“Kafka为什么能支撑百万并发”2.1 先确立公理IO才是真正的瓶颈很多人一听到“Kafka支撑百万并发”第一反应是去找网上那些总结好的功能列表分区分段、顺序写、页缓存、零拷贝、批量压缩、ISR副本机制……然后一条条背。这样复习效率特别低因为列表之间是并列关系你记不住它们之间的逻辑因果。这时候该用第一性原理把题目重新拆开。先冷静问一个问题Kafka本质是一个消息队列它要做的核心事情是什么答案是“把数据从生产者搬到消费者”。那这个搬数据的过程最大的瓶颈在哪儿在IO。具体来说有三条公理必须心里有数第一磁盘的顺序读写速度非常高现代固态盘可以做到每秒几个GB而随机读写因为寻道开销会慢几个数量级。第二内存比磁盘快几个数量级但内存数据一旦断电就丢所以持久化数据最终还是要落到磁盘上。第三网络传输和内核态用户态之间的数据拷贝是真实开销每多一次拷贝、多一次上下文切换吞吐量都会明显下降。这三条公理不是Kafka特有的事实而是任何IO密集型系统都遵循的底层物理限制。一旦你确认了这几条公理再回头看Kafka的设计就会觉得根本不是“它有哪些特点”而是“在物理限制下它只能这么设计”。2.2 从公理推导Kafka的设计一条完整的推导链接着从公理往下推。先看生产端的写入因为公理一告诉我们磁盘顺序写比随机写快得多所以Kafka把每个分区的数据做成只能追加写入的log文件这就是“顺序写”的由来。对应地如果随机写磁盘寻道时间会让吞吐量崩掉。所以在数据落盘这个层面它的最优解就是“顺序追加”。再看为什么有页缓存。公理二说内存比磁盘快但数据要持久化。于是Kafka不走“应用进程内自己管理缓存”这条路而是直接用操作系统页缓存。写入时先写页缓存由操作系统统一决定何时刷盘消费时也优先读页缓存缓存命中时完全不碰磁盘。这样既利用了内存的速度又不失去持久性的保障。你甚至可以把页缓存理解成“Kafka把磁盘IO外包给了操作系统”。再看零拷贝。消费者读消息时如果按常规做法数据会经历“磁盘读入内核缓冲区 → 拷贝到用户态应用 → 应用处理后拷回内核态 → 发送到网卡”这条四步流程中间有多次拷贝和上下文切换。公理三说每一次拷贝和切换都有代价于是Kafka用sendfile等零拷贝技术让数据从磁盘到网卡直接在内核态完成减少用户态和内核态之间的来回搬运。这一步省掉的不只是CPU更是系统吞吐量的天花板。再加上批量发送和压缩。生产者把多条消息打包成批量一次性发给BrokerBroker存储和分发也按批量处理这样做可以显著减少网络请求次数更好地打满网络带宽。对应公理三网络传输是瓶颈凡是能减少包数量、减少字节数的设计都会带来吞吐量提升。最后分区分段让不同分区可以并行读写突破单块磁盘单线程的瓶颈同时分段也方便数据清理。到这里整个推导链已经闭环了不是“Kafka有六个特性所以快”而是“因为IO有这几条物理限制所以Kafka必须顺序写、必须用页缓存、必须做零拷贝、必须批量压缩、必须分区”。这就是把背诵题变成推理题的过程。2.3 用“问题树”给每个面试题做第一性拆解这种拆解做成习惯后我自己总结了一套通用方法叫“问题树拆解法”。具体操作分三步第一步把面试题变成一个“它要解决什么问题”的问题。比如“Kafka为什么快”其实是“Kafka如何在IO瓶颈下达到高吞吐”“为什么用B树做索引”其实是“如何在磁盘上做高效的查找和范围扫描”。第二步列出这个问题面对的底层公理。公理就是物理定律、数学性质、协议事实不需要再往下拆。比如B树索引的公理是磁盘IO慢、树高决定磁盘IO次数、范围查询需要中序遍历HashMap的公理是数组支持O(1)随机访问、哈希函数可能冲突、扩容要重新分配。第三步从公理一步步推导直到推导出的结论覆盖面试题涉及的所有考点。每推导出一步就在笔记上写一条“为什么-因为”把链条串起来。这套方法的价值在于它让你在复习时不会不知道“从哪儿开始”。很多人觉得复习八股文难是因为面对几百道题无从下手。但问题树拆解法告诉你每个题目只需要找到它底层的三五条公理公理一确认整个答案就有了骨架。我在后面章节会给出一个可填写的表格模板。3. 实操流程三步建立你自己的“第一性原理复习笔记”3.1 第一步给高频题找“公理层”先分清哪些必须背有人可能担心第一性原理复习会不会变成“什么都不背”不会。第一性原理复习法也要背东西但背的东西很少而且只背“公理层”的内容其他所有层级的结论都尽量推导。什么是公理层以Java方向为例你背HashMap时不需要背“默认初始容量16”“加载因子0.75”“链表转红黑树阈值8”这些结论你需要背的是数组随机访问是O(1)哈希冲突时可以用链表法解决链表太长时查询会退化成O(n)红黑树能保证O(logn)的查找。这几条是数据结构的基础性质它们不会被JDK版本更新推翻属于公理层。0.75这个数字反而可以推导出来它是“空间利用率”和“冲突概率”之间的一个权衡默认0.75是JDK经过测试选出来的平衡点。就算你记不清0.75你也可以说“一个介于0.5到1之间的平衡值兼顾了空间和冲突”这个回答依然有逻辑。再比如TCP三次握手。公理层是IP信道不可靠数据可能丢失、延迟、重复通信双方要确认对方是否具备收发能力每次连接要初始化序列号。从这三点出发“三次握手”几乎是被迫的。第一次握手客户端向服务端发起SYN服务端确认了“客户端能发”第二次握手服务端回SYNACK客户端确认了“服务端能收能发”第三次握手客户端回ACK服务端确认“客户端能收”。前两次完成后客户端已经确认链路没问题但服务端还没确认客户端能收所以必须有第三次。这个推导比干背“三次握手目的是建立全双工连接”要深刻得多面试官追问“为什么不能两次”时你也不会慌。我建议你复习时先做一张清单把科目涉及的公理层列出来。比如操作系统进程与线程的调度开销、用户态与内核态切换成本、虚拟内存与页表、IO模型阻塞非阻塞同步异步。计算机网络分组交换与不可靠信道、TCP协议目标、HTTP无状态、可靠的传输需要确认与重传。Java基础JVM内存结构、对象生命周期、GC可达性分析、并发中的可见性/原子性/有序性。数据结构数组、链表、树、哈希表的时间复杂度与空间复杂度、查询与插入的权衡。这些公理加起来不超过一百句话。先把它们背熟剩下的推导链都从这个清单出发复习压力会小很多。3.2 第二步搭推导链把每个考点连成线公理找好之后第二步就是搭推导链。我用的工具很简单就是一个Markdown表格或者直接一个Excel分成四列题目、公理、推导链、结论。每复习一道题先把“结论”写出来再往上补“推导链”最后把公理列在最前面。有人会问顺序不是应该从公理推到结论吗我自己的经验是先写结论再补推导链因为题目是现成的结论也常见倒推“什么公理能推出这个结论”更容易下手。以“为什么MySQL用B树而不是B树”为例这个题的结论是B树只在叶子节点存数据叶子节点之间用双向链表连接范围查询效率高树的高度更低磁盘IO次数更少。推导链是什么呢是从“磁盘IO按页读取单次IO能读16KB左右”这个事实出发如果要查范围B树在中序遍历时需要回溯而B树叶子节点本身就有链表直接遍历即可如果要把整棵树的索引都放内存B树非叶子节点不存数据相同高度下能容纳更多索引。公理就三条磁盘随机IO很慢查询要尽量少读页内存有限索引要尽量紧凑范围查询在数据库中高频出现。三条公理放上去整个答案就非常有结构。搭推导链阶段要注意一个陷阱不要写成论文。有人一用第一性原理就恨不得把每一步都写得不漏一点最后推导链几十行比背原文还痛苦。我的经验是推导链控制在3到5个“为什么-因为”步。超过5步就说明公理没选好中间可能缺了一环。比如Kafka的例子我只写“磁盘随机慢→顺序写→性能高”加“内核态用户态拷贝开销→零拷贝→吞吐提升”就够了不用再去解释CPU缓存、DMA这些更底层的细节。面试官没有追问到那一层就不用展开。搭建的时候也别只搭一条链尽量横向比较同类型的题。比如把“为什么HashMap用链地址法”“为什么Redis用跳表”“为什么MySQL用B树”放在一起你会发现它们的公理都指向“数据结构的查找与更新复杂度”只不过各自的读写场景不同。这种横向对比能帮你构建知识网络而不是一条条孤立的线。3.3 第三步盖住结论从公理“默推”一遍推导链搭完之后怎么检验自己是真会还是假会我的方法特别简单盖住结论只看“题目”和“公理”两列然后出声把整个推导链讲一遍。讲的时候手机开录音讲完再回听。这一步看似笨拙实际效果很好因为它强迫你把大脑里的逻辑链条完整过一遍而不是“看着笔记觉得懂了”。这里要特别提醒一个常见毛病很多人在复习时眼睛看着推导链心里默默说“对就是这样”然后就过去了。这种“看懂”是最大的假象。你回听录音就会发现自己讲的时候很多地方是跳跃的一会儿说容量、一会儿说负载因子中间没有因果连接词。比如“所以扩容就是因为冲突多了”和“因为冲突多了链表查询变慢为了维持O(1)的平均复杂度所以需要扩容而扩容要重新哈希所以引入了0.75作为空间与性能的平衡”讲出来的深度和说服力完全不同。如果默推失败怎么办不要立刻翻答案。我给自己定了一个规则至少卡住30秒把推导链往前回想一步问自己“这一步是从哪条公理来的”。大多数情况下卡住是因为“公理”没记牢比如忘了数组随机访问是O(1)自然推不出HashMap为什么用数组做桶。这时再回去看公理层比直接看答案有效得多。因为卡住的位置就是你应该补的知识缺口而不是你记忆的模糊点。这三步走下来一个科目大概需要一到两周的碎片时间。我当时用这个方法复习Java基础加MySQL加Redis一共整理了六十多张卡片每张卡片就是一行表格内容非常精简。之后我每天只需要花20分钟翻一遍推导链就能维持整棵知识树的完整度。比原来背三百道题的方案轻松太多了。4. 面试现场怎样用“推导链”代替“背诵答案”4.1 回答的黄金结构结论先行推导跟上有人说面试时紧张脑子里只记得零碎词汇就是因为复习时没有为“表达”做好准备。第一性原理复习法天然适合面试答题因为它给每个问题提供了一条逻辑主线。回答时我建议用“结论先行推导跟上”的黄金结构先说最终结论让面试官知道你有明确答案然后再从公理出发用两三个“因为所以”把推导链展开。举个例子。面试官问“什么是零拷贝”如果是以前的我可能会说“就是减少数据拷贝的技术有mmap和sendfile”然后等面试官追问。但现在我会这样答“零拷贝核心是解决数据从磁盘到网络过程中多次内存拷贝和上下文切换的问题。常规IO流程中数据要从磁盘读入内核缓冲区再拷贝到用户态进程处理完再拷回内核缓冲区最后从内核缓冲区发到网卡这里至少发生四次拷贝和四次用户态与内核态切换。零拷贝的思路是如果应用不需要对数据本身做修改就让数据全程待在内核态通过sendfile这类技术从磁盘到网卡只经过必要的两次拷贝省掉用户态往返。所以零拷贝的表面含义是减少拷贝次数本质是减少上下文切换和CPU开销。”这段话没有任何死记硬背的痕迹完全是靠“数据拷贝要经过哪些环节”这条公理推出来的。这种回答方式有一种隐藏优势面试官能感受到你的答案是从原理“长”出来的而不是“背”出来的。面试结果也印证了这点我明显感觉到追问变少了、点头变多了。因为面试官在听你答第一句的时候就已经知道你是不是真懂你只要把推导链讲出来他后续的追问反而是在帮你展示。4.2 被追问时不慌从公理重新出发“追问”是第一性原理复习法最能拉分的环节。传统背题法最怕追问因为追问的问题往往是“变式题”不是原题。但第一性原理复习法训练出来的答题者面对追问时是有退路的——退到公理层从公理重新推。我举一个真实面试中遇到的追问。面试官问“TCP为什么要三次握手”我按推导链答完他接着问“那如果第三次握手丢了会怎样”这个问题如果没想过很容易背完原题直接宕机。但从公理出发就能推第三次握手是客户端确认服务端能收到数据的关键如果丢失服务端会认为自己发送的SYNACK没有送达于是它会重发SYNACK客户端可能已经进入建立连接的状态在收到重传的确认后它……这时候又涉及半连接、全连接队列等细节。只要你能把“握手时双方确认对方收发能力”这条公理拎出来再根据“丢包就会重传”的TCP机制很自然就能推出“服务端会超时重传客户端可以忽略极端情况下可能出现半连接或重复连接”的结论。你不一定知道答案的所有细节至少能保证方向不错而且让面试官看到你的分析能力。另一个常见追问是“为什么要这个参数而不是那个参数”。比如Hashmap加载因子为什么是0.75你说了“空间与时间的权衡”面试官会问“那加载因子设成1和0.5分别有什么代价”从公理推设成1空间利用率高但冲突概率变高链表变长查找变慢设成0.5冲突减少查找快但容量扩大一倍浪费空间扩容反而更频繁。你只字不用提0.75这个数字也能把权衡讲得清清楚楚。0.75只是这个权衡下的一种选择。4.3 一个完整答题模板从“记忆”到“计算”的转变为了更直观我总结了一个“计算式回答”的模板每次回答八股文题时按这个模板组织语言结论先说这个技术解决的核心问题。 公理说一个被公认的底层事实比如“磁盘顺序IO远快于随机IO”“多线程并发有共享资源竞争问题”“网络传输是不可靠的”等。 推导链讲两到三个“所以……因为……”把公理一步步接到结论上。 落点最后再回到面试官的具体问题上明确与最初结论呼应。我把这个模板套在“为什么用Redis做缓存”上演示一遍结论是“Redis把数据放在内存中用简单的数据结构和IO模型降低了访问延迟”。公理是“内存访问速度远高于磁盘且网络IO中的序列化、线程切换开销远高于数据本身计算开销”。推导链是“因为内存快所以Redis把热数据放内存因为要减少网络开销所以在内存中尽量使用简单命令、减少多次往返因为单线程模型避免了锁和上下文切换所以在IO密集的场景下吞吐依然很高”。落点就是“所以Redis做缓存的核心价值在于它把底层慢的磁盘IO换成了快的网络加内存IO而其他数据库的瓶颈主要就在磁盘IO”。你看这套回答完全由公理驱动不是列表背诵。而且这个模板还有一个好处就是让你在面试时“不怕被问倒”因为就算你某个结论说错了但推导链的逻辑是对的面试官通常也会愿意顺着你的思路继续对话而不是直接判死刑。面试本质上是一次技术对话不是机器判分你这边的逻辑自洽比准确记住一个数字重要得多。5. 常见问题与避坑用第一性原理复习的五个深坑5.1 坑一公理选错层级导致推导比背诵还复杂第一性原理复习法最常见的问题是公理选得不是“真正的最底层”导致推导链无限拉长。比如有人复习“Java线程池”时非要从CPU指令级开始推一直在讲“并发是CPU时间片轮转”“上下文切换需要保存寄存器”这虽然也是公理但层级太低了推导到线程池的饱和策略要绕很远。我的建议是公理的层级以“面试官可能追问到的最深程度”为准。比如线程池问题面试官最多追到“计算机组成原理中的上下文切换开销”和“操作系统线程调度模型”你把这些当公理就够了不必继续拆到“寄存器是CPU内部的高速存储”这种底层。选公理的标准是在这个面试场景下它不需要再被解释直接当成双方都接受的事实。就像解几何题公理是“两点之间线段最短”不是“笛卡尔坐标系下的距离公式”。选错层级最典型的表现是推导链超过五步一旦发现立刻回升一层重新选公理。5.2 坑二只推不练推导链写出来就以为自己会了有相当一部分人觉得推导链写在笔记里就等于“复习到了”。然后到了面试现场发现自己讲不好逻辑是对的但语言组织得像论文答辩面试官听两句就走神了。这背后的问题是把“写出来”当成了“讲出来”没有做表达层的刻意练习。我后来给自己定的要求是每道题用一分钟时间口头讲一遍必须做到“不结巴、不回头”。如果一句话说了一遍又重复一遍说明这个推导链还没内化到语言层。你可以模拟面试也可以对着录音讲关键是讲出来的内容要流畅。第一次讲会很痛苦但讲三遍后就会形成一种自然的答题腔调面试时几乎不用临时组织语言。这步看起来简单其实是我踩过最深的坑背题时代我从来不做口头表达练习结果笔试全过、面试就卡。5.3 坑三面对“纯记忆题”也要强行推导浪费时间不是所有八股文都适合用第一性原理来复习。有一类题属于“纯事实记忆”比如“Redis的maxmemory默认策略有哪些”“TCP默认端口号是多少”“JVM的-Xms和-Xmx默认值”。这些问题的答案不取决于推导完全是规格和约定。遇到这种题直接用速记卡就行了别硬推。怎么区分哪些该推、哪些该背我的经验是看问题里有没有“为什么”或“怎么设计”。有就推导没有就当作公理记住。比如“为什么Kafka用分区”有推导价值但“Kafka的默认副本数是1”没有推导价值直接背。不要有“必须用第一性原理”的执念公式化推导只用于考察设计思想的题目纯记忆题就安心记忆。判断标准就一句话如果这个问题的答案可以被“其他技术方案”换掉而且换掉以后仍然成立那它就是设计选择要去推导如果答案是不可变的物理事实或协议规定直接背。5.4 坑四忽略横向对比推导链变成单点知识第一性原理复习法有一个隐患如果你只针对单道题搭推导链会形成很多条孤立的链链条之间没有交叉最后还是记不住。真正的高效复习要主动做横向对比。比如复习“为什么Kafka高吞吐”和“为什么RocketMQ用到了mmap”“为什么RabbitMQ性能不如Kafka”这三个问题是同一组公理下的不同选择。放在一起看你会发现它们都围绕着“如何解决IO瓶颈”展开只不过Kafka选择零拷贝、RocketMQ选择在页缓存上做文章、RabbitMQ更侧重于功能灵活。遇到类似场景我会专门做一张横向对比表把不同技术的公理、推导链、最终选择放在一起。这样复习的不再是三道题而是一个知识块。面试官如果问“Kafka和RabbitMQ为什么性能差别大”你也能从IO原理这个大公理出发把两条推导链合并成一段回答。5.5 坑五以为推一遍就结束了没有“衰减式复习”第一性原理推导的东西虽然比死记硬背牢固但也不是一步到位。推导链包含“公理”和“中间结论”时间长了中间结论会模糊但公理基本不会忘。所以我建议采用“衰减式复习”第一次复习把推导链完整过一遍隔一天只看公理和结论尝试自己补回中间步骤隔一周再次只看题目从零开始推导一个月后如果能从题目直接推到结论这条知识就彻底长在你脑子里了。我自己用这个节奏复习了两个月后期基本每天只需要花10分钟把一周内搭过推导链的卡片全部粗略翻一遍没有大的遗忘。比原来每天刷几十道新题、一周后忘一半的状态强太多了。有人问过我要不要刷题我的回答是刷题可以留着后期做“查漏补缺”不用把刷题当成复习本身。用第一性原理复习法把知识体系搭好之后刷题反而变得很轻松因为你一眼就能看出每道题是在考哪条公理、哪段推导链。还有一个小技巧如果你复习到一半发现状态不对比如开始机械地抄笔记那就停下来找一道最基础的公理题讲给自己听。因为第一性原理复习法的核心是保持“推导的主动性”一旦进入被动吸收状态就又回到了背题的旧路。第一次上手不顺利很正常我自己花了整整一周才适应“不看答案先问为什么”的节奏但只要挺过初始阶段后面就是越学越快的正循环。
返回列表