小米面经
面试职位:仿真平台工程师
一面
一. 上来自我介绍
二. 项目询问
做过一个智能网联车队项目,主要询问其中负责的两部分内容:单车规划和多车规划算法实现的原理(时间大约25分钟左右吧)
三. C++基础知识提问(本身是车辆工程专业出身,问的比较基础)
(1)C++如何面向对象的,怎么理解的?(封装、继承、多态概念介绍)
(2)紧接上一个问题,封装、继承、多态具体如何实现?(封装的内容,有哪些基础的成员函数之类的;继承的3种方式;多态:基类指针指向子类对象调用子类虚函数)
(3)返回值中指针、引用、值的区别?
(4)虚函数,析构函数为什么要使用虚函数?
(5)内存泄露,如何避免内存泄露?(回答了智能指针)
(6)智能指针实现原理?(回答了共享指针的实现)
(7)vector和list容器的区别?
(8)进程和线程,只了解基础概念,没使用过所以没有深入聊。
四. 两题代码题
(1)买卖股票的最好时机(力扣121题)
(2)三数之和(力扣15题)
五. 职位相关性闲聊
(1)仿真平台工程师有什么了解?具体做些什么?(结合自身项目经验聊了一些)
(2)研究生阶段做的路径规划内容比较多,个人对转仿真平台工程师有什么看法?
六. 反问环节
(1)小米如何引导新人快速入职?
(2)面试几轮?(后面还有至少一轮技术面)
(3)具体工作地点讨论。
PS:(1)问的东西很多,但是项目具体问的并不详细,主要还是考察你个人的表述项目的能力(如何能把一个项目中你研究的内容表述完整);(2)时间很长一共有1小时12分钟这样子;(3)面试官人还是比较和气的,面试过程中没有什么压迫感。
二面
一. 自我介绍
二. 项目询问(时长三十分钟左右)
中间针对自身的研究内容和职位工作内容,面试官问了2个问题:
(1)你觉得设计一款仿真软件完成一项路径规划的仿真,这个软件需要包含哪些模块?
(2)完成路径规划任务需要哪些相关的传感器?或者说实现介质需要哪些?
三.手撕代码
链表是否存在环?
四. 剩余时间不多了,随便问了点八股
(1)C++中string类型占用多少个字节?(例如:string str = "abc", str占用了多少个byte)
(2)线程通信方式有哪些?
(3)线程中锁有哪些?关于自旋锁和互斥锁有哪些了解?
五. 反问环节
(1)小米的仿真软件是完全自研的吗?需要熟悉一些市场上的相关软件吗?
(2)工作部门:北京or上海?