信锐 C++开发一面总结
1. Redis持久化:RDB和AOF机制的区别及应用场景
答案:
- RDB(快照):定时将内存数据dump到磁盘,恢复快但可能丢失最后一次快照后的数据,适合冷备份
- AOF(追加日志):记录每个写操作,数据更安全但文件更大、恢复慢,适合对数据完整性要求高的场景
- 混合持久化:Redis 4.0后支持RDB+AOF结合,兼顾性能和安全性
2. 如何实现高并发场景下的服务器负载监控
答案:
- 监控CPU使用率:读取
/proc/stat或使用top命令解析 - 监控内存:读取
/proc/meminfo - 监控网络IO:读取
/proc/net/dev - 监控磁盘IO:使用
iostat或读取/proc/diskstats - 实现方式:定时采样+滑动窗口计算平均值,超过阈值触发告警或限流
3. 用户态切换到内核态的几种方式
答案:
- 系统调用(syscall):主动调用如read/write,通过int 0x80或syscall指令
- 异常(exception):如缺页异常、除零错误
- 中断(interrupt):硬件中断如时钟中断、网卡中断
- 信号处理:内核向进程发送信号时会切换到内核态
4. C++智能指针的实现原理及循环引用问题
答案:
- shared_ptr:引用计数,多个指针共享对象,计数为0时释放
- weak_ptr:不增加引用计数,用于打破循环引用
- unique_ptr:独占所有权,不可拷贝只能移动
- 循环引用:A持有B的shared_ptr,B持有A的shared_ptr,导致计数永不为0。解决方案是其中一方使用weak_ptr
5. 除了信号,Linux还有哪些进程间通信(IPC)方式
答案:
- 管道(pipe/FIFO):半双工,适合父子进程
- 消息队列:异步通信,可以按类型接收
- 共享内存:最快的IPC,需配合信号量同步
- 信号量:用于进程同步
- Socket:可跨网络通信
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
C++八股文全集 文章被收录于专栏
本专栏系统梳理C++技术面试核心考点,涵盖语言基础、面向对象、内存管理、STL容器、模板编程及经典算法。从引用指针、虚函数表、智能指针等底层原理,到继承多态、运算符重载等OOP特性从const、static、inline等关键字辨析,到动态规划、KMP算法、并查集等手写实现。每个知识点以面试答题形式呈现,注重原理阐述而非冗长代码,帮助你快速构建完整知识体系,从容应对面试官提问,顺利拿下offer。