数据来源:真实面经整理 | 版本:final
一、公司画像 & 校招节奏
宇树科技(Unitree Robotics)成立于,总部杭州滨江区,创始人王兴兴。
这个名字你可能不熟,但你一定见过他们家的产品——B站上那些跑酷、翻跟头、被人踢一脚还能站稳的四足机器人狗,十有八九是宇树出品。更不用说春晚舞台上那群"机器人群舞",刷屏全网,那批也是宇树的H1人形机器人。
公司规模不算大,大概五六百人。但在四足机器人和人形机器人领域,宇树是国内毫无争议的第一梯队。Go2机器狗的全球出货量已经是同类产品里最高的,B2工业级四足机器人在电力巡检、矿山巡查方向已经有规模化商业落地。H1和G1人形机器人,更是让学术界和工业界同时盯着的产品。
核心产品线:
| 产品 | 定位 | 特点 |
|---|---|---|
| Go1/Go2 | 消费/科研四足机器人 | 全球出货量最大 |
| B2 | 工业级四足机器人 | 负载50kg,室外全地形 |
| H1 | 通用人形机器人 | 发布,全身关节可控 |
| G1 | 轻量化人形机器人 | 发布,更便携 |
| Z1 | 机械臂 | 配合四足使用 |
技术路线上,宇树走的是"强化学习+经典控制双轮驱动"路线。运动控制算法里,RL(强化学习)负责处理复杂地形和动态扰动;MPC/WBC(模型预测控制/全身控制)负责高精度任务执行。两条线都在做,不偏科。
另一个重要特点:宇树核心技术自研程度很高,关节电机、控制板、运动控制算法基本都是自己做的。这意味着工程师要同时懂算法和硬件,纯软件背景进去会有点不适应,但如果你喜欢软硬件结合,会觉得很爽。
主要招聘方向:
| 岗位 | 技术侧重 | 招聘量 |
|---|---|---|
| 运动控制算法工程师 | C++/Python,强化学习,全身控制,步态规划 | 最多 |
| 嵌入式软件工程师 | C/C++,MCU编程,驱动,实时控制 | 多 |
| 感知算法工程师 | SLAM,点云,3D目标检测 | 中等 |
| 仿真平台工程师 | IsaacGym/IsaacLab,仿真环境搭建 | 较少 |
| 机械设计工程师 | SolidWorks,机构设计 | 中等(非CS方向) |
校招节奏(参考):
| 阶段 | 时间 | 说明 |
|---|---|---|
| 暑期实习 | 6- | 表现好可留用,是最佳入职通道 |
| 正式网申 | job.unitree.com,关注官网和招聘号 | |
| 技术面试 | 10- | 2-3轮技术面 + 1轮HR面 |
| Offer发放 | 11- | 节奏比大厂快一些 |
薪资水平:相比BAT等大厂略低,本科应届15-22k居多,研究生可到25-30k;但股权期权比例较高,且公司处于快速成长阶段,有较大想象空间。
宇树是创业公司氛围——没有大厂的繁文缛节,但也没有大厂的资源缓冲。项目迭代快,工作强度真实,但如果你对机器人有热情,这是国内很难找到的工作体验。
二、岗位JD解析:技术要求拆解
宇树的JD写得比较克制,不像部分互联网大厂那样列一大堆"加分项"。核心要求就那几条,但每条都是真实在考的。
运动控制算法工程师(核心方向)
| 能力维度 | JD描述 | 真实考察重心 | 备考权重 |
|---|---|---|---|
| C++工程能力 | 熟练C++ | 实时系统C++:无动态内存分配、RAII、多线程同步 | ⭐⭐⭐⭐⭐ |
| 强化学习 | 熟悉RL算法 | PPO原理、奖励函数设计、Sim-to-Real迁移 | ⭐⭐⭐⭐⭐ |
| 经典控制 | MPC/WBC经验 | 二次规划(QP)、刚体动力学、MPC公式 | ⭐⭐⭐⭐ |
| 数学基础 | 线性代数/优化理论 | 四元数/旋转矩阵、Eigen库使用、梯度下降 | ⭐⭐⭐⭐ |
| ROS/ROS2 | 机器人中间件 | 节点通信、话题/服务/Action机制、实时调度 | ⭐⭐⭐ |
| 项目经验 | 机器人相关经历 | 有无实际跑通过机器人程序(不只是仿真) | ⭐⭐⭐⭐⭐ |
一个关键提示:宇树面试非常看重"你有没有真的跑通过机器人"。在仿真里跑通和在真实硬件上调通,在面试官眼里是完全不同量级的经验。如果你有RoboMaster、ROBOCON、或者自己攒过机器人的经历,一定要详细讲。
嵌入式软件工程师
| 能力维度 | JD描述 | 真实考察重心 | 备考权重 |
|---|---|---|---|
| 嵌入式C | 熟悉裸机/RTOS编程 | FreeRTOS任务调度、优先级翻转问题 | ⭐⭐⭐⭐⭐ |
| 电机控制 | FOC控制原理 | FOC原理、PID整定、SVPWM实现 | ⭐⭐⭐⭐⭐ |
| 硬件通信协议 | CAN/SPI/I2C/UART | CAN报文格式、波特率配置、中断处理 | ⭐⭐⭐⭐ |
| Linux驱动 | 了解Linux内核 | 字符设备驱动框架、DMA传输、内存映射 | ⭐⭐⭐ |
| 调试能力 | 硬件调试经验 | 示波器/逻辑分析仪使用,能定位底层bug | ⭐⭐⭐⭐ |
感知算法工程师
| 能力维度 | JD描述 | 真实考察重心 | 备考权重 |
|---|---|---|---|
| SLAM | 激光/视觉SLAM | LIO-SAM流程、VINS-Mono原理 | ⭐⭐⭐⭐⭐ |
| 点云处理 | 3D感知 | PCL库使用、地面分割、障碍物检测 | ⭐⭐⭐⭐ |
| 深度学习 | 3D目标检测 | PointPillar/CenterPoint,BEV感知基础 | ⭐⭐⭐ |
| C++ | 工程实现 | 与运动控制岗C++要求相同 | ⭐⭐⭐⭐⭐ |
三、LeetCode高频题Top 20(真实面经数据)
宇树科技面试的算法题难度是"Medium能写好即可"。不是Google那种专门卡Hard题的面试风格,但基础数据结构和常见算法一定要扎实,而且必须用C++实现。
重要说明:宇树面试官会要求C++手写代码,不接受Python伪代码。代码要能编译通过,边界条件要处理好。
第一梯队:必须掌握(出现频率极高)
| 题号 | 题目 | 类型 | 核心考点 | C++要点 |
|---|---|---|---|---|
| 206 | 反转链表 | 链表 | 指针操作、迭代/递归两种写法 | 裸指针操作基础 |
| 21 | 合并两个有序链表 | 链表 | 哨兵节点技巧 | 注意内存不泄漏 |
| 102 | 二叉树层序遍历 | 树/BFS | 队列使用、层级管理 | queue |
| 236 | 二叉树的最近公共祖先 | 树 | 递归思维、后序遍历 | 注意nullptr判断 |
| 53 | 最大子数组和 | 动态规划 | Kadane算法、DP状态定义 | 经典DP入门 |
| 215 | 数组中的第K个最大元素 | 堆/快排 | 手写快速选择/堆排序 | priority_queue使用 |
| 手撕 | 快速排序 | 排序 | partition逻辑、递归 | 必须能默写 |
| 手撕 | 归并排序 | 排序 | 分治、合并有序数组 | 注意辅助数组 |
第二梯队:高频出现(大概率会考到其中一两道)
| 题号 | 题目 | 类型 | 核心考点 |
|---|---|---|---|
| 23 | 合并K个升序链表 | 链表/堆 | 优先队列,多路归并 |
| 70 | 爬楼梯 | 动态规划 | DP基础,滚动数组优化 |
| 1143 | 最长公共子序列 | 动态规划 | 二维DP,状态转移 |
| 200 | 岛屿数量 | 图/DFS | DFS/BFS图遍历 |
| 146 | LRU缓存 | 哈希表+链表 | 手写LRU,考设计能力 |
| 3 | 无重复字符的最长子串 | 滑动窗口 | 双指针,哈希集合 |
| 15 | 三数之和 | 双指针 | 去重逻辑,排序+双指针 |
| 54 | 螺旋矩阵 | 矩阵模拟 | 边界条件,方向控制 |
| 48 | 旋转图像 | 矩阵 | 原地旋转,转置+翻转 |
| 33 | 搜索旋转排序数组 | 二分查找 | 二分的变形,条件判断 |
第三梯队:中等频率(准备充分的可以看看)
| 题号 | 题目 | 类型 | 核心考点 |
|---|---|---|---|
| 42 | 接雨水 | 单调栈/双指针 | 经典题,多种解法 |
| 76 | 最小覆盖子串 | 滑动窗口 | 窗口收缩条件 |
备考策略:宇树面试不会让你在白板上默写50道LeetCode。更常见的是"写一个快排/归并/链表反转,然后聊聊你的项目"。算法题是门槛,项目经验才是加分项。
C++手写注意事项:
- 链表题:注意空指针处理,if (head == nullptr) 不能省
- 递归题:考虑栈溢出问题(面试官可能追问)
- 动态规划:说清楚状态定义和转移方程,比直接给代码更重要
- 排序:快排要会手写partition,不能只会std::sort
四、技术面试考点
宇树面试的技术考察有明显的机器人公司特色。除了算法题,专业知识考察是重头戏,而且会根据你的简历深挖。
C++专项(各岗位通用,权重最高)
实时性与性能是宇树C++考察的核心关键词。机器人控制循环通常跑在1kHz(每秒1000次),任何不必要的延迟都会导致机器人抖动甚至摔倒。所以宇树非常在意你是否理解"实时安全"的C++写法。
高频考点:
-
禁止动态内存分配:在实时控制循环里,
new/delete/malloc是禁区。面试官会问:怎么在堆不可用的场景下管理内存?(答案方向:内存池、静态分配、对象复用) -
RAII(资源获取即初始化):智能指针(
unique_ptr/shared_ptr)、锁的RAII封装(lock_guard/unique_lock)、自定义RAII类——这类题几乎必考。 -
多线程实时控制: - 1kHz控制循环怎么保证时序?(Linux实时线程:
SCHED_FIFO+mlockall+ CPU亲和性设置) - 无锁队列(lock-free queue)原理?(std::atomic+ CAS操作) - 优先级反转问题?(优先级继承协议、使用PTHREAD_MUTEX_ERRORCHECK) -
Eigen矩阵库:宇树代码里大量使用Eigen做矩阵运算。考点:Matrix3d/Quaterniond的操作、旋转矩阵和四元数互转、Eigen的懒惰求值机制(Expression Templates)。
-
C++17新特性:结构化绑定(
auto [x, y] = pair)、if constexpr、std::optional——了解即可,不会深问。
一个容易被忽视的考点:volatile 关键字在嵌入式环境下的意义。很多人以为volatile和多线程同步有关,其实它解决的是编译器优化导致的内存访问问题(防止编译器把硬件寄存器的读取"优化"掉)。
运动控制算法专项
强化学习方向:
| 考点 | 考察内容 | 深度要求 |
|---|---|---|
| PPO算法 | 裁剪目标函数、价值网络、优势函数估计 | 能推导公式 |
| Sim-to-Real | Domain Randomization原理、为什么仿真到现实有gap | 能讲原理和方案 |
| 奖励函数设计 | 速度追踪项、能量惩罚项、接触力惩罚项 | 能解释各项的直觉含义 |
| IsaacGym/IsaacLab | GPU并行仿真原理、与MuJoCo的区别 | 了解框架使用 |
| 策略网络结构 | MLP vs Transformer策略网络的优缺点 | 了解趋势 |
面试官常问的一个问题:"你怎么设计一个让机器人学会爬楼梯的奖励函数?" 这道题没有标准答案,考的是你对RL和机器人运动的系统理解。参考答案思路:正奖励(前进速度、重心高度维持)+ 负奖励(关节扭矩过大、接触力突变、摔倒检测)。
经典控制方向:
| 考点 | 考察内容 | 深度要求 |
|---|---|---|
| MPC(模型预测控制) | 滚动优化、约束处理、四足机器人MPC建模 | 理解公式,会写状态方程 |
| 全身控制(WBC) | 层次化QP、操作空间控制、动力学模型 | 了解框架,能说出任务优先级如何实现 |
| PID控制 | P/I/D三项作用、整定方法(Ziegler-Nichols)、抗积分饱和 | 必须非常熟 |
| 步态规划 | 接触序列、摆动腿轨迹规划、稳定裕度分析 | 了解trot/walk/bound步态区别 |
| 刚体动力学 | URDF格式、正/逆运动学、雅可比矩阵 | 理解概念,会用RBDL/Pinocchio库 |
嵌入式专项
| 考点 | 核心问题 | 参考答案方向 |
|---|---|---|
| FreeRTOS调度 | 优先级翻转怎么发生?如何解决? | 互斥量实现优先级继承,或使用优先级天花板 |
| CAN总线 | 仲裁机制?报文ID的作用? | CSMA/CA,ID越小优先级越高 |
| FOC电机控制 | 为什么FOC比普通PWM控制更好? | Clarke/Park变换,解耦d-q轴控制,低速扭矩平滑 |
| 中断处理 | 中断里能不能用printf?为什么? | 不能,printf可能死锁;改用标志位+任务处理 |
| 内存管理 | 嵌入式里为什么尽量避免动态内存分配? | 内存碎片化、分配时间不确定、堆空间有限 |
五、面经规律总结
整理了近两年宇树科技的校招面经,发现以下规律:
面试结构
通常3轮: - 技术一面(60-):算法1-2道 + C++基础 + 简历项目深挖 - 技术二面():专业知识考察(运动控制/嵌入式/感知,根据岗位定向) + 更深的项目追问 - HR面():动机、职业规划、团队协作,无特殊技巧
面试规律
规律1:项目经验是核心考察点
宇树面试官非常喜欢追问项目。"你在这个项目里遇到的最难的问题是什么?""最后怎么解决的?""如果重新做,你会改什么?"
这意味着:简历上写的项目必须深入了解,不能只知道"用了什么技术",要知道"为什么用这个技术、遇到了什么坑、怎么解决的"。
规律2:C++是硬门槛,不可绕过
面试官会让你在线手写C++代码(通常用牛客在线面试工具或共享文档)。代码不需要一次性完美,但基本语法要正确,指针操作要规范。
频繁被问到的C++细节:
- struct 和 class 的区别(默认访问权限)
- 虚函数表的工作原理(vtable指针存储在哪)
- 移动语义(std::move什么时候用、右值引用的意义)
- 模板函数的实例化时机(编译期还是运行期)
规律3:算法题难度中等,重视代码质量
宇树不会出Hard难度的LeetCode题为难应届生。但面试官会注意你的代码风格:变量命名是否规范、是否有注释、边界条件是否考虑周全。
"你的代码能不能直接放到我们的代码库里"——这是宇树面试官的潜在判断标准。
规律4:机器人背景是显著加分项
简历上有以下任何一项,会显著提升通过率: - RoboMaster竞赛经历(尤其是做步兵/英雄机器人的运动控制) - 课题组里跑过四足/人形机器人实验 - IsaacGym/IsaacLab仿真训练经历 - 开源贡献(宇树SDK的issues/PR)
规律5:宇树面试节奏比大厂快
大厂可能面了两个月还没消息,宇树通常1-就有结果。反馈速度快是创业公司的特点之一。
校招节奏
这份校招节奏以"运动控制算法工程师"为主线设计,嵌入式方向在部分重点投入,感知方向在替换为视觉SLAM部分。
:C++深度强化
这是宇树备考的地基。不管投哪个方向,C++不过关就别想了。
:实时安全C++
- 掌握:RAII惯用法,智能指针的使用场景和开销
- 掌握:什么是实时系统里的"不确定行为"(内存分配、I/O、异常)
- 练习:手写一个线程安全的环形缓冲区(lock-free版本)
- 掌握:volatile vs atomic vs mutex 的区别和使用场景
:Eigen矩阵库 - 掌握:Matrix3d、Vector3d、Quaterniond的基本操作 - 掌握:旋转矩阵 ↔ 四元数 ↔ 欧拉角的互相转换 - 掌握:Eigen的Block操作和广播操作 - 练习:用Eigen实现一个简单的旋转变换链
:多线程实时控制
- 掌握:Linux实时线程配置(SCHED_FIFO、CPU亲和性、mlockall)
- 掌握:std::thread、std::mutex、std::condition_variable 用法
- 了解:无锁数据结构(lock-free queue)的原理(不要求手写)
- 掌握:优先级反转问题的成因和解决方案
:C++面试题集中演练 - 刷C++经典面试题(虚函数、模板、move语义、RAII) - 重新看一遍之前写的代码,检查命名规范和注释质量
:算法专项
:链表与树
- 刷:LeetCode 206、21、23、236、102、144、145(层序/前序/后序遍历)
- 重点:用C++手写,不用auto省事,写完整类型声明
- 练习:白板上默写反转链表和二叉树层序遍历
:动态规划与排序 - 刷:LeetCode 53、70、1143、300(最长递增子序列) - 手写:快速排序(重点partition逻辑)、归并排序 - 练习:说清楚状态定义和转移方程,不只是写代码
:矩阵与双指针 - 刷:LeetCode 48、54、3、15 - 重点:矩阵边界条件,双指针去重逻辑
:运动控制深度学习
:强化学习专项 - 理解:PPO算法(策略梯度、Clipping目标函数、GAE优势估计) - 理解:Sim-to-Real的gap从哪里来(物理参数不精确、传感器噪声、执行器延迟) - 理解:Domain Randomization的方法(随机化摩擦系数、质量、外力扰动) - 配置:在本地或服务器跑一个IsaacLab的示例任务(官方有现成的四足步行任务) - 重点:能够解释宇树H1/Go2用的是什么训练框架
:MPC与步态规划 - 理解:MPC的滚动优化原理(为什么每一步都重新求解?) - 理解:四足机器人的简化动力学模型(质心动力学模型) - 理解:trot/walk/bound三种步态的接触序列区别 - 了解:MPC for Legged Robots(CMU Cheetah论文是经典参考)
:全身控制与动力学 - 理解:层次化QP(Hierarchical QP)的任务优先级机制 - 理解:雅可比矩阵(Jacobian)在机器人中的作用(速度映射、奇异点) - 了解:RBDL / Pinocchio库的基本使用 - 练习:用Eigen手写一个简单的3自由度机械臂正运动学计算
:SLAM基础
:激光SLAM - 理解:LIO-SAM的系统框架(IMU预积分+激光里程计+回环检测) - 理解:ICP算法(迭代最近点)的原理 - 了解:地面分割(RANSAC)和点云滤波(体素滤波) - 配置:跑一个LIO-SAM的开源demo(数据集:MulRan或KITTI)
:视觉惯性里程计(VIO) - 理解:VINS-Mono的框架(滑动窗口优化、IMU预积分) - 理解:特征点提取与匹配(ORB特征) - 了解:相机-IMU外参标定(Kalibr工具) - 重点:能解释为什么四足机器人用SLAM而不只用IMU做定位
:嵌入式专项
这三天重点面向嵌入式软件工程师岗位。运动控制岗也要了解基础。
:RTOS与任务调度 - 掌握:FreeRTOS的任务创建、调度策略(抢占式)、任务通知 - 掌握:优先级反转问题(成因:低优先级任务持有高优先级任务需要的锁) - 掌握:优先级继承协议(Priority Inheritance Protocol)的原理
:总线协议与电机控制 - 掌握:CAN总线的报文格式(ID、DLC、DATA字段)、仲裁机制 - 掌握:FOC(磁场定向控制)的Clarke变换、Park变换和SVPWM原理 - 掌握:PID整定的基本方法(为什么积分项会引起超调?如何抗积分饱和?) - 了解:宇树电机使用的是自研关节模组(T-Motor同款技术路线)
:Linux驱动基础 - 了解:字符设备驱动的框架(file_operations结构体) - 了解:DMA传输(为什么DMA比CPU轮询高效?) - 掌握:中断处理的上半部/下半部机制(不能在中断里做耗时操作)
:冲刺准备
:宇树面经整理 - 搜集最新宇树面经(重点看以后的) - 整理高频问题,对每个问题准备2-的回答 - 重点:项目描述练习(STAR法则:情境-任务-行动-结果)
:项目准备与GitHub展示 - 整理2-3个你最有把握讲清楚的项目 - 每个项目准备:背景、技术选型理由、遇到的坑、最终效果 - 如果有宇树SDK相关代码,push到GitHub(面试前发给面试官) - 如果参与过开源项目(legged_gym、unitree_ros2等),梳理贡献点
:模拟面试与知识查漏 - 找同学或录视频,模拟技术一面(,算法题+C++题+项目) - 检查:白板手写代码是否流畅?项目讲述是否清晰? - 查漏:把之前标记"不太确定"的知识点再过一遍 - 心态准备:宇树面试节奏快,被拒了很快知道,没必要焦虑等消息
📚 你可能还需要这些
机器人公司其他备考攻略
如果你在同时投多家机器人/自动驾驶公司,这些可以参考: - 📌 地平线校招备考攻略(芯片+算法双轨,C++要求同样极高) - 📌 Momenta校招备考攻略(视觉感知方向,深度学习权重更大) - 📌 小鹏智驾校招备考攻略(端到端架构,RL在自动驾驶的应用)
C++和嵌入式基础巩固
如果C++基础有短板,可以配合以下攻略: - 📌 大厂C++技术面试常考题整理(通用C++考点,宇树必考范围均覆盖) - 📌 大厂笔试面试八股文-算法-数组常考题(算法基础补充)
💡 关注我,少走弯路
我会持续分享: - ✅ 大厂高频题整理(按公司、岗位精准分类,宇树/地平线/Momenta等机器人公司专项) - ✅ 最新面经汇总(届校招第一时间更新) - ✅ 机器人方向备考指南(运动控制/嵌入式/感知全覆盖) - ✅ C++实时系统专题(专为机器人/嵌入式岗位定制)
这篇攻略整理了大量面经和技术文档,如果对你有帮助: - 👍 点个"赞"和"在看",让更多备考同学看到 - 💬 评论区聊聊你的备考进展,或者留下你在宇树面经里遇到的题目 - 🔄 转发给同样在投机器人公司的同学
有问题随时留言,我会尽量回复!
数据来源: - 宇树科技官网招聘信息(job.unitree.com) - -届校招面经(各平台公开信息整理) - 宇树开源项目文档(github.com/unitreerobotics) - 机器人运动控制学术论文(legged_gym、unitree_rl_gym项目) -