【小米】C++岗-2022届校招面经
一面
基础
- 虚拟内存相关详细讲一下
- 讲讲左值和右值
- 什么时候使用右值
- 完美转发
- 假如 a 是 T 的左值引用,T 是 int&& 类型的,那么 a 实际上是什么
- 讲一下智能指针
- shared_ptr 和 unique_ptr 区别,以及性能对比
- weak_ptr 及其作用
- shared_ptr 是线程安全的吗
- lambda 表达式有哪些捕获类型
- 讲讲多态及实现机制
- 虚基类
- 多继承的时候,虚函数表指针怎么存
- using std::cin 和 在using namespace std 后使用cin有什么区别
- 元编程
项目
- 详细介绍MSRA实习项目
-
- 对交易预测输入和输出需要存储,这个空间消耗大概多大
思考题
一个有环链表,两个速度不一样的指针移动,起始位置也不一定一样,它们一定相遇吗
Coding
数据中最小的k个数
二面
基础
- 首先介绍了自动驾驶系统涉及的研发方向,问我对哪个感兴趣
- 自我介绍
- 发现性能瓶颈使用过什么方法
- 如何发现死锁
- 在开发时制定什么样的规则可以避免死锁
- 如何调试内存泄露
- 如何调试 core dump
- 虚拟内存介绍
- 每个进程的虚拟内存有多大
- 如果物理内存大于 4G,可以不使用虚拟内存吗(安全性)
- 线程切换要进入内核态吗
- 一个很大的二维数组存在内存中,是按行读取快还是按列读取快(CPU cache,局部性原理)
- map 和 unordered_map区别
- unordered_map 使用什么方法解决 hash 冲突
Coding
LRU,要求自己实现双向链表