我认为做到下面这些就够了:
算法:只熟悉那些最常用的数据结构和算法,avl-tree、rb-tree、hash、heap、quickly-sort、冒泡 etc
kernel:进程管理、文件系统、IPC,其他如驱动、网络部分根据工作需要时再深入
编译原理:对前端,自动机、LL/LR只做原理上的了解,重点熟悉lex&yacc的用法,后端就完全看你的实际工作需要了
体系架构:x86 & arm. 这方面个人认为如果想做一个有含金量的程序员,尤其是搞嵌入式的,至少对一种架构寻根究底。
软件工程:要明白我们绝大多数不是搞研究,而是搞工程。必须培养准确的需求分析、良好的工程方向和进度把握能力
除了上面这些基本功外,其他都是次要的
如果你的志向是做一个普通的工程人员,那么到此为止,请节制你的求知欲望,珍爱生命,享受生活!
如果你的志向是做一个变态的工程人员,那就请进一步深入数理逻辑、离散数学、TAOCP……
语言选择,需要什么学什么
工具选择,什么称手用什么
温馨提示:答案为网友推荐,仅供参考