编译原理:当你想写个静态网站生成器,再发现基本技能不过关的时候,就后悔没早早投入时间精力弄明白了。看看当今巨头,Google 的 go 和 dart,facebook 的 hack,Apple 的 swift,每一个成功的巨头都认识到想把一件事做好,就一定要自己从头做,从语言着手。再例如 Chrome 用的 V8 更是引领一个时代。这方面的牛牛们,都是一言不合就扔给你一个新语言。 算法导论:这个用过的都说好,没事多翻两遍,总会有新的收获。计算机专业,本科期间没刷过一阵 OJ 的,终身遗憾啊。 其实还有一个没提到的,操作系统原理。不知道是题主已经受益了,还是简单没想到,也是常被列入屠龙技的。一个例子是在各种嵌入式平台上,各种自己动手写简单 OS 的,常常有。或者就算不是自己写,使用别人写的,不完整的或者部分实现的裸露的嵌入式 OS,对于操作系统原理的理解更是必不可少。另一个例子是,Apple 的 iOS/OSX 和 Google 的 Android,都是大杀器。 再一个,网络原理和 tcp/ip 协议栈。用 dsp 的时候,移植过一个精简的基于 C 的协议栈,累坏了,ti dsp 的 c/c++ 编译器各种坑。这个移植协议栈传输速度慢,不稳定,出了局域网本网段,传输成功率就靠概率。还好项目不大,一个固定 ip 局域网解决问题,凑活完成了。中间解决数据错误和丢包的技巧是一个数据包发两遍,各种汗。就怨自己学艺不精没能力没时间好好调试。后来换了嵌入式 linux 和 android,系统内置可靠稳定的网络协议栈.