C++开发3天复习大纲(增强版)

根据你的需求,我对之前的复习大纲进行了调整,强化了C++11的内容,确保三天内高效覆盖所有核心考点:
在这里插入图片描述

第一天:C++核心标准(C++11/17/21)+ Linux系统编程

上午:C++核心标准(按版本优先级)

  1. C++11核心特性(基础中的基础,必掌握)

    • 智能指针:std::shared_ptr(引用计数)、std::unique_ptr(独占所有权)、std::weak_ptr(解决循环引用),使用场景与实现原理
    • 移动语义:std::move、右值引用&&、移动构造函数,与拷贝语义的区别及性能优势
    • lambda表达式:语法[capture](params) -> return_type { body },捕获方式(值捕获、引用捕获、混合捕获)
    • 范围for循环:for (auto &elem : container)的使用条件
    • auto类型推导:规则与适用场景,与decltype的区别
    • 线程库基础:std::thread、std::mutex、std::condition_variable
  2. C++17核心特性

    • 结构化绑定:auto [key, value] = map_element在容器遍历中的应用
    • std::string_view:与std::string的转换及使用注意事项
    • if constexpr:编译期条件判断,在模板中的应用
    • 并行算法:std::for_each(std::execution::par, ...)的基本使用
    • 折叠表达式:处理可变参数模板的简化语法
  3. C++20/21重点特性

    • 概念(Concepts):约束模板参数,简化SFINAE的使用
    • 协程基础:co_await、co_return的概念及异步编程场景
    • 三路比较运算符<=>:简化比较逻辑的实现

下午:Linux系统编程与多线程

  1. Linux系统编程基础

    • 文件操作:open/read/write/close与C标准库的区别,文件描述符
    • 进程控制:fork/exec/wait系统调用,进程间通信方式(管道、信号、共享内存)
    • 信号处理:常见信号(SIGINT、SIGTERM、SIGPIPE)及处理方式
  2. 多线程开发深入

    • POSIX线程API:pthread_create/pthread_join/pthread_mutex
    • 线程同步:互斥锁、条件变量、读写锁的使用场景
    • 线程池实现原理:任务队列、工作线程、任务调度策略
    • 死锁检测与避免:加锁顺序、超时机制、资源分级

第二天:网络编程 + 分布式系统原理

上午:网络编程深度解析

  1. TCP/IP协议栈

    • TCP协议:三次握手/四次挥手过程,拥塞控制算法(慢启动、拥塞避免)
    • UDP协议:特点与适用场景,可靠性增强方案(应用层重传、校验)
    • socket编程模型:TCP服务端/客户端完整流程,UDP编程差异
  2. 高级I/O模型

    • IO多路复用:select/poll/epoll的原理与性能对比
    • epoll详解:LT/ET模式区别,边缘触发下的读写策略
    • Reactor模式:事件驱动模型的实现思路与代码框架
  3. 常用通信协议

    • WebSocket:握手流程、帧格式、心跳机制
    • gRPC:服务定义(.proto文件)、四种服务类型、流式通信
    • HTTP/HTTPS:请求方法、状态码、HTTPS加密原理

下午:分布式系统核心原理

  1. 分布式基础理论

    • CAP定理:一致性、可用性、分区容错性的权衡
    • BASE理论:基本可用、软状态、最终一致性的实际应用
    • 分布式事务:2PC、3PC、TCC、Saga等方案对比
  2. 关键技术点

    • 服务发现:原理与主流方案(etcd、Consul、Zookeeper)
    • 负载均衡:算法(轮询、加权、一致性哈希)与实现
    • 分布式锁:基于Redis/Zookeeper的实现方案
    • 数据一致性:Raft协议核心流程(选举、日志复制)

第三天:数据序列化 + CMake + 综合演练

上午:数据序列化技术

  1. 主流序列化框架详解

    • Protocol Buffers:
      • .proto文件语法(消息定义、字段类型、服务定义)
      • 编译流程与C++接口使用
      • 版本兼容性处理
    • FlatBuffers:
      • 零拷贝原理与内存布局
      • 与Protobuf的性能对比
    • MessagePack:
      • 与JSON的兼容性
      • C++实现库(msgpack-c)的使用
  2. 序列化方案选型

    • 性能优先场景:FlatBuffers vs Protobuf
    • 兼容性优先场景:Protobuf的优势
    • 可读性需求:MessagePack vs JSON

下午:CMake与综合复习

  1. CMake实战

    • 基本语法:cmake_minimum_required、project、add_executable、add_library
    • 编译配置:指定C++标准、编译选项、宏定义
    • 依赖管理:find_package、target_link_libraries、include_directories
    • 多目录项目:add_subdirectory、target_include_directories
    • 示例配置:
      cmake_minimum_required(VERSION 3.15)
      project(NetworkApp)
      
      set(CMAKE_CXX_STANDARD 17)
      set(CMAKE_CXX_STANDARD_REQUIRED ON)
      
      find_package(Protobuf REQUIRED)
      find_package(Threads REQUIRED)
      
      add_executable(server 
        src/server.cpp 
        src/network.cpp 
        proto/messages.pb.cc
      )
      
      target_include_directories(server 
        PRIVATE include 
        PRIVATE ${PROTOBUF_INCLUDE_DIRS}
      )
      
      target_link_libraries(server 
        PRIVATE ${PROTOBUF_LIBRARIES}
        PRIVATE Threads::Threads
      )
      
  2. 综合复习与准备

    • 重点难点回顾:整理三天内的薄弱环节
    • 典型题演练:
      • C++:智能指针实现原理、移动语义与完美转发
      • 网络:epoll边缘触发与水平触发的实际应用
      • 多线程:线程池设计与实现、死锁预防策略
    • 项目经验梳理:将技术点与实际项目结合,准备2-3个亮点案例

通过这三天的系统复习,可以全面覆盖所需的核心知识点,重点突出C++标准特性、网络编程和多线程技术,同时兼顾分布式系统和工程工具的掌握。建议每天结束前花30分钟进行总结和自我测试,确保知识点的巩固。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐