面经分享|2022年秋招斩获7个规控算法工程师offer

news2024/12/23 8:00:06

该面经来自深蓝学院用户投稿,作者为东北大学自动化专业硕士。

作者2022年秋招情况:投递的岗位包括决策规划,规划控制和控制岗位。本人累计投递70家自动驾驶公司,最终收获10多家公司的笔试或面试反馈。最终拿到的offer包括主机厂、新势力、自动驾驶公司等。整体上偏向决策或规划岗位。

整体节奏

研一主要学习了深度学习、强化学习和多伦多大学的自动驾驶课程,以及自动驾驶仿真平台CARLA;研二上学期学习了C++和leetcode相关知识,以及深蓝学院、百度的公开课,10月开始学习C++知识,断断续续的看代码随想录的笔记,对于学习的过程中要记好笔记,掌握一题多解,比如对于树的题目而言,不仅学习递归的解法也要掌握迭代的解法。

第二年(研二下学期)3月份开始高强度刷题,持续到6月份,累计刷题200+保持手感,每天都要花时间写题目,不然手生疏的话再捡回来就比较困难了。

在6月份到9月份期间,面试的同时,也要复习并且刷一些常见的题目,这个阶段是提前批阶段,不需要笔试,一般直接进入面试环节,每次面试后及时复盘,整理面试的问题和答案,方便后续总结提升自己。

在9月份到10月份,开始了正式批环节。由于提前批面了一些公司,经验更加丰富,面试的时候相对会更加顺利,一些公司还需要做笔试,笔试包括计算机基础知识和稍微困难的编程题目,因此还需要继续刷题保持手感。

在10月份后基本上到了谈薪的环节,可以拿已有的offer和其他公司讨论,争取拿到满意的薪资。

秋招的基础知识准备

C++

通过如黑马课程等了解基本概念,掌握基本的C++知识,并且在学习的过程中要多敲代码,比如继承多态的写法,各种STL容器的用法等等,可能面试的时候也会写简单的结构。而对于应付面试来说,还需要理解的记忆一些常见八股文,基本是面试的必考环节,常考的如虚函数、智能指针、多态等知识,如果背的不够的话,很可能回答的时候漏掉一些关键的知识点,导致面试官认为你的基础掌握不够扎实,因此只有背的足够多才能在面试中从容的面对。

leetcode

手撕代码比较关键,代码的难度一般不高,基本属于hot100里的题目,算法岗位的话动态规划、深度优先搜索和广度优先搜索的题目比较多,而对于自动驾驶而言,图的相关题目也需要重点掌握,整体上建议题量在200+即可,另外对于常见的困难题也应当非常熟悉,比如接雨水、N皇后等。

另外还需要学会在本地IDE中编写代码,能够自己定义如链表、树等结构体,并且写测试案例通过测试,自己定义数组、建立一个树并且赋值,也会定义一些图的结构,了解邻接表、邻接矩阵等,并且能够很快的debug代码,在本地中快速调试并运行成功。

规划控制理论

由于投递的岗位以规划为主,这里主要学习了PID和LQR等知识,需要有一些PID调参的经验,如PID各自的作用以及PID如何调参才能满足预期的控制功能,了解增量式PID和位置式PID的区别。这部分更强调实践的内容,最好要手动编写一部分代码,并且在一些仿真平台做尝试来实践一下,可以选择CARLA或者CarSim等。

优化

规划岗位对优化有一定的要求,可以看一些最优化的课程,了解常见的QP方法,并且也需要用代码来实现求解,学会调用一些求解器的库函数。对凸优化的一些基本概念应该了解,此外凸优化和矩阵分析联系也比较密切,比如正定矩阵等,需要有一定了解。

深度学习

基于深度学习的预测或者决策方法对深度学习基础有一定要求,需要掌握卷积的计算、梯度下降的方法和区别、手撕一些深度学习的公式。对于预测而言的话,又需要了解预测的常见指标,包括ADE和FDE等,以及每个指标是如何计算的,在实践中这些指标的数值大小是多少。

实践

(1)多参加自动驾驶相关比赛,如果是规划控制岗位,多一些基于规则的方法规划算法编写和控制经验。这部分主要有轨迹预测的比赛和规划控制的比赛,需要自己多关注一些公众号,多收集一些比赛的相关资料,并且和志同道合的同学一块参加,共同进步,不断提出一些好的想法并且付诸实践。

(2)多参加实习,有助于提升自动驾驶实践经验,在投实习的过程中,面试的算法题以简单或者中等为主,而且也是高频的题目,因此只要整体上表现中等就可以,一般来说实习的面试比正式批的面试会少一轮。有了自动驾驶丰富的实践经验,在秋招中是极大的加分项,在简历筛选和面试中具有很大的优势。

(3)多积累一些项目,可以放一些博客的链接或者github链接,让面试官看到你的认真态度。在博客的撰写中,可以将自己学习自动驾驶的过程记录下来,比如各种数学的学习过程,各种自动驾驶算法的分享,体现了扎实的技术功底,而github中可以放一些比赛的实践代码或者一些自己写的小项目,证明自己有相关的代码经历。

总结

常见的一C++八股

虚函数和抽象类

有哪些智能指针

const和static关键字的作用

map和unordered_map的区别

vector中reserve和resize的区别

常见的规划和控制问题

lattice planner和EMplanner的联系和区别

DP和QP的cost公式

PID参数的作用

建议

今年绝大部分行业的就业形式非常糟糕,像自动驾驶等科技类行业也是如此。鉴于当下经济形势,给大家一些建议:

(1)在投递建议上,广撒网比较重要,目前自动驾驶行业紧缩,只有多投才能多有面试机会。比赛、实习或者论文都非常重要,会增加通过建立初筛的概率。

(2)在刷题上,保持手感,熟悉常见的题目即可,面试中基本是以简单或者中等题为主,并且也包含一些自动驾驶的数学题。

(3)多参与实践项目,多写相关的代码,公司更看重动手能力强的同学。

注:知名招聘网站拉勾发布了《2022数字化科技人才招聘白皮书》,其数据显示,2022年一线和新一线城市招聘岗位缩减,新发布职位量同比降幅超10%。北上广深分别减少16%、14%、15%和13%。而2022年全国高校毕业生人数创历年新高,达1076年。

(来源拉勾:历年高校应届毕业生人数)

真心希望对自动驾驶有热情的同学能够加入到自动驾驶这个行业中来,贡献自己的一份力量,也希望通过这个面经,启发更多的同学,让大家有所收获,只要按照合理的时间线来进行学习,认真学习和复习相关的课程,一定能够在面试披荆斩棘,拿到满意的工作,加油!

深蓝学院经验

调研一个岗位对候选人的知识储备要求,最直接的方法是从招聘网站上梳理各大企业对应岗位的招聘描述。以低速机器人/自动驾驶企业的规划岗位为例,职位要求中需要候选人掌握的基础知识主要有4类

(1)C++编程;

(2)基础的规划算法(A*, RRT*, Lattice based, MPC, POMDP等);

(3)参数化曲线构造(多项式、贝塞尔、样条曲线);

(4)数值优化常用方法。 

普通的理工科在校生,熟练掌握以上4类基础知识需要多少多长时间?根据深蓝学院的培养经验,少则9个月,多则1年半。3年来,数千位深蓝学员已陆续入职各大自动驾驶/机器人企业,他们扎实的基础功底备受企业青睐。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音短视频运营中的六大定位法

抖音六大定位法 1年龄反转法年龄反转法的秘诀就是指,所设定的人物、性格与实际的年龄并不是特别符合,从而让用户产生比较强烈的差异感。比如之前很火的北海爷爷,是一位有着七十多岁高龄的先生,但他依然很有精神,举止优…

【Mybatis-plus 入门教程】

🌈博客主页:屠一乐的博客 📅 发文时间:2023.1.6 🎈 一定存在只有你才能做成的事 🌹 博主水平有限,如有错误,欢迎指正 欢迎各位👍收藏💎评论✉ MyBatisPlus …

舆情监测技术手段有哪些,网络舆情监测监测技术应用到哪些方面?

随着网络舆情的快速发展,舆情影响到方方面面,大多数企业将网络舆情监测纳入其日常工作。对于舆情监测上如何做到全面监测,那些技术上可以实现,接下来TOOM舆情监测小编带您简单了解舆情监测技术手段有哪些,网络舆情监测…

C语言 文件处理

文件操作 为什么使用文件 什么是文件 程序文件 数据文件 文件名 文件的打开和关闭 文件指针 只要没打开一个文件就会有一个文件信息区,只要一更改文件信息区也会跟着更改 **FILE *fopen( const char filename, const char mode ); filename 文件名 *char mode 打…

疑难杂症之vscode--During startup program exited with code 0xc0000139.--缺失重要文件(杂记)

问题展示在vscode中,只要用了STL容器,就会出现这样的提示发现自己的 vscode 不能运行带有部分 stl 库的程序,编译不会报错,运行也不会报错但是也没有结果,调试的话会有下图中报错。拿一个以前的程序做测试,…

Java 集合系列:Vector源码深入解析

概论 学完ArrayList和LinkedList之后,我们接着学习Vector。学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码;最后再通过实例来学会使用它。 第1部分 Vector介绍 Vector简介 Vector 是矢量队列,…

java服装商城购物商场项目源码

简介 Java基于ssm开发的服装商城,用户可以浏览商品和特价商品,加入购物车,直接下单支付,在我的个人中心里可以管理自己的订单,收货地址,编辑资料等。管理员可以发布商品,上下架商品&#xff0c…

Neo4j详细介绍及使用教程

文章目录一、Neo4j介绍1.Neo4j简介2.图数据库简介3.Neo4j的优缺点4.Neo4j的常见应用场景二、使用教程1.下载安装2.数据插入和查询(1)基本概念(2)基本语法Ⅰ.CREATE操作——创建Ⅱ.MERGE——创建或更新Ⅲ.Match操作——查找指定的图数据Ⅳ.DELETE操作——删除节点3.JAVA实战一、…

FPGA之VGA/LCD数字时钟显示

文章目录前言一、LCD显示控制1.LCD显示一个字符2.LCD显示多个字符二、数字时钟输出1.数字时钟2.十进制数据拆分BCD码三、按键检测及LCD驱动1.按键检测2.LCD驱动四、总结前言 软件实现了在4.3寸LCD左上角显示一个数字时钟,效果如下图所示。本文针对VGA/LCD控制时许有…

leetcode:2103. 环和杆(python3解法)

难度:简单 总计有 n 个环,环的颜色可以是红、绿、蓝中的一种。这些环分布穿在 10 根编号为 0 到 9 的杆上。 给你一个长度为 2n 的字符串 rings ,表示这 n 个环在杆上的分布。rings 中每两个字符形成一个 颜色位置对 ,用于描述每个…

makefile 入门

make常用选项 # make 默认在当前目录中寻找GUNmakefile,makefile,Makefile的文件作为make的输入文件 # -f 可以指定默认的输入文件名,如: -f MyMakefile # -v 显示make版本号 # -n 只输出命令,但不执行,一般用于测试 # -s 只执行命令,但不显示具体命令,与在命令中使用作用一样…

第四十四讲:神州防火墙双机热备配置

两台防火墙硬件型号和软件版本都完全相同,为了避免防火墙不堪重负而宕机引起网络中断,可以考虑应用双机热备(HA)解决方案。双机热备能够把两台防火墙构成一个工作组,一主一备,保证数据通信畅通,…

【实际开发01】- 单元测试 ( 追求正确性 )

目录 0. 单元测试 概念 / 解析 1. 为什么要进行单元测试 1. JUnit ~ Test 2. IDEA 中使用 junit 单元测试 , 不能使用 Scanner 的解决方法 3. Junit 测试 Tutorial 1. daiding 4. Test 修饰的方法必须 public 1. validatePublicVoidNoArgMethods(Test.class, false, er…

功率二极管的损耗分析和选型原则

功率二极管的损耗分析和选型原则 tip:参考网上资料,学习为主 1.二极管的分类 2.二极管的损耗组成 3.二级管的损耗分析 4.应用实例1.Flyback电源电路二极管损耗计算 5.实例应用2.BOOST电路二极管损耗计算 6.实例应用3.大功率整流桥二极管参数计算 7.选型…

sqli-labs 5~6 多命通关攻略

sqli-labs 5~6 多命通关攻略描述判断注入类型正常输入不正常输入错误输入判断 SQL 查询结果的列数猜测 SQL 查询结果中的列数为两列猜测 SQL 查询结果中的列数为三列猜测 SQL 查询结果中的列数为四列爆破方式的可行性函数 UpdateXML()爆破(报错注入)爆破…

农业智能化进入“刚需时代 ” ,维视智造机器视觉实验室赋能新农科人才培养

1、传统农业数字化转型 新农科人才急需紧缺数千年来,农业是我国立国基础,农业兴衰关系到国家的命运。在大力推动乡村振兴的背景下,高校作为强农兴农的“国之重器”,在培育“农”的传人、新农科建设方面扮演着不可替代的角色。世界…

C++入门——内联函数、extern “C“

一. 内联函数 1.概念及分析 以inline修饰的函数叫做内联函数,编译时C编译器会在调用内联函数的地方展开,没有函数调 用建立栈帧的开销,内联函数提升程序运行的效率。 int Add(int a, int b) {int c a b;return c; }int main() {int re…

聚焦技术创新实力,时序数据库 TDengine 荣登中国技术先锋年度评选两大榜单

2023 年 1 月 5 日,中国技术先锋年度评选 | 2022 中国最受开发者欢迎的技术活动榜单正式发布。作为中国领先的新一代开发者社区,SegmentFault 思否依托社区活动板块及全站数百万开发者用户行为数据,及活动规模、内容好评度、行业综合影响力指…

Go语言设计与实现 --调度器(详细介绍)

GMP和GM模型 先来一张图: G(Goroutine):代表Go 协程Goroutine,存储了 Goroutine 的执行栈信息、Goroutine 状态以及 Goroutine 的任务函数等。G的数量无限制,理论上只受内存的影响,创建一个 G 的初始栈大小为2-4K&…

vue项目安装使用element_UI

安装element_UI之前需要安装VUE脚手架框架! 第一步: 在Vscode 随意打开一个文件夹,在集成终端打开 npm i -g vue/cli (检测: vue -V) 第二步:新建一个文件夹,并且在集成终端打开安装VUE脚手架 需要输入命令: vue create yan6 //yan6 为自定义文件名 1: 选第三个自定义 2: 将…