数据来源:真实面经整理 | 版本:final


一、公司画像 & 校招节奏

地平线(Horizon Robotics)成立于,总部北京,由余凯创立——他此前是百度主任科学家,深度学习领域的顶尖学者之一。这个背景很重要:你能理解为什么地平线的技术基因如此纯正。

核心产品是征程系列芯片(征程5/征程6),这是专为自动驾驶设计的AI处理器,核心是地平线自研的BPU(Brain Processing Unit,脑处理单元)架构。简单类比:英伟达的GPU是通用并行计算,地平线的BPU是专为神经网络推理优化的定制芯片,功耗更低,在车端推理场景更有竞争力。

,地平线在港股上市(股票代码:9660.HK),估值约700亿港元。商业化进展非常扎实:大众汽车投资50亿欧元与地平线成立合资公司CARIZON,比亚迪、理想、长城、奇瑞等超过60家车企都在用地平线的芯片方案。这不是PPT公司,是真实跑量产的。

员工约1万人,技术人员占比超70%。这个比例在中国科技公司里算高的。你进去大概率跟工程师打交道,不用太担心内耗问题——当然也正因为此,技术能力要求非常高。

主要招聘方向:

方向 代表业务 技术侧重
算法工程师(最大方向) 感知/规划/预测算法 C++/Python,深度学习,点云
芯片架构工程师 BPU设计,NPU微架构 Verilog/SystemVerilog,微架构
BSP/驱动工程师 芯片BSP,Linux驱动 C,Linux内核,设备驱动
工具链工程师 模型量化/编译器 C++/Python,编译器优化,量化
系统软件工程师 实时操作系统,中间件 C/C++,RTOS,Autosar
测试工程师 芯片验证,算法评测 Python,仿真,数据标注

校招节奏(参考):

阶段 时间 行动建议
暑期实习 竞争激烈,是最佳转正通道,提前准备
正式网申 horizon.cc/campus,简历突出AI/深度学习项目
笔试 C++/算法/AI基础,90-
技术面试 2-3轮技术面 + 1轮HR面
Offer发放 薪资水平对标顶级互联网公司

一个需要提前想清楚的问题:地平线是做芯片的,不是做互联网产品的。这意味着你写的代码最终跑在嵌入式设备上,有实时性要求,有功耗约束,有内存限制。如果你只喜欢做纯后端、纯前端,地平线可能不是最合适的地方。但如果你对AI+硬件的结合感兴趣,地平线是国内最好的舞台之一。


二、岗位 JD 解析:技术要求拆解

地平线的岗位差异非常大,算法工程师和芯片架构工程师的备考路径几乎不重叠。先确定投哪个方向,再针对性准备。

算法工程师(最大方向,最多校招名额)

能力维度 JD描述 真实考察重心 备考权重
深度学习理论 熟悉神经网络 卷积计算、BN层推理行为、Transformer原理,几乎每轮必问 ⭐⭐⭐⭐⭐
感知算法 目标检测/分割 YOLO/DETR原理、3D目标检测(PointPillar/CenterPoint)、BEV感知 ⭐⭐⭐⭐⭐
C++编程 熟练C++ 智能指针、多线程、内存管理,必考,不接受Python伪代码 ⭐⭐⭐⭐⭐
模型优化 量化/部署经验 FP32→INT8量化原理、TensorRT优化、在嵌入式设备的推理 ⭐⭐⭐⭐
BEV感知 多传感器融合 BEVDet/BEVFusion原理,为什么BEV比前视图适合自动驾驶 ⭐⭐⭐⭐
数学基础 线性代数/概率 矩阵运算(GEMM实现)、贝叶斯推理基础,笔试会考 ⭐⭐⭐

特别说明:地平线算法岗不是纯互联网算法岗。"怎么把PyTorch模型部署到BPU上"这个问题,比"介绍一下BERT的结构"更接近真实工作内容。面试时能讲清楚部署链路的候选人,比只会讲模型结构的候选人更受欢迎。

工具链工程师(地平线特色方向)

这个方向在其他公司很少见,但在地平线非常重要——地平线的竞争力之一就是Horizon OpenExplorer工具链,让车企能够方便地把模型部署到征程芯片。

能力维度 JD描述 真实考察重心 备考权重
编译器原理 了解编译器 AST、IR优化、算子融合(conv+bn+relu合并) ⭐⭐⭐⭐⭐
量化技术 模型量化经验 PTQ/QAT原理,INT8量化的scale/zero_point计算 ⭐⭐⭐⭐⭐
C++工程 熟练C++ 与算法岗要求相同,性能优化更重要 ⭐⭐⭐⭐⭐
模型格式 ONNX/部署 ONNX导出、算子支持情况、自定义算子 ⭐⭐⭐⭐

芯片架构 / BSP工程师

能力维度 JD描述 真实考察重心 备考权重
数字电路 HDL设计 Verilog/SystemVerilog设计,时序分析,状态机 ⭐⭐⭐⭐⭐
计算机组成 微架构理解 Cache一致性,DRAM带宽,流水线设计 ⭐⭐⭐⭐⭐
Linux驱动(BSP方向) 内核开发 字符设备驱动、平台驱动、DMA传输 ⭐⭐⭐⭐⭐
RTOS(系统软件方向) 实时操作系统 任务调度,优先级反转,Autosar架构分层 ⭐⭐⭐⭐

三、LeetCode 高频题 Top 20(真实面经数据)

地平线的LeetCode考察有一个明显特点:算法题难度不是最高优先,但AI相关算法题(NMS、IOU、GEMM)出现频率很高,而且必须用C++写。面试官不接受"大概思路是这样",需要你当场写出正确、可运行的代码。

第一梯队(必刷,几乎每次都考)

题目 考察频率 地平线的考察重点
No.206 反转链表 ⭐⭐⭐⭐⭐ C++实现,迭代+递归两种
No.102 二叉树层序遍历 ⭐⭐⭐⭐ BFS基础,手写队列实现
快速排序(手撕) ⭐⭐⭐⭐ C++完整实现,分区逻辑要清晰
No.146 LRU缓存机制 ⭐⭐⭐⭐ HashMap + 双向链表,工程设计能力
No.23 合并K个排序链表 ⭐⭐⭐⭐ 优先队列(std::priority_queue)用法

第二梯队(高频,认真刷)

题目 考察频率 备注
No.215 数组中的第K大元素 ⭐⭐⭐ 堆 or 快速选择,两种都要会
No.15 三数之和 ⭐⭐⭐ 排序+双指针,边界条件容易出错
No.141 环形链表 ⭐⭐⭐ 快慢指针,经典入门题
No.236 二叉树最近公共祖先 ⭐⭐⭐ 递归理解,不只是背答案
No.200 岛屿数量 ⭐⭐⭐ DFS/BFS两种,C++实现
No.56 合并区间 ⭐⭐⭐ 排序后贪心,边界判断
No.42 接雨水 ⭐⭐⭐ 单调栈或双指针,经典Hard
No.25 K个一组翻转链表 ⭐⭐⭐ 链表操作扎实程度的测试
No.239 滑动窗口最大值 ⭐⭐⭐ 单调双端队列(deque)
No.300 最长递增子序列 ⭐⭐ DP + 二分优化两种解法

第三梯队:AI专项算法题(地平线特色,必须准备)

这是和其他公司最不一样的地方。地平线算法岗会考以下几类"AI算法题",本质上是手写实现,而不是刷LeetCode题库。

1. NMS(非极大值抑制)手写实现

这几乎是地平线算法岗的必考题。NMS是目标检测后处理的核心步骤。面试官会让你当场写C++代码:

输入:一组检测框 boxes(每个框有x1,y1,x2,y2坐标和置信度score)
输出:经过NMS筛选后保留的检测框索引列表
参数:iou_threshold(IOU阈值,通常0.5)

伪代码逻辑:
1. 按score降序排列所有框
2. 循环:取score最高的框,加入结果列表
3. 计算该框与剩余所有框的IOU
4. 删除IOU > threshold的框(认为它们与当前框重复)
5. 重复2-4,直到没有框

2. IOU(交并比)计算

IOU = 交集面积 / 并集面积
交集 = max(0, min(x2_a, x2_b) - max(x1_a, x1_b)) * max(0, min(y2_a, y2_b) - max(y1_a, y1_b))
并集 = 面积A + 面积B - 交集

这个公式短,但容易在边界条件上出错(两个框不相交的情况)。

3. Softmax数值稳定实现

普通Softmax在指数运算时会溢出。数值稳定版:先减去最大值再做指数运算。这个考察的是对数值计算细节的理解,而不是背公式。

4. GEMM矩阵乘法实现

最基础的矩阵乘法C++实现,考察内存访问模式和缓存友好性。高阶版本可能要求谈谈如何用SIMD指令(AVX2)加速。

刷题策略总结: 1. 第一梯队5题必须能闭眼写出正确C++代码(不是Python) 2. AI专项4类题(NMS/IOU/Softmax/GEMM)至少各手写一遍,理解逻辑 3. 第二梯队10题争取在面试前都过一遍


四、技术面试考点

深度学习专项(算法岗,权重最高)

卷积神经网络基础: - Conv层输出尺寸计算:output = (input + 2*padding - kernel) / stride + 1,这个公式要能秒答 - Batch Normalization:训练时用batch统计量,推理时用running_mean/running_var——这个区别被问到的频率极高 - Depthwise Separable Conv:MobileNet的核心,参数量和计算量的节省比例

Transformer与Vision Transformer: - Self-Attention的计算公式:Attention(Q,K,V) = softmax(QK^T/√d_k)V - 为什么要除以√d_k:防止点积过大导致softmax梯度消失 - ViT是怎么把图片喂进Transformer的:patch embedding,把图片切成16×16的块

目标检测核心问题: - Anchor-based(YOLO)vs Anchor-free(FCOS/CenterPoint)的本质区别和适用场景 - NMS的作用和局限(遮挡场景下的问题),Soft-NMS如何缓解 - 2D检测和3D检测的主要差异(在自动驾驶中,3D检测才有实际意义)

BEV感知(地平线重点): - 为什么BEV(Bird's Eye View,鸟瞰图)比前视图更适合自动驾驶: - 坐标系统一,多摄像头的视角可以融合到同一平面 - 距离感更准确,不受近大远小的透视畸变影响 - 更容易与激光雷达的点云数据融合 - BEVFusion如何融合摄像头和激光雷达:图像特征投影到BEV空间,再与点云特征拼接

模型量化(工具链岗/算法岗都考): - FP32→INT8的量化原理:用scale和zero_point参数将浮点数映射到整数范围 - PTQ(训练后量化)vs QAT(量化感知训练):PTQ更快,QAT精度损失更小 - 量化引起精度损失的根本原因:信息压缩(32bit→8bit),激活值分布不均匀时损失更大 - 关键问题:如何判断哪层对量化敏感(逐层精度分析)

C++专项(全方向必考)

地平线的C++考察比一般互联网公司严格很多,因为代码最终要跑在资源受限的嵌入式设备上,性能是真实约束。

内存管理: - RAII原则:资源获取即初始化,对象析构时自动释放资源——这是C++和C最大的区别之一 - unique_ptr vs shared_ptr:独占所有权 vs 共享所有权,前者零开销,后者有引用计数 - 对象池:推理框架中避免频繁new/delete的常见手段,面试可能要求手写简单实现

多线程: - std::thread + std::atomic + std::mutex 的基本使用 - 无锁队列(lock-free queue):用于实时推理流水线的生产者-消费者场景,考察对memory_order的理解 - 死锁的四个必要条件和预防方法

性能优化: - SIMD指令(AVX2):一条指令处理8个float,向量化加速矩阵运算 - 内存对齐:64字节对齐,提升Cache命中率 - 缓存友好代码:行主序遍历矩阵 vs 列主序遍历的性能差异

模板编程(高级加分项): - 类型推导(auto、decltype) - 函数模板和类模板的基本使用

芯片/系统软件专项(对应方向必考)

计算机组成原理: - Cache一致性(MESI协议):多核处理器的缓存同步机制,芯片设计必须理解 - DRAM带宽计算:内存带宽 = 数据总线宽度 × 工作频率,是BPU性能的关键约束

Linux内核/驱动(BSP方向): - 字符设备驱动的注册流程:alloc_chrdev_region → cdev_init → cdev_add - DMA传输:绕过CPU,让外设直接访问内存,减少CPU占用 - 中断处理:上半部(IRQ handler)和下半部(tasklet/work queue)的分工

RTOS与Autosar(系统软件方向): - 实时操作系统的核心:任务调度(优先级调度/时间片调度),响应时间可预测 - 优先级反转问题和解决方法(优先级继承协议) - 经典Autosar分层架构:应用层 → RTE → BSW → MCAL


五、面经规律总结

面试风格:AI技术深度 + C++工程能力双轨制

地平线的技术面试有一个非常明显的规律:每个技术问题都有两层。

第一层是"知道不知道"——你了解这个技术概念吗? 第二层是"能不能用"——你能用C++手写出来吗?

停在第一层是不够的。说得出BN层推理时用running_mean,但写不出代码,在地平线的面试里算没过。

五个高概率追问链

链条1:目标检测追问链 "介绍一下YOLO的检测原理" → 追问:"NMS是怎么实现的?手写一下" → 追问:"遮挡场景下NMS有什么问题?Soft-NMS怎么解决?"

链条2:模型量化追问链 "介绍一下INT8量化" → 追问:"scale和zero_point是怎么计算的?" → 追问:"QAT训练流程和普通训练有什么区别?"

链条3:C++多线程追问链 "如何用mutex保证线程安全" → 追问:"无锁队列怎么实现?" → 追问:"std::atomic的memory_order参数有什么用?"

链条4:BEV感知追问链 "BEV感知和前视图感知有什么区别" → 追问:"BEVFusion是如何融合摄像头和激光雷达的?" → 追问:"BEV特征图的分辨率和感知范围如何权衡?"

链条5:模型部署追问链 "PyTorch模型怎么部署到嵌入式设备上" → 追问:"ONNX导出有什么注意事项?" → 追问:"算子融合是怎么做的?能举个例子吗?"

加分项:体现行业热情

地平线的面试官非常喜欢有"自动驾驶热情"的候选人,不只是把这当成一份工作。以下几个表现会明显加分:

  • 了解地平线BPU:面试前查清楚征程5/征程6的基本规格(128 TOPS / INT8算力),能主动聊BPU的设计思路
  • 了解行业进展:BEVFusion、Transformer在自动驾驶中的应用,L2++和L3的技术差异
  • 有端到端部署经验:哪怕是课程项目,能讲清楚"我把这个模型从PyTorch训练到部署到树莓派/Jetson上"的全流程

笔试特点

  • 题型:C++/Python编程题2-3道 + AI基础选择题 + 数学题(矩阵运算/概率统计)
  • 时间:90-
  • 编程题难度:以Medium为主,C++实现,注意代码质量
  • AI基础题:卷积输出尺寸计算、量化基础、BN层行为,不是很难但需要真正掌握
  • 数学题:矩阵乘法的时间复杂度、贝叶斯公式的简单应用

需要避开的误区

误区1:只准备LeetCode AI算法题(NMS/IOU手写)不准备,是很多同学面地平线翻车的直接原因。

误区2:只会Python 地平线面试要求C++手写代码,Python伪代码不被接受。算法工程师也不例外。

误区3:只懂理论不会部署 能讲BEV感知原理,但不知道模型怎么量化、怎么导出ONNX,在地平线面试里是减分项。

误区4:忽视自动驾驶业务背景 地平线不是通用AI公司,面试官想要的是对自动驾驶真正感兴趣的人。提前了解行业背景,能让面试体验好很多。


校招节奏

总体原则

地平线的备考重心和普通互联网公司有明显差异:深度学习理论和C++工程能力的比重远高于纯算法题。的时间要集中火力,不能平均分配。

阶段 时间 重点任务 每日投入
深度学习基础 CNN/Transformer/目标检测三大类模型原理 3-
自动驾驶AI BEV感知/点云处理/多传感器融合基础 3-
模型优化 量化(PTQ/QAT)/剪枝/蒸馏/TensorRT部署 3-
C++专项 内存管理/多线程/SIMD/性能优化 3-
算法+AI题 NMS/IOU手写/LeetCode Top 20/矩阵运算
冲刺 了解地平线BPU/看面经/整理项目AI部署经验 2-

每阶段详细任务

:深度学习基础 - CNN:从LeNet到ResNet,重点是每个改进解决了什么问题 - Transformer:Self-Attention手推一遍,理解Multi-head的意义 - 目标检测:YOLO/FCOS/DETR,Anchor-based和Anchor-free的对比 - 验收标准:能在纸上画出Transformer的计算图,写出Self-Attention的伪代码

:自动驾驶AI - BEV感知:为什么用BEV?BEVDet的基本结构?BEVFusion如何融合多传感器? - 点云处理:PointPillar(体素化)和CenterPoint(3D检测)的基本原理 - 看1-2篇相关论文的Abstract和Introduction就够了,不需要精读全文 - 验收标准:能解释"为什么BEV比前视图更适合自动驾驶"的3个理由

:模型优化 - 量化:FP32→INT8的scale/zero_point计算,PTQ vs QAT的适用场景 - TensorRT:ONNX→TensorRT的基本流程,算子融合的概念 - 知识蒸馏/剪枝:了解基本原理,在自动驾驶中的适用场景 - 验收标准:能用公式推导INT8量化的scale计算,能解释QAT和PTQ的核心区别

:C++专项 - 内存管理:unique_ptr/shared_ptr的实现原理和使用场景,手写简单的shared_ptr - 多线程:mutex/condition_variable/atomic的用法,生产者-消费者模式 - 性能优化:了解SIMD概念,内存对齐的意义,cache-friendly代码的写法 - 验收标准:能手写线程安全的队列,能解释unique_ptr和shared_ptr的区别

:算法+AI题专项 - 第一梯队5题:反转链表/层序遍历/快排/LRU/合并K链表,每题C++手写3遍 - AI专项4题:NMS/IOU/Softmax数值稳定版/GEMM,各手写1-2遍 - 第二梯队10题:各刷一遍,重点理解思路 - 验收标准:NMS完整C++代码能在内写完且正确

:冲刺 - 了解地平线:征程系列芯片的规格(128 TOPS/256 TOPS),BPU的设计思想 - 整理项目经历:把自己的AI项目整理成"训练→优化→部署"的完整链路来描述 - 看近期面经:重点关注算法岗和工具链岗的最新考察点 - 模拟面试:对着镜子或找朋友,把5个追问链各讲一遍

最低备考标准(入场门槛)

  • [ ] NMS手写:能在纸上写出正确的C++代码,逻辑完整
  • [ ] 模型量化:FP32→INT8的scale/zero_point计算原理能解释清楚
  • [ ] C++ RAII:能解释RAII,unique_ptr和shared_ptr的区别,以及使用场景
  • [ ] BEV感知:能说出BEV比前视图更适合自动驾驶的2-3个理由
  • [ ] 地平线背景:了解征程芯片的基本情况(系列/算力规格),能体现行业热情

达不到以上5条标准,面试地平线的胜算很低。这不是吓人,是实话。

备考资源推荐

  • 深度学习理论:李沐的《动手学深度学习》(d2l.ai),免费,中文,质量极高
  • 目标检测:YOLO/PointPillar论文原文,重点读Introduction和Method
  • C++:《Effective Modern C++》(Scott Meyers),第4章智能指针必读
  • 模型量化:NVIDIA的TensorRT文档,量化概念部分
  • BEV感知:BEVFusion论文(MIT版本),Abstract+图1+Method前半段