
语言
- C 和 C++ 的特点与区别
- C++ 的多态是如何实现的
- C++ 的虚函数是如何实现的
- C++ 的内存管理
- C++ 11 有哪些新特性
- 可变参数模板的作用
- malloc 的原理
- 智能指针有哪几种
- 如何解决智能指针循环依赖的问题
- STL 中 Vector,List 和 Map 的底层原理
- inline 的作用
- struct 和 union 的区别
- static 关键字的用法
- C++ 中如何避免拷贝
- 指针和引用的区别
- 如何让 .h 文件不被重复引用
- 怎么防止内存泄漏
- new 的作用
- delete 和 delete[] 的区别
网络
- 三次握手和四次挥手的流程
- 为什么要三次握手,两次握手可以吗
- https 的建立连接过程
- 状态码 301 和 302 的区别
- select,epoll,和 poll 的区别
- ET 和 LT 的区别
- OSI 和 TCP/IP 协议之间的对应关系
- ARP 协议的原理和过程
- 滑动窗口协议的原理和过程
- 流量控制和拥塞控制的区别
- TIME_WAIT 的作用
- TCP 和 UDP 的区别
- TCP 如何保证可靠性
- SYN Flood 攻击
- 如何使用 udp 实现可靠性
数据库
- redis 的主从复制怎么做的
- redis 支持的数据类型
- 什么是 redis 持久化
- redis 有哪几种持久化方式,优缺点是什么
- redis 有哪些架构模式
- MySQL 中 myisam 与 innodb 的区别
- innodb 引擎的 4 大特性
操作系统
- 进程和线程的区别
- 进程间的通信方式有哪些
- 在一台内存为 2G 的机器上,使用 malloc 分配 20G 会发生什么,new 20G 呢
- 什么是孤儿进程,僵尸进程,惊群效应
- Ubuntu 开机过程中系统做了哪些事情
- 堆和栈的区别
- 乐观锁和悲观锁
- 如何监控进程异常退出
- 线程怎么将一个全局变量变成私有变量
- 两个不同的进程同时使用一个端口号有没有问题
- 虚拟内存的原理
算法