C/C++ 面试准备内容整理

C++ 面试准备内容

  • C++ 基础
    • 智能指针
    • Boost 库
    • Libevent 库
    • C++ 11 的常用特性
    • STL 库中的各种容器,并阅读过底层源码
    • 熟悉函数调用堆栈过程,ptmalloc 内存管理方式
  • C++ 网络编程

    • 熟悉使用 Muduo 库
    • 熟悉 TCP/IP 的三次握手和四次挥手过程
    • 熟悉 ET/LT 模式的特点,理解阻塞 / 非阻塞 I/O、同步 / 异步 I/O
    • 熟悉网络编程,以及 I/O 多路复用,包括 selectpollepoll 库等
    • 熟悉网络协议体系,包括 TCP/IP 协议、UDP 协议、HTTP 协议、ARP 协议
    • 熟悉 TCP/IP 协议栈、可靠传输、快速重传、滑动窗口、流量控制、拥塞控制原理等
  • 数据结构与算法

    • 熟悉常用的数据结构,例如栈、队列、链表、哈希表、二叉树、红黑树、AVL 树、BST 树、大小根堆
    • 熟悉常用的算法,例如 BF/KMP、分治算法、回溯算法、动态规划算法、最短路径算法、分支定界算法、八大排序算法、二分查找
    • 熟悉常用的排序算法,包括快速排序、堆排序、归并排序、冒泡排序等
  • Linux 系统编程

    • Linux 下的编译和链接过程
    • 熟悉 gcc、g++、gdb、vim、git 等开发工具
    • 熟悉 Linux 进程间通信(管道、共享内存、Socket 等),以及多进程和多线程编程
    • 熟悉 Linux 的虚拟内存管理、虚拟地址映射机制、进程 / 线程的调度、线程的互斥和同步通信
  • 数据库

    • 熟悉 MySQL 常用的 SQL 语法、索引以及优化、索引的底层实现、事务处理(ACID 和隔离级别)
  • 中间件

    • MySQL
    • Redis
    • Kafka
    • ZooKeeper
  • 设计模式

    • 比如:单例模式、工厂模式、观察者模式、代理模式、策略模式、适配器模式等
  • 开源源码

    • Redis
    • Memcached
    • Muduo 库
    • Boost 库
    • Libevent 库
    • Nginx 内存池
    • Linux 内核源码
    • SGI STL 空间配置器(一级和二级)