【小米】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,要求自己实现双向链表

发表评论

后才能评论