C++后端实习(均OC) 滴滴/蔚来/Momenta
大部分时间都在问项目,面试体验:滴滴>蔚来>Momenta
- 滴滴面试官态度很nice,偏门八股很少问,根据项目来考察,不会的还会引导,最后还给了一些学习建议,好感度++
- 一面侧重c++语言基础(智能指针、并发、虚函数)和项目,二面侧重系统设计和计算机基础
- 算法题考的比较简单。。这点我是没想到的
滴滴 基础架构部
一面(50min)
- golang线程同步方式
- 菱形继承解决方案
- c++11线程同步方式
- 条件变量有什么缺点
- c++条件变量为什么要和mutex搭配,不能单独使用吗
- shared_ptr引用计数的实现了解吗
- weak_ptr了解吗
- unique_ptr在项目哪里用到,什么时候用裸指针更好
- 分布式存储了解吗
- 对于数据库分布式查询计划,你有什么想法吗,如何设计
- 你的项目架构
- 这个优化点你有测过性能提升吗
- 项目迭代了几版
- 你的项目是怎么来的
- 你怎么用RAII和Exception来封装资源的,所有函数都用Exception封装了吗
二面
- 你觉得线程、进程、协程有什么区别吗?
- 多进程之间怎么通信,多线程呢?
- 系统内核的角度,进程和线程的调度方式有什么区别吗?
- 多线程和多进程的优劣和使用场景?
- TCP和UDP各有什么优点呢?
- 你认为视频通话场景一般使用TCP还是UDP呢,为什么?
- 对于视频场景,一般来说i帧到达以后p帧才会有效,那么基于UDP如何保证i帧到达呢?
- 你怎么保证UDP下帧与帧间的有序性呢?
- select和epoll了解吗,在实现机制上有什么异同吗?
- 分布式存储了解吗?
- 你对分布式存储架构了解多少?
- 算法题:5T大文件,其中有一对数字相等(比如:1, 1, 2, 3, 6, 10, -1, ..., 7),给定有限内存和CPU,如何找出这一对数字
- 共识协议、小文件拆分、大文件合并了解吗?
- 介绍部门
- 对面试体验如何
- 反问环节
蔚来 自动驾驶软件开发
一面
- 项目中遇到最大的困难
- C++如何处理UTF-8字符串
- 项目中的RAII和exception怎么使用
- 整体设计框架
- 项目初衷
- vector的内部实现 扩容
- resize()、reverse()、shrink_to_fit()
- 如何让vector提前分配空间
- 线程同步
- 线程间通信
- c++11 thread生命周期
- 智能指针区别和实现
- unique_ptr怎么转移内部指针
- c++11新特性了解多少
二面
- 怼项目
- HDFS有什么缺点?
- 怎么保证多节点间的数据一致性?
- 设计分布式系统需要考虑哪些因素?
- 算法题:有序数组求下标等于数组值的元素
- 反问环节
Momenta 感知infra
一面
- 项目中遇到的问题和解决方案
- 拷贝构造和赋值构造了解吗
- 什么情况下使用拷贝构造,什么情况下使用赋值构造
- 如何设计一个移动构造函数
- 移动语义了解吗
- 类中有纯虚函数可以实例化吗
- c++原子变量了解吗
- c++多线程同步机制
- dynamic_cast的效率问题
- 有没有其他方法判断是父类还是子类的对象
- 智能指针的区别
- 智能指针shared_ptr线程安全吗
- 多线程下shared_ptr会被析构两次吗
- c++11新特性了解多少
- 做题:判断一个点是否在矩形中(用四个点表示)
二面
- 怼项目
- 异常安全如何保证
- 聊聊你对测试驱动开发的理解