本文写于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++可以做这么多事情!(然而是个坑)