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

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

时间:2023-12-19 11:14:14浏览次数:36  
标签:面试题 函数 右值 成员 滤波 面试官 算法 SLAM 指针

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^

标签:面试题,函数,右值,成员,滤波,面试官,算法,SLAM,指针
From: https://www.cnblogs.com/linglingdog/p/17913219.html

相关文章

  • 【持续更新篇】SLAM视觉特征点汇总+ORB特征点+VINS前端
    Harris角点opencv函数cornerHarris提取输入图像的Harris角点检测原理检测思想:使用一个固定窗口在图像上进行任意方向的滑动,对比滑动前后的窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有较大灰度变化,则认为该窗口中存在角点。\(E(u,v)=\sum_{(x,y)\inW}w(x,y)[......
  • 代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N个节点、
    LeetCode24.两两交换链表中的节点题目链接: 24.两两交换链表中的节点提示:链表问题,首先用虚拟头节点,让链表节点的处理具有一致性!!! LeetCode19.删除链表的倒数第N个节点题目链接:19.删除链表的倒数第N个节点注意点:快慢指针,链表删除元素得找到该元素的前一个元素!!! LeetCode......
  • 2023最新中级难度C++面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-中级难度C++面试题合集问:什么是虚函数和纯虚函数?它们有什么区别?虚函数是一种在基类中声明的函数,它可以在派生类中被覆盖以实现多态性。纯虚函数是一种特殊的虚函数,它没有定义任何具体的行为,只声明了一个接口。纯虚函数的目的是为了让......
  • 2023最新高级难度C++面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-高级难度C++面试题合集问:详细解释一下C++中的虚继承(virtualinheritance)的概念及其应用场景。虚继承是一种特殊的继承方式,用于解决多重继承中可能出现的菱形继承问题。菱形继承会导致基类被复制多次,占用额外的内存,并可能导致数据混乱......
  • 面试官问我:线程锁导致的kafka客户端超时,如何解决?
    本文分享自华为云社区《线程锁导致的kafka客户端超时问题》,作者:张俭。问题背景有一个环境的kafkaclient发送数据有部分超时,拓扑图也非常简单定位历程我们先对客户端的环境及JVM情况进行了排查,从JVM所在的虚拟机到kafkaserver的网络正常,垃圾回收(GC)时间也在预期范围内,没有......
  • java常考面试题1-20
    Java程序员面试题集(1-70)一、Java基础部分1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。2)继承:继承是......
  • 面试题41-70
    41、日期和时间:1)如何取得年月日、小时分钟秒?2)如何取得从1970年1月1日0时0分0秒到现在的毫秒数?3)如何取得某月的最后一天?4)如何格式化日期?答:操作方法如下所示:1)创建java.util.Calendar实例,调用其get()方法传入不同的参数即可获得参数所对应的值2)以下方法均可获得该毫秒......
  • 代码随想录算法训练营第四天| LeetCode24. 两两交换链表中的节点、19.删除链表的倒数
     LeetCode24.两两交换链表中的节点●今日学习的文章链接和视频链接代码随想录(programmercarl.com)题目链接24.两两交换链表中的节点-力扣(LeetCode)●自己看到题目的第一想法主要是把这个过程想清楚,链表交换的题目主要想明白要动几个指针,指针改变的顺序也要注意,如果......
  • 2023最新高级难度MS SqlServer面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自[面试宝典-高级难度MSSqlServer面试题合集](https://offer.houxu6.top/tag/MSSqlServer)问:请简述SqlServer中的分布式查询的功能和用法。分布式查询是Microsoft®SQLServer支持的一项功能,它可以将来自多个数据库服务器的数据整合在一起,以......
  • 2023最新初级难度C++面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-初级难度C++面试题合集问:C++支持哪些基本数据类型?C++支持以下基本数据类型:布尔型、字符型、整型(包括短整型、长整型、无符号整型)、浮点型(包括单精度浮点型和双精度浮点型)、复数型以及枚举型等。此外,C++还提供了一些复合类型,如数组、结......