在秋招过程中,我其实就像一个POMDP环境中的agent,根据已有的observation,维护自己的一个belief,做出action,发现环境中state变成了新的state,又得到了下一个observation和一个reward。秋招结束时,这些observation、action和reward组成了独特的trajectory,在这里,我把我的trajectory分享给大家,但是总归是POMDP,不同的agent可能获取到的observation是不一样的,所以一家之言,谨供参考。
总的来说,在我的秋招面试过程中,关于项目的问题占据了绝大部分篇幅,有的基础知识也大多是项目相关或者是特别重要的基础知识,所以建议大家一定要确保简历上的项目细节完全可以掌握,结合项目复习基础知识,同时做好coding练习,加油。
个人情况是985本硕,硕士研究方向是强化学习在移动机器人路径规划中的应用,一段自动驾驶中小厂实习经历,秋招找的大都是机器人和自动驾驶公司决策规划算法工程师的岗位。以下面经记录中把和项目细节特别相关的部分适当略去了,但实际上内容还是很多很细的。本来是按照公司记录的面经,后来想想,还是按类别整理一下吧,以下面经中包括的公司有大疆、经纬恒润、地平线、阿里达摩院、京东、小米、百度、高仙机器人、智行者、依图智能、哪吒汽车、集度、云骥智行、福瑞泰克等。
项目经历
- 实习项目中主要用到的技术?存在问题?如何改进?效果如何?评价指标?
- 实习项目中,是否做过实车上的算法?有没有实际做过?
- 强化学习项目中,有遇到过哪些问题?与工程化应用要求之间的差距?算力的要求、end-to-end的鲁棒性如何保证?如何保证轨迹的最优?
- 使用learning-based方法做轨迹规划的过程中,loss如何设计?好像不能考虑到语义级别的差异?两个轨迹可能几何距离上差异较大,但是语义上相差不大,这个问题你是怎么考虑的?
- 强化学习是用来求最优行为策略还是求cost function中的权重设置?
- 搜索候选前向轨迹时,如何减小搜索空间?
- 强化学习项目中,如何对问题建模?模型的输入输出设计?状态预处理的方法?对于reward比较复杂的情况,如何设计各项之间的权重?
- 强化学习项目中是否进行了并行化处理?把模型从虚拟环境迁移到真实环境,指标下降幅度?
- 横向项目中,如果已有地图不规则,如何处理?
- 竞赛项目中,是否有复盘?和其他队伍的方法比较,优点和不足?
- 毕设项目中,机器人传感器的安装位置与角度?是否考虑过多传感器得到的是障碍物不同位置与角度的信息的情况?模型输入输出?传感器信息输入方式?
coding
- LC41. 缺失的第一个正整数, LC43. 字符串相乘, LC96. 不同的二叉搜索树, LC 102 二叉树的层序遍历(DFS和BFS两种做法), LC142. 环形链表, LC143. 重排链表, LC200. 岛屿数量, LC 478. 在圆内随机生成点, LC 746. 最小代价爬楼梯
- NC 最长公共子序列Ⅱ
- 两个不同数组各选一个数字,做两数之和
- 对角线的蛇形矩阵
- 从
vector
构建链表,看你是使用auto
取元素,那若vector
中的元素是自定义元素,如何加快运行速度?(auto
后加&
,并使用const
避免修改,那么链表结点初始化函数中也要加上const
类型说明符)是否存在内存泄漏问题?如何修改?若使用智能指针参与构建链表,如何修改? - 有一个随机数产生器,以不等概率生成0或1,如何让生成0和1的概率相等?代码实现一下。
- 实现堆排序,分析复杂度
- 翻转二叉树,有递归返回值和无返回值方法,迭代层序遍历方法
C++基础
- 多态如何实现?底层如何实现?
- 智能指针分类、作用及使用方法?
shared_ptr
的缺点?如何避免? - 右值引用?了解forward函数的具体实现吗?
map
和unordered_map
的区别及适用场景?
八股
- 有了解过motion planning的相关知识吗?介绍常见算法
- 对于
A*
的理解与应用有多少?Hybrid A*
优化在哪里? - 模仿学习如何才能让结果超出专家轨迹的驾驶水平?如果结合强化学习,如何实现?
- 强化学习类:POMDP、PPO和LSTM介绍,DDPG和DQN之间的关系?TD3算法?PER?on-policy和off-policy的区别?MCTS算法介绍?POMDP问题求解算法?offline RL介绍
- 强化学习中,如何处理稀疏奖励问题?如何在避免稀疏奖励的同时确保网络收敛速度与最终性能?
- Tesla的规划框架?
- 轨迹规划场景中,learning-based和rule-based算法的优缺点?
- 基于优化算法的、基于模仿学习的和基于强化学习的轨迹规划算法之间的区别与联系?
- EM Planner和Lattice Planner的主要思想介绍?
- Frenet坐标系和Cartesian坐标系的区别、联系及用在自动驾驶规划时的优缺点?
- vectorNet介绍
- 图神经网络介绍
- 梯度下降法和牛顿法的区别?共轭梯度下降法和拟牛顿法介绍?共轭方向的选取?鞍点?对偶问题?
场景题
- 关于车辆之间的交互,假如你能拿到预测数据,可以是probalistic的,也可以是deterministic的,将来的6个frame有一些分配了对应概率的离散waypoint,你要如何处理?直接连接的话,如何考虑动力学约束?最后的概率如何分配?
- 你将来想做量产还是做demo?
- 现在你要经过一个十字路口到一个目标点,你要如何进行强化学习建模?
- 强化学习如何用于非闭环交互环境中?
- 轨迹规划方面,线上的项目和线下的项目有何区别?如果要你修改,你会如何改动?
A*
算法的实施过程中,如果遇到新的静态障碍物,如何处理?
HR面
- 考研还是保研?选择专业、实验室和导师的过程?
- 从公司最想得到什么?对公司的最大顾虑是什么?对未来mentor的期望?
- 哪些学校项目是团队做的?团队分工如何?你的角色是?
- 你的优缺点?
- 在过往的经历中遭遇最大挫折的情况是什么?如何应对?
- 能否提前实习?
后记
其实在写面经时自己心里还是比较忐忑的,因为自动驾驶进入寒冬、只是骗钱的言论甚嚣尘上,加上秋招的形势欠佳,我对自己的未来其实是比较迷茫的,但是面试过程中发现了有这么多类似于面试官们这样的优秀人才深耕于这个行业,自己可以先好好学好技术,努力拥有面试官们这样的水平,在之后有好的行业机遇时可以有能力抓住吧。
agent经过与环境的多次交互,往往也会维护一个对于环境的model,我也有这样一个model,由于夹杂着个人的理解,样本也很难满足独立同分布,可能存在偏差,想来想去,觉得说哪个公司不好可能还是不合适,而且我秋招过程中遇到的技术面试官都很赞,问题精准、态度温和,对于部分问题还会针对我的答案做一点补充,真的是很感动。我还投了华为的开发岗,背了几个小时的八股,对于TCP/IP还是半生不熟,华为的面试官还耐心地给我讲解,说只背八股不太行,还是编过代码才能理解,让我受益匪浅。所以还是不说哪家公司不好了,就提醒大家多关注offershow,如果上面有很多对于某一公司的不同岗位的差评贴,就还建议大家三思而后行,有问题欢迎评论私信交流~
#我的求职思考#