本文写于2020-08-04,具有一定的时效性以及个人主观局限性,欢迎理性提建议
- 坚实的C语言基础
以C语言为计算机学习的突破口,向上可以学习更抽象的高级编程语言(eg. C++),向下可以学习编译链接,一些底层结构等等(Q:一个C语言程序的生命周期是怎样的?).搞懂各种奇奇怪怪的指针,分清楚传值,传引用(指针).建议使用WSL,搭上VScode的wsl-remote,可以方便熟悉Linux环境以及编译链接,gdb debug等等工具链的使用.
推荐看视频郭伟的程序设计与算法,看书C Primer Plus,并刷点基础的OJ题
- C++ OOP(面向对象) 模板编程 C++11
RAII,虚函数虚表,这是C++ OOP的考察重点.C++11中新增了移动构造,移动赋值函数,搞懂移动语义.一次构造对应一次析构.智能指针.模板编程要懂点,是一种编译时多态,STL中广泛使用.需要看懂一点STL.STL中还有内存分配器,最好搞懂一点.各种最佳实践….
推荐看视频侯捷 博览网的系列,看书C++ Primer(没有Plus!!!),Effective C++系列,深度探索C++对象模型,STL源码解析.
- 数据结构与算法
好好刷题,没有捷径,面试资本.
有时间看清华大学邓俊辉的数据结构
- 操作系统(多线程编程)
虚拟化(中断,进程线程等等),并发(互斥锁,信号量,条件竞争等等),持久化(数据库,文件系统)
推荐 操作系统导论 , 英文名Operating Systems: Three Easy Pieces.
- 计算机网络(网络编程)
网络协议模型,TCP,UDP,HTTP,熟悉常用的应用层,传输层,网络层协议.了解QUIP
推荐书图解TCP/IP
- Linux基本操作
- Unix环境高级编程,Unix网络编程卷1卷2
学习Linux 常用API,套接字,了解进程间通信
- 数据库优化
- 懂一点常用设计模式
- Google的C++编程风格指南
以此为中心慢慢学,深入计算机系统学一点底层,学习一门函数式编程语言(Haskell),学习使用一个IDE/编辑器(vim,VS),学习Qt跨平台做客户端,学习编译链接(程序员的自我修养—链接、装载与库),学习C++的历史(C++的设计与进化)
看!学习C++可以做这么多事情!(然而是个坑)