打开网易新闻 查看精彩图片

过去一年,GitHub上C++仓库的提交量涨了23%,但 LeetCode 周赛参与人数只涨了7%。

多数人卡在同一个地方:DSA——Data Structures and Algorithms(数据结构与算法)。这三个字母像一道自动门,没刷够题就不让进大厂面试。但刷题本身又枯燥得像嚼蜡,于是无数人选择「先做个前端项目压压惊」,一压就是三年。

一位正在脱产学习的开发者最近做了个反常识决定:不躲了,用C++硬刚DSA,并且全程公开记录。他的方法有点意思——不是刷完题再总结,而是边学边用大白话拆解,逼自己消灭所有知识盲区。

为什么选C++这个「自虐」选项

为什么选C++这个「自虐」选项

Python写链表像搭积木,C++写链表像造积木。你得手动分配内存、处理指针、考虑析构,错一步就段错误。

但这位开发者发现,这种「痛苦」恰恰是理解深度的代价。Python把指针藏得太好,学的人以为懂了引用,实则没碰过内存布局。C++强迫你直视底层:节点在堆上还是栈上?next指针悬空了怎么办?

他的学习路径被切得极碎。不是「今天学链表」,而是:

第一步:搞懂节点是什么结构体

第二步:指针怎么把节点串起来

打开网易新闻 查看精彩图片

第三步:插入时指针的修改顺序

每个概念必须能用一句话讲给完全不懂的人听。讲不清楚,就回去重学。

公开学习=给自己上枷锁

公开学习=给自己上枷锁

他的核心策略是「build in public」——把所有学习过程公开记录。

这听起来像行为艺术,实则是利用社交压力倒逼输出质量。当你知道有人会看你的解释,就不敢糊弄。为了写清楚,你必须真正理解;为了真正理解,你必须发现之前以为懂了的盲区。

「 senior engineers who forgot what it feels like to be a beginner 」——这是他吐槽多数教程的原话。资深工程师写的指针教程,往往跳过「为什么需要指针」直接讲语法,仿佛读者天生就该懂间接寻址。

他的替代方案:用类比。指针像快递单上的地址,节点像仓库里的包裹。单链表是单向走廊,双向链表是能掉头的高速。这些比喻不精确,但能让大脑先搭个脚手架,再慢慢替换为精确理解。

具体执行:从0到「能解题」的四阶段

具体执行:从0到「能解题」的四阶段

他的路线图没有宏大叙事,只有可执行的颗粒度:

打开网易新闻 查看精彩图片

阶段一:基础数据结构——数组、链表、栈、队列,每个都手写实现,不调用STL

阶段二:递归与分治——用C++写递归时,栈帧的消耗是真实的,这让人真正理解递归深度限制

阶段三:树与图——指针在这里变成左右孩子、邻接表,内存管理错误会直接体现在遍历结果上

阶段四:动态规划——状态转移方程用C++实现,空间优化时必须手动控制数组维度

每个阶段产出两篇文档:一篇技术实现,一篇「给外行看的解释」。后者是前者的试金石。

给同样想逃的人

给同样想逃的人

他的原话很直白:「If you're in the same place, you're not behind. You're just starting……like me.」

DSA的恐怖感很大程度上来自比较。刷题网站上有人10分钟AC四道题,你一道想两小时,自然想关电脑。但公开学习的价值恰恰在于:它把「比较」转化为「同行」——你看到的不是分数,是另一个也在挣扎的具体的人。

他目前的进度:刚写完双向链表的完整实现,包括内存泄漏检测。下一步是红黑树,预计需要两周。

如果你也在某个时刻对着「请手写LRU缓存」的面试题发呆,他的记录或许值得一跟。毕竟,看一个真实的人如何从零啃下硬骨头,比看第十遍《算法导论》的序言更有代入感。

最后一个细节:他在文档里埋了个小彩蛋。每篇技术文档的末尾都有一行注释掉的代码,内容是当天学这个知识点时听的歌名。最新一篇是《The Man Who Sold The World》。