1. 如何防止线程池空置
2. 有什么类型的锁
3. redis实现的分布式锁是乐观锁还是悲观锁
4. 稳定排序和不稳定排序都有什么
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,
冒泡排序、插入排序、归并排序、基数排序是稳定的排序算法
5. const和宏的区别
- 起作用的阶段不同,宏在预编译阶段展开,const常量在编译阶段处理。
- 起作用的方式不同。宏没有类型,不做任何类型检查,仅仅是展开。const常量有具体的类型,在编译阶段会执行类型检查。
- 就存储方式来看,宏只是进行展开,有多少个地方使用,就替换多少次,它定义的宏常量在内存中有很多备份,而const在内存中只有一个备份。
- 从代码调试的方便程度而言,const是可以进行调试的,而#define不能调试,在预编译阶段已经替换过了。
6. 如何防止内存泄露
- 明确申请和释放内存:每次使用new或malloc申请内存后,都要确保在适当的时候使用delete或free释放内存。
- 使用RAII(资源获取即初始化)原则:RAII是C++中管理资源(包括内存)的一种有效方法。它通过将资源的生命周期与对象的生命周期绑定来确保资源的正确释放。例如,使用智能指针来管理动态分配的内存。
- 使用智能指针:智能指针是实现RAII的一种方式。</