跳至主要内容
面试笔记应该越用越厚

面试笔记应该越用越厚

换工作的次数多起来之后,我发现一件很浪费的事:每次准备面试,笔记都从零开始。上一轮的整理要么找不到,要么找到了也不敢信——半年没维护的文档,里面那些结论自己也说不清还对不对。

三年里我换过三次工具,每次都以为问题出在软件上。后来才明白,问题在于我把笔记当成了消耗品:为这一次面试服务,用完就扔。工具的迁移只是把这个循环重演了一遍。

一次性准备的问题

临时突击写下的东西,结构是按当时的焦虑来的。哪块心虚就先写哪块,写完也不再回头看。等 offer 到手,这套东西的使命就结束了。

整理本身也容易变成拖延。把笔记按颜色分类、给标签设计层级、挑一个更好看的主题,这些事做起来有反馈,但它们不产生任何面试能力。我在这上面浪费的时间,比真正复习的时间多。

它还有另一个毛病:不可信。笔记里混着从各处抄来的结论和自己验证过的东西,没有区分。隔一年再看,分不清哪句是背下来的,哪句是踩过坑之后改的。分不清就没法用,因为不知道哪部分还能信。

一份无法判断可信度的笔记,价值接近于零。

所以我现在给每条笔记留一个来源字段,写清楚这是「看到别人这么说」还是「自己跑过」。前者随时可能过期,后者至少有个上下文。这个字段很土,但它决定了半年后打开这份笔记时,是能直接用,还是得从头验证一遍。

来源字段还有一个作用:它让「不确定」变得可以写下来。有些结论我只在一个项目里见过,那就标成个例;有些是文档里写的、但没验证过,就标成待验证。承认这一点比假装确定有用,因为半年后的自己会感谢这份诚实。

另一个变化是不再追求覆盖。以前会想把整个知识地图补全,目录列到三层,实际写的不到一半。现在只写被问到过和答错过的东西,覆盖面小,但每一条都有出处。

工具的选择也在这一层。Logseq 和 Obsidian 我都长期用过,差别在结构:Logseq 的原子单位是块,天然适合一问一答;Obsidian 的原子单位是页面,适合写连贯的长内容。Logseq 的闪卡是内置的,给一个块加上标记就进了复习队列,不用装插件。这个低摩擦很关键——如果要先花半小时配置才能开始背,我大概率会放弃,而且会在放弃之后安慰自己说工具不合适。

Obsidian 的复习要靠插件,配置麻烦一些。但它写长文舒服,系统设计那种需要展开权衡的内容,用块来组织会很别扭,一行一行往下缩进,写着写着就散了。

我在两边都搭过库,结论是不要双修。同时开两个,最容易发生的事是记不清某条笔记在哪边,最后两边都成了半成品。选一个,把不顺手的地方忍下来。工具的不顺手是可以适应的,注意力被切碎不行。

迁移成本也要算。把一个库从 Logseq 搬到 Obsidian,双链和块引用通常要重做,标签还能保留,结构基本作废。我第二次迁移之后就不再折腾了,因为每次迁移都等于把旧笔记冻结,而冻结的笔记是不会再被打开的。

结构按状态分,不按主题分

按主题建文件夹是个陷阱。一道关于缓存穿透的题,既属于后端,又属于数据结构,还关联到具体项目。放进任何一个文件夹都不完全对,于是开始复制,复制之后就再也不确定哪份是最新的。

我现在按处理状态分四层:收进来的、待整理的、原子题目、概念。题目一题一档,平铺,不建子目录。概念单独放,题目里只链接,不抄定义。

代价是找东西要靠搜索和索引页,不能靠翻目录。习惯了以后反而更快,因为记住一个词比记住一条路径容易,而且路径会变,词不太会。

索引页我只在两类地方建:反复答错的那批题,和某个方向的整体脉络。后者在准备系统设计时有用,因为面试官的追问是跳跃的,需要有一张图能随时跳过去,而不是靠回忆文件夹顺序。

标签我用的很少,只保留两类:难度和状态。标签一多就会变成第二套文件夹,而且比文件夹更难维护,因为没有任何东西阻止我给一条笔记打十个标签。

分类是在回答「这条笔记属于哪里」,链接是在回答「这条笔记和什么有关」。后者才是面试真正用到的。

这套结构有个副作用:它逼我承认有些笔记其实没内容。一个只有标题和两句定义的页面,放在文件夹里看起来像资产,放进平铺的列表里就显得很空。空着也好,至少知道哪里该补。

平铺还有个隐性好处:它让重复暴露出来。同一个知识点被写了三遍,放在一起就很明显,可以合并。文件夹结构里这种重复是看不见的,因为三份分别躺在三个目录里。

索引页我也不会一次建完。等某个方向的题目攒到十几条,再回头拉一页出来,顺序按当时的理解排。提前设计的分类体系,通常活不过三个月。

一条笔记该有什么

最早的模板只有问题和答案。复习的时候很痛苦,因为答案太长,每次都要重读一遍,读完也不知道自己到底记住了没有。

后来改成三段。第一段是三十秒能说完的版本,逼自己压缩;第二段链接到底层的概念笔记;第三段是项目里的具体经历,按情境、任务、行动、结果写。

PLAINTEXT6 行
1
2
3
4
5
6
问题:
一句话答案:(三十秒内能说完)
概念:[[相关原理]]
经历:
情境 / 任务 / 行动 / 结果
放弃了什么

第三段是唯一抄不来的部分。前两段网上到处都有,项目经历只有自己有。面试里真正区分人的也在这里:同一个技术点,能讲出自己在什么约束下做了什么取舍,和背出定义,是两件事。

我在这上面吃过亏。有一次被追问「为什么当时不用另一个方案」,我答不上来,因为笔记里只记了结论,没记当时的限制条件。后来我在每段经历后面加了一行「放弃了什么」,情况才好一些。

模板里还有一栏是可选的:当时的错误答案。把最初的错误理解记下来,比记正确答案有用,因为下次大概率还会那样想。这个做法有点自曝其短,但复习的时候确实有效。

链接概念和抄定义的区别,一开始我也不在意。直到改一个概念的理解时,发现十几道题里各有一份过时的解释,才意识到重复的代价。现在题目里只留一句结论和一个链接,要展开就跳过去看那一份。

复习的成本要低

间隔重复的道理都懂,难在执行。我试过每天固定半小时,坚持了两周。后来改成通勤时刷十几分钟,反而稳定下来。固定时段太像任务,一旦某天没做,后面就容易整个放弃。

工具自带的算法我基本不调。参数调得再细,也不如每天真的打开一次。这一点上我更相信习惯,不太相信调度。

关键是把单次成本压到很低。卡片要小,一张只问一件事;答案要短,短到能在心里默念完;卡住的时候能一键跳回原文。这些细节决定了会不会真的去复习,比算法本身重要。

卡片的质量比数量重要。我踩过的坑是写「了解某某吗」这类问题,看起来覆盖了,实际上什么也没测出来。改成「某两个方案在冲突概率高的时候分别表现如何」,才逼得出具体的判断。

写卡片的时候我会刻意留一个「为什么」。只记结论的卡片,复习三次就变成噪音;带上原因,每次复习都在重新推导,记忆才比较稳。

复习的节奏我也调过几次。每天刷全部卡片,一周就疲了;只刷到期的,又容易漏掉长期不出现的那批。现在是把到期的刷完,再手动挑三五张很久没见的重看一遍。这个组合没什么理论依据,纯粹是试出来的。

删卡的时候我会留一个备份,但从不回看。留着只是为了不心疼,回看会让人忍不住恢复几张,队列又慢慢变长。

还有一个坑是收集。看到面经就导入,打完标签就觉得自己会了。这个错觉很强,但复习队列不会骗人——积压几百张没看的卡,等于没有。我现在会定期删卡,看起来浪费,其实是在控制总量。一个只能维护两百张的库,比一个存了两千张但从不打开的库有用得多。

还有一个反直觉的观察:笔记的价值不在写下的时候,在重写的时候。一条笔记如果一年没被改过,要么它已经完全内化,要么它已经过期了。我分不清是哪一种,所以会定期挑几条重写,重写的过程本身就是复习。

面试结束后那半小时是最值钱的。趁记忆还在,把被问住的地方写成具体的缺口,而不是「这块我不熟」。前者能补,后者只能焦虑。

具体的意思是:能写出当时卡在哪一句话、缺的是哪个环节、下次类似的问题应该从哪里切入。写不出来,说明还没想清楚,那就先放着,别装作已经复盘过了。

复盘里我最常写的一栏是「判断错在哪」。答不上来是知识问题,判断错了是经验问题,两者的补法不一样。前者加一条笔记就够了,后者得改笔记里的结论,有时候还要把之前几条一起改。

复盘还有一个容易忽略的部分:面试本身的信号。对方问了什么、追问到第几层、在哪一句停下来,这些信息比答案更能说明岗位的期待。有时候一场面试挂了,但复盘出来的结论是「这个方向我确实不想做」,那也是一条有用的结论。

我现在会把面试记录和题库分开。前者是流水账,按时间排;后者是提炼过的结论。混在一起的话,题库会被流水账淹没,而流水账又不该被当成结论。

这套东西我还在改。唯一确定的是,它得能承受我半年不看它。如果一份笔记需要持续维护才不会失效,那它和一次性笔记的差别其实不大。


© Lu’s Blog · 版权所有

关于本文

由 Lu's Blog 撰写,采用 CC BY-NC 4.0 许可协议。

#知识管理 #笔记 #面试

评论