
语言
- C++ 的三大特性
- 编译器会为一个空类自动生成那些函数
- 多态的原理
- 虚函数的工作原理
- 构造函数可以是虚函数吗,析构函数呢
- 什么是纯虚函数
- 虚表指针存放的位置,头部还是尾部
- 如果多重继承只有一个虚表指针吗
- 函数模板和类模板的区别
- 什么是内存泄漏,怎么防止内存泄漏
- 智能指针有哪些,以及实现原理
- 怎么解决循环引用,weak_ptr 是怎么解决循环引用的
- 你觉得这些定位开源定位内存泄露的工具是怎么实现的
- c++11 nullptr 比 NULL 的优势
- 什么是类型萃取
- c++ 有哪些创建线程的方式
- c++ 怎么传递信号
- c++ 和 python 的区别
- 深拷贝和浅拷贝的区别
- 指针和引用的区别
- volatile 有什么作用
- C++ 的内存分布
- new 和 malloc 的区别
- static 的作用
- 了解哪些设计模式
- 匿名表达式的具体应用和应用场合
- class 和 struct 的区别
- 为什么有了 class 还保留了 struct
- c++ 中如何调用 c 写的函数
- extern c 的原理
- 重写、重载、覆盖的区别
- 成员初始化列表的概念,为什么用成员初始化列表会快一些(性能优势)
- 如何避免编译器进行的隐式类型转换
- 怎么访问私有函数
- 左值和右值的区别
- 空类占多少字节
计算机网络
- tcp 和 udp 的区别
- 如何实现基于 udp 的可靠协议
- tcp, udp 是那一层的协议
- tcp 怎么保证可靠性
- tcp 的停止等待协议是什么
- 三次握手和四次挥手
- 可以是两次握手吗
- 为什么要 timewait,timewait 有什么缺点
- 滑动窗口的原理
- 网线断开会发生什么,哪一段会先断开
- tcp 最大连接数限制
- 怎么解决 tcp 粘包问题
- 流量控制和拥塞控制的区别
- 为什么有了 mac 地址还需要 ip 地址
- Http1.1 和 Http1.0 的区别
- URI(统一资源标识符)和URL(统一资源定位符)之间的区别
- 为什么服务端易受到 SYN 攻击
- get 和 post 的区别,get 的长度限制是多少
- 浏览器打开网站的过程
数据结构
- 用过哪些 STL 库
- map 和 unorderedmap 的底层实现和性能区别
- 二叉搜索树,平衡二叉树,红黑树的区别
- vector 中的扩容原理和具体实现方式
- 如果让你实现 vector 动态删除然后容量缩小你会如何设计
- 为什么 stl 里面有 sort 函数 list 里面还要再定义一个 sort
操作系统
- select, poll, epoll 的区别
- 什么是死锁,怎么避免
- 银行家算法
- 进程间通信方式有哪些
- 线程同步的方式
- linux 755 指的是什么权限
- wine 是使 windows 程序能够在 linux 下使用,你觉得他是怎么解决的
- 系统调用和函数调用的区别
- dll 是什么文件
- 静态库和动态库的区别
- 什么情况下会发生 dll 缺失
- 什么是虚拟内存
- 一台只有 2G 物理内存的电脑,能否 new 一个 4G 大小的数组
- 孤儿进程、僵尸进程、守护进程的概念
- 如何创建守护进程
- 内核态,用户态的区别
算法