跳转至

小米 C++ 面经真题整理

参考来源

高频真题

1. std::vector 的扩容机制是什么?怎么避免频繁扩容?

速答: vector 扩容通常按倍数增长,扩容会重新申请连续内存并搬移元素;提前 reserve 是最常见优化。
细看: STL 容器深挖

2. mallocnew 的区别?

速答: malloc 只分配原始字节块,new 还会构造对象;真正成熟的答法要顺手补 operator new 和对象生命周期。
细看: 内存管理、new/delete、内存池、allocator

3. TCP / UDP / HTTP1.1 / HTTP2 / HTTP3 的区别?

速答: 别只背协议名字,主线要答“可靠字节流 vs 报文”“应用层多路复用”“TCP 队头阻塞”和 QUIC 为什么出现。
细看: TCP、UDP、HTTP、HTTPS / 网络进阶

4. Redis 的数据类型、切片、集群怎么理解?

速答: 数据类型是数据组织方式,切片/集群是扩容与高可用问题;回答时别把“快”和“高可用”混成一件事。
细看: 数据库与缓存:MySQL、Redis / Redis:过期淘汰、持久化、高可用

5. epoll 相关知识怎么答?

速答: 核心答它为什么适合高并发连接:关注集合和就绪事件分离,减少无效扫描;再补 LT / ET 区别。
细看: IO、多路复用、零拷贝

6. 虚函数 / 虚表存放位置 / 多态怎么理解?

速答: 这题主线是对象模型:对象里通常有 vptr,虚表通常是类级共享结构,动态派发有布局和间接调用代价。
细看: 对象模型、内存布局、类与多态

面经风格备注

小米公开 C++ 面经很像“服务端综合题”:

  • 项目先问
  • 然后 C++ 基础、STL、内存管理
  • 再追网络、Redis、epoll、MySQL
  • 最后常带一两道算法或手撕题