C/C++ 面试准备内容整理
C++ 面试准备内容
- C++ 基础
- 智能指针
- Boost 库
- Libevent 库
- C++ 11 的常用特性
- STL 库中的各种容器,并阅读过底层源码
- 熟悉函数调用堆栈过程,
ptmalloc内存管理方式
C++ 网络编程
- 熟悉使用 Muduo 库
- 熟悉 TCP/IP 的三次握手和四次挥手过程
- 熟悉 ET/LT 模式的特点,理解阻塞 / 非阻塞 I/O、同步 / 异步 I/O
- 熟悉网络编程,以及 I/O 多路复用,包括
select、poll、epoll库等 - 熟悉网络协议体系,包括 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 空间配置器(一级和二级)
