plan

C++后台开发知识点

  • 基础:

    • csapp
  • 语言:

    • 《C++ Primer》
    • 《Effective C++:改善程序与设计的55个具体做法》
    • 《Effective Modern C++》
    • 《STL源码剖析》
    • 《深度探索C++对象模型》
    • C++ template
    • C++ Concurrency in Action,知乎版:https://www.zhihu.com/column/c_1307735602880331776
    • more
      • 《C++语言的设计与演化》
      • 《More Effective C++ 》
      • 《C++ 并发编程》
  • 算法

    • leetcode
    • 《算法》第四版
    • 《算法导论》
  • Linux编程基础

    • apue
    • unp,1-8
    • 几天可看完:《TCP/IP网络编程》
    • 《Linux多线程服务器端编程》
    • 提升:《Linux高性能服务器编程》
  • Linux内核

    1. 《linux内核设计与实现》
    2. 《深入理解linux内核》
  • 网络

    • 《计算机网络 第7版》
    • 《计算机网络 自顶向下方法》
    • 《TCP/IP详解卷1》12-16章
  • C++网络编程

    • boost asio 的教程可以先过一遍
    • 陈硕写的muduo库,还有配套的书
    • 手撸一遍,深入理解事件驱动,然后再看看libco,了解下协程
    • 最后转go,美滋滋
  • 数据库

    • 《Redis设计与实现》
    • Redis实战
    • mysql必知必会
    • 数据库系统概念
  • 内存泄漏查找

    • 重载 new delete 然后记录每次分配的文件和行号(可能直接重载还不行,用宏魔法不知道是不是)
    • 直接上 address sanitizer
  • 测试

    • Modern C++ Programming with Test-Driven Development
  • 分布式

    • 《深入理解Nginx》
    • leveldb源码
  • 源代码学习:(测试和文档整理也很重要,项目的每一步都需要文档和数据的支撑。)

    • TinyHttp是一个超微型http服务器,分析这段源码前,需要对网络协议,Unix编程,以及HTTP有一定的了解,它采用c语言编写,直接采用的是linux的socket接口编写的,可以更加底层的让读者明白一个浏览器的请求是如何被http server响应的。
    • muduo是陈硕老师编写的基于Reactor模式的C++网络库,采用基于对象的方法编写的一套基础网络库。muduo将网络通信的每个过程抽象为c++对象,大量采用了c++11标准和stl来进行实现,书中还采用了较多的设计模式,这对于我们将知识融汇贯通都非常有帮助。最重要的是网上关于muduo的学习视频和资料都有很多!
  • WebServer

    • STL源码
    • libevent:Libevent是一个轻量级的开源高性能网络库,采用事件触发,封装了以下三种事件的响应:IO事件,定时器事件,信号事件。
    • Memcached:Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态数据库驱动网站的速度。
    • Redis:Redis是一个基于纯内存的存储系统,虽然是C写的但是值得一看。
  • 大话设计模式

  • 面试:

总结理解

操作系统关键知识点:

  • 进程和线程之间的区别
  • 操作系统的调度算法
  • 进程间通信的方式和区别
  • 虚拟内存机制的作用
  • 缓存的作用以及缓存替换算法
  • 线程的实现方式
  • 虚拟文件系统

计算机网络主要的常考知识点如下:

TCP/IP

  1. 分层模型

  2. 三次握手、四次挥手原理

  3. 拥塞控制

  4. 流量控制与滑动窗口

  5. TCP与UDP比较

  6. DDos攻击

  7. close_wait,time_wait状态原因

HTTP

  1. http/https 1.0、1.1、2.0

  2. get/post 以及幂等性

  3. http 协议头相关

  4. Cookie Session 的比较

  5. 长连接与短连接,websocket的对比

Socket

  1. IO模型

  2. select ,poll,epoll原理和对比

数据库常考知识点:

MySQL相关

  1. 索引:B树、B+树底层结构,索引失效条件

  2. sql语法

  3. 关系型数据库三范式

  4. 存储引擎:InnoDB和MyISAM对比

  5. 数据库的锁:行锁,表锁,页级锁,意向锁,读锁,写锁,悲观锁,乐观锁等等

  6. 数据库隔离级别:脏读、不可重复读、幻读

  7. 事务的ACID理论

  8. 查询优化:explain,慢查询,show profile

  9. 分布式:分库分表,读写分离

Redis相关

  1. Redis 特点

  2. Redis 底层数据结构:跳表,字典

  3. 数据淘汰策略

  4. 持久化方式:AOF,RDB

  5. 哨兵模式

  6. 集群同步方式