目录

学习路线(持续更新)

C++语言

C++基础语法

  • 头文件以及宏定义

  • const 与 constexpr

  • auto 与 decltype

  • using 与 命名空间

  • enum 枚举类

  • 分离式编译

  • 指针与引用

  • C++结构体与C结构体

  • 传值方式

  • 静态变量static

  • volatile关键字

  • 隐式类型转换与 explicit 关键字

  • 类型转换 static_cast<>, dynamic_cast<>

  • Lambda表达式

面向对象

  •  面向对象理解:封装、继承、多态

  • struct 与 class区别

  • 构造函数

    • 初始化列表:顺序

    • 默认构造函数

    • 拷贝构造函数

    • 移动构造函数

  • 重载和重写

    • 运算符重载

    • 拷贝赋值运算符

  • 多态与虚函数

    • 多态:编译器多态(模板),运行时多态(重写)

C++标准库

IO库

  • IO类: iostream

  • 文件输入输出: fstream

  • string流:sstream

标准模板库(STL)

  • 序列容器(vector,list,deque)

    • vector: 扩容

    • list: 双向列表

    • deque: 多node组合

  • 关联容器

    • (multi) unordered_map/set : Hash Table + 链表/红黑树

    • (multi) map/set : 红黑树,有序

  • STL6大组成部分

    • 容器(Container)、算法(Algorithm)、迭代器(Iterator)

    • 适配器(Adapter)、分配器(Alloctor)、仿函数(Functor)

string类

动态内存与智能指针

  • shared_ptr

  • unique_ptr

  • new 与 delete

  • 右值引用 (&&) 与 对象移动(std::move)

异常处理

  • 抛出异常

  • 捕获异常

  • 异常类层次

数据结构与算法

数据结构

  • 链表

    • 单向链表

    • 双向链表

  • 队列

    • 环形队列
    • 双栈
    • 建堆、调整堆

    • 大顶堆、小顶堆

  • 二叉树

    • 完全二叉树

    • 先序遍历、中序遍历、后序遍历

    • 二分查找树BST

    • 红黑树

    • b树、b+树

    • 有向图、无向图

    • 邻接表、邻接矩阵、稀疏矩阵

  • 散列表(Hash Table)

  • 跳表

  • 布隆过滤器

算法

  • 排序: 快排、归并、堆排序 、希尔

  • 分治法、减治法,二分查找

  • 图算法:dijkstra算法,最小生成树Kruskal

  • DFS,BFS

  • 贪心算法

  • 动态规划

操作系统

基本概念

  • 用户态/内核态

  • 系统调用  

内存管理

  • 物理内存/虚拟内存

  • 虚拟地址映射

  • 分页,页表

  • 页面置换算法

  • 缺页中断

  • 内存池

进程与线程

  • 进程

    • 孤儿进程

    • 僵尸进程

    • 守护进程

  • 线程

  • IPC

    • 管道、命名管道

    • 信号Signal

    • 信号量Semaphore

    • Socket

    • 共享内存shared memory

    • 内存映射mman

死锁

  • 互斥

    • 互斥锁

    • 读写锁

  • 同步

    • 信号量

    • 条件变量+互斥锁

文件系统

  • 磁盘文件系统

  • 虚拟文件系统

  • 文件系统实现原理

IO

Linux系统实操

  • shell / vi的使用

  • Linux系统性能监控参数 ps / netstat / df

数据库

  • 关系型数据库(MySQL)

    • MySQ安装与配置

    • sql建表,索引,存储过程

    • 存储引擎,myissam/innodb

    • 数据库连接池

    • 异步数据库请求

    • 数据库集群, 分库分表,读写分离

  • NoSQL(Redis)

    • Redis编译安全,配置

    • Redis命令使用

    • Redis连接池/异步Redis的做法

    • Redis集群,数据备份

    • 缓存雪崩,缓存击穿

网络原理

  • 网络体系模型

  • TCP三次握手,四次挥手,滑动窗口,状态机

  • UDP的原理

  • http/https/http2.0/http3.0

  • Session Cookie application

  • 网络安全,加密,数字签名

  • wireshark, tcpdump

  • iperf

网络编程

  • ping, telnet, ifconfig 使用

  • socket编程, tcp/udp

  • 网络IO模型,阻塞/非阻塞,同步异步

  • io多路复用 select/poll/epoll

  • epoll reactor, proactor

  • time_wait/close_wait大量

  • C10K/C1000K/C10M

  • 网络框架 libevent/libv 协程 ntyco, libco

设计模式

  • 设计原则

  • 创建型模式

    • 单例模式

    • 工厂模式

  • 结构型模式

    • 适配器模式

    • 代理模式

    • 组合模式

    • 装饰模式

  • 行为型模式

    • 策略模式

    • 观察者模式

    • 迭代器模式

    • 模板方法模式

    • 命令模式

并行与分布式系统