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 的虚拟内存管理、虚拟地址映射机制、进程 / 线程的调度、线程的互斥和同步通信

数据库

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

中间件

  • Redis
  • Nginx
  • Kafka
  • ZooKeeper

设计模式

  • 单例模式
  • 工厂模式
  • 观察者模式
  • 代理模式
  • 策略模式
  • 适配器模式

开源源码

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