【面试】2022.08——百度自动驾驶决策规划岗一面

2022.8.12

1. C++语言考察

  1. 引用和指针有什么区别,指针作为函数参数注意问题,引⽤作为函数参数以及返回值的好处?

  2. 函数的参数和返回值的传递方式有哪些?他们的区别是什么?

  3. 什么是虚函数?简述 C++虚函数作用及底层实现原理?

  4. 构造函数为什么不能定义为虚函数? ⽽析构函数⼀般写成虚函数的原因 ?

  5. 如何定义一个只能在堆(栈)上生成对象的类,为什么?

  6. malloc 和 new 有什么区别?

  7. 说一说 c++中四种 cast 转换?为什么不使用 C 的强制转换?

  8. 关键字 define 宏定义和 const 的作用和区别?

  9. 线程间同步的方式有那些,项目中是怎么实现的?

  10. 智能指针实现原理和多少种指针模板类,他们作用和区别是什么? shared_ptr 引用成环是如何的?怎么解决?

  11. 指出下面这段代码可以改进的地方

    void print_strings(const std::vector<std::string>& strings) {
    	for (int i = 0; i < strings.size(); i++) {
    		string str = strings[i];
    		printf("strings[%d] = %s\n", i, str.c_str());
    	}
    }
    
  12. 编程

    给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [ − 2 31 , 2 31 − 1 ] [−2^{31},2^{31} − 1] [231,2311] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。

    • 示例 1: 输入: x = 123 输出: 321
    • 示例 2: 输入: x = -123 输出: -321
    • 示例 3:输入: x =120 输出: 21
    • 示例 4: 输入: x = 0 输出: 0

    提示: − 2 31 < = x < = 2 31 − 1 -2^{31} <= x <= 2^{31} - 1 231<=x<=2311

2. 决策规划算法考察

  1. 说明轨迹规划和路径规划作用和区别?规划过程如何考虑障碍物?
  2. PNC 在自动驾驶中的作用,说明规划与控制的区别。
  3. 什么是运动控制?控制具体控制了什么,输入输出是什么?如何实现的?表现到车辆状态上又是怎样的?
  4. 什么是 PID、 LQR、 MPC 算法?用途是什么?分别解决了什么问题?
  5. 轨迹规划所使用的坐标系有哪些?它们的有什么不同?分别用于什么场景?
  6. 传统 PID、 LQR、 MPC 各自的优缺点有哪些?对于缺点有哪些解决方法?
  7. pid 控制算法的控制原理? pid 控制算法如何解决误差和超调问题?
  8. PID 超调如何解决,积分饱和如何解决? LQR 如何建模,状态量有哪些,控制量有哪些?
  9. 说明 Lattice 和 Em Planner 的基本思路。
  10. 规划不平滑造成什么影响
  11. 介绍下行为预测的难点?如何解决?
  12. 讲下你参加的项目,负责的技术工作,遇到的问题并如何解决的?

你可能感兴趣的:(面试,面试,自动驾驶,职场和发展)