C++基础
- 对const的理解?const指针和引用的区别?
- #define和const的区别?
- 说说static关键字的用法?
https://blog.csdn.net/ypshowm/article/details/89030194 - inline函数的使用?
- 知道#pragma pack(n)吗?怎么实现内存对齐的?
- 解释下”extern C”,在什么时候会用到?
- 用struct实现下继承?
- 解释下friend关键字?
- 多态的实现方式?
- 虚析构函数?虚构造函数?
- 说说虚表的内存布局?
- 纯虚函数?虚继承?
- 模板继承?模板特化/偏特化?
- 虚函数可以是内联函数吗?
- 构造函数能是虚函数吗,析构函数呢?
- c++四大强制类型转换?
- 四大类型转换发生的时间?编译/执行
- 构造函数初始化列表和函数内部赋值的区别?
C++11
- decltype用过吗?
- 左值引用和右值引用是什么?
- 移动语义和完美转发说说?
- 智能指针有哪些?
- 说说每个的实现原理和应用场景?
C++内存
- new/delete 和malloc/free区别?
- ralloc/alloca
- 双重free会发生什么?
- 如何定义一个只能在栈/堆上生成的对象?
- 讲下ptmalloc?
- 讲下tcmalloc?
- 讲下jemalloc?
- 知道哪些强制类型转换?(static_cast等)
STL
- 五大组成部分?
- 有哪些容器?
- vector/map/哈希/deque底层实现?
- sort算法实现是什么?全都是快排吗?
计算机网络
- TCP三次握手,四次挥手详细流程?
- 三次握手两次行不行?
- sock函数和三次握手的对应?
- 服务器大量TIME_WAIT怎么办?
- TCP粘包?
- TCP拥塞控制?
- http1.0/1.1/2.0区别?
- TLS/HTTPS握手过程?
- ARP协议?
- PING命令实现原理?
- Traceroute命令实现原理?
操作系统
- 进程和线程?
- 内核态和用户态?
- 进程间通信方式每个详细说?优缺点?
- 线程间通信方式详细说?
- 进程线程拥有的资源集合?
- 讲讲死锁?
- 线程池实现一下?
- 主机字节序和网络字节序?如何判断大端小端?写个程序。
- 虚拟内存?
- 页表工作原理,MMU底层原理?
- 进程虚拟空间地址text段下面保留的128M空间是干嘛的,为什么不能是256M?
- 128M空间是保留的C语言库,至于为啥不是256M,目前未知(节省空间?).
数据结构
- B树/B+树/红黑树有什么区别?
- 红黑树旋转?
- 排序算法复杂度?
数据库
- MYSQL索引作用?索引失效?
- MYSQL引擎?
- MYSQL锁?
- MYSQL事务?
- 实现一个堆?
中间件
- redis基本数据结构?
- redis跳表?具体操作插入删除?
- redis的zset?
- redis缓存策略?
- redis淘汰策略?
- redis哨兵模式、集群模式?
- redis哨兵模式和集群模式优缺点?
- redis持久化?
- redis缓存和主库不一致?
场景设计
智力题
- 有十个机器,九个生产的金币是5g,只有一个生产是4g,给你一个称,怎么一次找出那个生产4g的机器。
将机器从1开始编号到10,每个机器取对应编号个硬币,共计55个硬币。
假设每个机器生产的硬币都是5g,则这55个硬币总总量为275g;
与实际的重量做差值,即为生产4g硬币对应机器的编号。
(如果是1号机器,因为只取了1个硬币,重量比2
- 给一个硬币,要求生成1/5的概率。
1
2
3
4
5
6
7
8
9
10int g1() {
return 1 / random() > 0.5 ? 1 : 0;
}
ing getAns(){
int res = 0;
do {
res = (g1() << 2) + (g1() << 1) + g1();
} while (res == 7 || res == 6 || res == 5);
return res;
}