问题集与面经

1.关于ADAS的想法
2.ROS2.0 和 ROS1.0
3.ROS的缺点
4.Lattice planning
5.linux的使用
6.模型预测控制MPC
7.DISTRA bfs 还是DFS

面经1:

第一块ROS,考察了ros的基本概念如roshandler,roslaunch,roscore等;
第二块Linux的使用,gdb调试,linux常用命令kill等;
第三块编程,代码题,看代码选答案。
第四块路径规划算法,A*,Dijkstra,插值,样条等;
第五块数学,几何,四元数,泛函,多项式,坐标变换,公式推导等。

面经2:

一、万古不变的“自我介绍”:
自我介绍我有提前准备过,介绍的还行。这里根据自己的项目特点介绍就行。
二、客观知识环节
1.进程和线程的关系、线程哪些可以共享那些不可以?
》进程是操作系统资源分配和调度的基本单位,而线程是处理任务调度和执行的基本单位。两者是相互包含的关系,一个进程可以有多个线程,线程是进程的一部分,同一进程的线程共享进程的地址空间和资源,进程之间却相互独立。对于同一进程的线程可以共享的有地址空间、进程的资源和文件等等,但不能共享堆栈,全局变量可以共享,静态变量也可以共享。这里有提前复习过,算是答上来了。呼呼呼~
2.进程之间如何通信(通信方式)?
》管道、信号量、消息队列、信号、共享内存、套接字(socket),然后再分别解释一下其具体含义。完成~
3.问了一道生产者与消费者问题(如何解决生产者和消费者进程?)在c++中有什么方法可以实现进程的阻塞?
》生产者与消费者问题是操作系统里的互斥和同步的问题,算比较简单就设置信号量让其并发的运行巴拉巴拉~。第二问就想到了可能是STL中的但有点答不上来,最后面试官解释了可以使用push啥的将一个其加入阻塞队列。
4.交叉编译熟悉吗?用什么可以实现?大致过程?
》对于大的工程进行交叉编译用makefile 交叉编译,小的就可以用gcc arm 。我只回答到了后者。。。
5.对智能指针了解吗?请你设计一个方法那个解决上下游智能指针释放的问题(之前别人写过的该公司面经中都有听到过智能指针,我发现这面试一定会问)
》背景是上游有个程序会使用它但不负责其释放,也不知道下游什么时候用完?为了防止内存泄漏设计个方法由你自己管理并释放智能指针。啊?这???只了解过智能指针没有用过。。。所以答不出来

三、项目环节
1.ros相关的消息传递的大致流程?
》 ros是节点的形式开发,主要通过消息message通信,其通信主要有单向消息收发式topic、双向消息请求响应service、双向消息目标的动作action三种,先得有至少两个节点,然后对于topic通信一个节点作为发布者发布话题另外一个节点订阅。。。然后每个解释一遍。
2.ros中的编程问题?如何自己建立一个结构体?如何让一个将python编写的结构体传递给用c语言编写的节点并接收该结构体,说说其大致流程?
这里回答不太好有点慌脑子空白,python和c语言结构体的传递面试官是是要先序列化然后再反序列化的过程。。。
四、还有什么要问的吗?
我。。。凉了 😅
最后,感谢让我有一次经验的积累,大概了解了面试的过程,希望下次不那么慌了。

面经3:

想保证车辆曲率连续最少需要几阶约束
曲率在车辆操控上最直观的体现是
曼哈顿距离与欧氏距离的优缺点
ros中node/nodelet区别
HybridA解决什么问题,算法主题思想介绍
手撕dijkstra
A
最优/收敛条件
介绍HybridA*,D*, HybridA与A区别
介绍EMPlanner,Lattice Planner与EMPlanner区别
EMPlanner中EM的思想体现

面经4:

路径规划算法类:

  1. Dijstra算法,算法流程
  2. A算法,算法流程,编程实现的过程中使用了哪些数据结构,项目中在原有方法基础上有哪些改进,启发函数的设计,A与Dijstra的区别;
  3. Lattice(论文里的那个lattice, 可以参考论文 EFFICIENT CONSTRAINED PATH PLANNING VIA SEARCH IN STATE LATTICES );
  4. Lattice planner 百度apollo的那个,可以参考一位大佬的博客( https://paul.pub/apollo-planning/);
  5. RRT算法流程;
  6. 一些关于frenet坐标系的问题;
  7. 如何设计一个十字路口左转的算法,包括路径规划与决策两个部分;
  8. 现场写一个轨迹规划算法的代码;
    编程题:
  9. 二叉树的各种题(各种遍历,求深度等等),链表的各种题(反转,合并);
  10. 柠檬水找零,力扣860,一道简单题,被问过三次,感觉可能因为是一个决策问题所以比较容易考?还被问到过一次如何用RL解;
  11. 机器人运动范围,力扣13,觉得这道题更倾向于解一个应用问题,多以单写来,感兴趣的同学可以练一下;
  12. 八皇后,力扣51,到现在我还不太会,以前在别人面经里也看到过,觉得太难不会考,结果真遇到了 😂;
  13. 公交车线路,力扣815,难题;
  14. 不用加号的加法,力扣153,当时遇见这道题感觉自己智商被完爆😂;
    补充:其实我感觉面试如果前面发挥的好的话coding时面试官普遍不会刁难,很多时候就是出一个常见的mid题。

目前能回忆来的就这么多,之后再想起来什么比较重要的问题我再在评论区里补充。

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我明白了。关于数据结构与算法的Python面经,我可以为您提供一些常见的问题和答案,希望能对您有所帮助。 1. 什么是哈希表?如何实现哈希表? 哈希表是一种数据结构,它通过将关键字映射到表中一个位置来实现快速查找。哈希表的实现需要两个部分:哈希函数和冲突解决方法。哈希函数将关键字映射到表中的位置,而冲突解决方法则处理不同关键字映射到同一位置的情况。 2. 什么是二叉树?如何实现二叉树? 二叉树是一种树形结构,它的每个节点最多有两个子节点。二叉树的实现需要定义节点类,并在节点类中定义左右子节点属性。二叉树的遍历方式有三种:前序遍历、中序遍历和后序遍历。 3. 什么是堆?如何实现堆? 堆是一种特殊的树形结构,它满足堆属性:对于每个节点x,其父节点的值小于等于x的值(最小堆)或大于等于x的值(最大堆)。堆可以用数组来实现,数组中的每个元素对应堆中的一个节点。 4. 什么是动态规划?如何实现动态规划? 动态规划是一种解决多阶段决策问题的方法。它将问题分解为多个子问题,并通过保存子问题的解来避免重复计算。动态规划的实现需要定义状态转移方程和边界条件。 5. 什么是图?如何实现图? 图是一种由节点和边组成的数据结构,它可以用来表示各种实际问题。图可以用邻接矩阵或邻接表来实现。邻接矩阵是一个二维数组,其中每个元素表示两个节点之间是否有边。邻接表是一个链表数组,其中每个链表表示一个节点的邻居节点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值