【面试官版】【持续更新中】融合滤波算法+数据结构+激光视觉SLAM+C++面试题汇总

发布时间 2023-12-19 11:03:12作者: 铃灵狗

C++部分

  1. 什么时候需要写虚函数、什么时候需要写纯虚函数?
    只继承接口为纯虚函数
    强调覆盖父类重写,或者父类也需要实现一定的功能,为虚函数
  2. 指针传参和引用传参区别?
    引用传参本质上是传递原参数地址,指针传参本质还是值传递,生成拷贝指针,拷贝指针和原指针指向的为同一块内存。因此改变拷贝指针的指向不影响原指针指向,改变拷贝指针的内容影响原指针指向的内容。如果想改变传入指针的指向,则需要传入指针的引用 例如int *&p
  3. Lambda捕获的含义 捕获this指针的含义?
    表示参数是以值传入还是以引用传入,即选择参数传入的方式。捕获this表示lambda会访问当前所在类的对象中的变量。如果在静态类成员函数中无法访问非静态类成员变量。
  4. 右值引用应用场景?
    Lambda函数定义在另一个函数的参数中。移动构造函数。
  5. 什么是完美转发?
    右值传入函数中会变为左值,如果在这个函数中右对这个参数进行调用,若想保持它的属性不变(左值仍然为左值,右值仍然为右值),则使用完美转发
  6. 为什么要有迭代器?
    使用迭代器时我们可以忽略容器本身的调用方式,实现算法和容器的分离。设计算法时只专注于迭代器的改变即可。
  7. 什么是动态绑定?
    父类指针指向子类对象,可以调用子类中重写父类的虚函数的函数
  8. 虚函数和普通类成员函数和普通函数的区别?
    虚函数由虚函数表实现。普通类成员函数和普通函数没有区别。
  9. 静态成员函数和普通成员函数区别?
    静态成员函数类内声明类外定义,且只能操作静态成员变量。无需生成对象即可调用。
  10. 类成员函数最前面的const和最后面的const分别表示什么含义?
    前const:返回值不可修改。最后面的const:对象不可修改。

数据结构部分:

  1. map和unorder_map的区别?
    Key上实现了排序
  2. Map的底层实现 unorder_map的底层实现?
    Map底层实现为红黑树 unorder_map底层实现为哈希表
  3. 红黑树的特点:
    两个红节点不可相邻、根结点一定为黑色、左子树到根和右子树到根的黑色节点数量要相同
  4. vector push_back和emplace_back的区别?
    emplace_back把传入的参数当作右值,减少了一次拷贝,但使用之后参数会消失

滤波部分:

  1. 什么是协方差?如何理解?受什么变量影响?
    协方差表示数据的离散程度,数据的不确定度。滤波算法中受传递噪声和传感器噪声的影响。
  2. 什么是ESKF?ESKF的优点?如果给定一个imu和一个gps,什么是初始状态量,什么是观测状态量?
    ESKF是误差滤波。误差在0附近保证雅可比二阶导足够小可忽略,同时远离奇异点,保证了求导的准确性。
    初始状态0,观测状态为gps数据 - imu得到的数据。
  3. 除了KF、EKF还有什么其他的滤波算法?
    ESKF:误差作为状态量。
    UKF:通过采样的方式估计数据的高斯分布情况
    IEKF:迭代

定位部分:

视觉SLAM:

  1. 利用重投影误差对100个三维点的坐标进行优化,Hx=b,H x b维度分别是多少?
    H = JTJ J为2对3求导 所以为23 所以H为3223 = 33
    x为要优化的状态量 3
    100
    b为-JTf f维度为2100 所以b维度 3100
  2. 非线形优化Hx=b 为什么H要求是正定矩阵?
    可逆、更重要的是Hx=b的推导来源于二次型 若想保证导数为0处求得的极值为最小值 开口必须向上
  3. VIO系统能观性分析
    标准VIO四自由度不客观 xyz yaw
    回答三自由度客观也可以 但前提是VIO使用9轴imu
  4. Vins-mono中预积分优化时状态量对噪声的雅可比的作用?
    初始两个时刻的噪声认为相等,优化过程中更新噪声之后,更新预积分观测量,随后更新残差。其中通过预积分状态量对噪声的雅可比矩阵来更新预积分观测量。

激光:

  1. LOAM中是如何增加Z方向的约束的?
    查找点到线约束和点到面约束会特意寻找不是同一根线的点,以保证z轴方向的约束。
  2. LOAM系列建图缺点。
    Z轴整体漂移
  3. 如何检测是否处于长廊场景?
    点云筛选后协方差奇异值分解 检查第一大和第二大的关系
  4. ICP中残差形式?残差对R求导的结果为?
    e = p - Rq - t
    Rq^