知识点 › 面试题
智驾数据闭环 · 47 道面试题
每题给出参考答案、追问方向与常见踩坑。按领域分组。
范式与价值
什么是数据闭环?为什么重要?
一句话:把真实世界产生的数据持续转化成车端模型能力的工程体系——采集→回传→治理→挖掘标注→训练→评测→部署→再采集。重要在于它决定「发现长尾的速度」,而长尾决定安全上限。
追问:那闭环的「转速」用什么衡量?(闭环周期、数据利用率、自动标注率、复发率)
踩坑:把它说成标注流水线。
闭环包含哪几个环节?
主干七环:采集、回传、存储治理、场景挖掘与标注、训练、仿真评测、部署回流;两个旁路:影子系统(自动发现)与信号系统(状态黑匣子);一层底座:数据平台(元数据/检索/权限)。
追问:哪个环节最容易断?(部署:发现问题排不上版本)
踩坑:只背步骤,不说「断在哪」。
为什么长尾问题不能靠堆里程解决?
里程增长主要落在简单场景,长尾是组合爆炸且不可穷举,边际收益极低。正确做法是「提高单位里程的长尾召回」+「用仿真/合成补覆盖」,也就是闭环效率而非数据总量。
追问:那怎么衡量「有效数据」?(数据利用率、场景覆盖、每万帧新增场景数)
踩坑:说「数据越多越好」。
数据飞轮怎么量化?
四个数:闭环周期(天)、数据利用率、自动标注率、Bad Case 复发率;再补一个「单位数据的指标增量」。飞轮转速看周期,健康度看复发率。
追问:周期缩短一半,瓶颈会转移到哪?(标注产能/评测算力/OTA 排期)
踩坑:只讲概念不讲数。
采集与回传
采集触发策略怎么设计?
双轨:随机基线(无偏样本,保证分布可测)+ 长尾触发(事件/区域/影子差异/语义不确定)。阈值用回传预算反推,配额按场景稀缺度分配,而不是按车平均。
追问:只有长尾触发会怎样?(分布漂移,模型在常见场景退化)
踩坑:只讲事件触发。
回传成本怎么降?
四招:车端预筛(算力换带宽)、只传关键片段(pre-trigger 缓冲 + 切片)、场站 WiFi/夜间闲时卸载、特征或缩略图先传再按需拉全量。量化口径是「每 GB 带来的指标收益」。
追问:预筛会不会引入选择偏差?(会,必须留随机基线校准)
踩坑:只会说「压缩」。
怎么保证采回的数据分布不偏?
固定比例的随机采样作为无偏锚点;按 ODD/天气/道路分层配额;定期用随机集对比「挖掘集」的分布差异;把「分布漂移」做成看板指标。
追问:发现漂移了怎么纠?(调整配额、补采、训练侧重加权)
踩坑:认为「挖难例」没有副作用。
多传感器时间同步怎么做?
硬件触发(PPS/曝光同步)+ PTP/gPTP 授时 + 统一时间戳口径(曝光时刻而非到达时刻);验收看跨传感器偏差(<1ms 级)与丢帧率;行曝光场景要做运动补偿。
追问:同步错了会在数据里表现成什么?(融合错位、BEV 拖影)
踩坑:只说「用 PTP」。
标定漂移怎么发现?
在线自检:用车道线/路沿/点云地面拟合外参残差,超阈值标脏;离线抽检:同一路段多车对比;数据侧给每段打「标定健康度」标签,训练时过滤。
追问:漂移会伪装成什么?(模型 bug:BEV 偏移、远处目标漏检)
踩坑:等到实车出问题才查。
数据合规有哪些红线?
三条线:测绘法(地理信息采集资质与加密)、汽车数据安全管理规定(敏感区域、重要数据)、个保法(人脸车牌属个人信息)+ 出境评估。落地手段:车端脱敏、地理偏转、分区存储、访问审计。
追问:出海怎么办?(本地处理、只回传模型/特征、走评估)
踩坑:以为脱敏就万事大吉。
矿山/封闭场景的闭环有什么不同?
路线固定、场景重复度高、可布场端基站与 WiFi、可「导演式」复现、合规压力小;但粉尘/震动/遮挡/无 GPS 是特有难点。闭环更短,数据冗余更高,重点是「增量场景判定」与「场端真值」。
追问:为什么重复度高反而更难?(去重与增量判定,容易过拟合固定路线)
踩坑:照搬开放道路方案。
数据基础设施
数据泄漏怎么防?
三种泄漏:时间(用未来数据)、实体(同场景/同车跨集)、标签(拿测试集挖 case 再训练)。防御:按片段/时间/地理切分;测试集只读+访问审计;holdout 定期轮换;双盲评测。
追问:已经泄漏了怎么补救?(重算历史指标、重建测试集)
踩坑:随机按帧划分。
数据集版本怎么管理?
不可变快照 + manifest 引用(不复制 PB 级数据)+ 变更日志;版本绑定「数据+代码+配置+权重」四元组;禁止原地修改。
追问:为什么不能直接复制数据集?(成本 + 血缘断裂)
踩坑:用文件名当版本。
向量检索 + 标量过滤,应该先过滤还是先搜?
取决于过滤后的基数:选择率低(过滤后很少)就先过滤再 ANN,否则先 ANN 再过滤会漏召回;选择率高就先 ANN + 后过滤,避免破坏索引效率。Milvus 支持标量过滤下推,实际按「过滤基数 / 总基数」估算切换。
追问:过滤后只有 100 条,还用 ANN 吗?(直接暴力精确检索更快)
踩坑:答「永远先过滤」或「永远先 ANN」。
TB 级 ETL 变慢,你怎么定位?
顺序:①看 Spark UI 的 stage 耗时,找最慢 stage;②看 task 耗时分布判断倾斜(个别 task 远超中位数);③看 shuffle 读写量与 spill;④看小文件数与分区数;⑤最后才怀疑算子写法。解法:加盐、repartition、合并小文件、列存 + 谓词下推、Kryo/Zstd。
追问:倾斜加盐后又慢了呢?(盐粒度过细导致任务数爆炸,要调粒度)
踩坑:一上来就调 executor 内存。
场景挖掘与标注
场景库怎么建?
四要素定义场景(静态环境+动态要素+任务+环境条件),按片段/事件/实例三级粒度管理,每个场景有标签、难度、ODD 归属、频次、关联标注与测试用例;一鱼三吃:训练样本、回归用例、仿真种子。
追问:场景过期了怎么办?(定期复核、标记失效、重采)
踩坑:只做标签列表,不做实例化。
难例挖掘有哪些方法?
五路:失败事件(接管/AEB/碰撞)、模型指标(低置信/高损失/不确定度)、一致性(时序抖动、传感器冲突、新旧模型分歧)、规则(近距离 cut-in、异形目标)、人工/UGC 反馈。挖完要去重、聚类、验证效果。
追问:挖出来就一定有用吗?(要 A/B 验证是否真的提升)
踩坑:只讲主动学习一种。
自动标注怎么保证质量?
三件事:教师模型用「离线特权」(更大模型+未来帧+多传感器融合);输出做置信度过滤与一致性校验;保留人工抽检与黄金集做校准。自动标注率要按「采纳率」算,不是「产出率」。
追问:教师模型的确认偏误怎么破?(人工锚点、定期换教师、主动补盲区)
踩坑:把「跑通模型」当成「自动标注上线」。
标注规范怎么写?
可执行判定规则 + 正反例截图 + 争议样本定论;规范版本化并与数据集版本绑定;定期用争议样本回炉修订。规范不清是质量波动的第一原因。
追问:规范改了,历史数据怎么办?(批量回填重打标)
踩坑:写成一堆抽象原则。
标注质量怎么评估?
四道关:培训考核、按比例抽检(算准确率、漏标率)、黄金集(固定标准答案测漂移)、争议仲裁(专家定论并回写规范)。漏标率比错标率更难测,也更伤模型。
追问:黄金集怎么防「被记住」?(定期换、控制样本量、不公开)
踩坑:只说「抽检 10%」。
数据配比怎么定?
基底用真实分布、长尾按稀缺度过采样(权重∝稀缺度^α)、新开城/新车型加权、旧场景保持回放防遗忘。配比要版本化并做消融,否则涨点无法归因。
追问:α 怎么调?(看长尾指标与整体指标的双目标,帕累托选点)
踩坑:拍脑袋定比例。
主动学习怎么避免「只挖难例导致简单场景退化」?
三个手段:①采样时保留随机基线,按比例混入无偏样本;②采样策略用「不确定性 × 多样性」,避免扎堆噪声;③每次迭代跑「简单场景回归集」,退化就回滚配比。核心是把「挖掘」当成有偏采样来管理,而不是无限捞难例。
追问:怎么量化偏移?(挖掘集与随机集的分布距离、类别覆盖率对比)
踩坑:只讲不确定性采样,不提偏差控制。
模型训练
训练时 GPU 喂不饱怎么办?
先查数据管道:解码、增广、shuffle 是否在 CPU 打满;再上「预解码 shard(WebDataset/LMDB)+ 多进程预取 + 本地 NVMe 缓存 + GPU 增广」。GPU 利用率低于 70% 先别换模型。
追问:shard 大小怎么定?(匹配并行度,兼顾 IO 碎片与负载均衡)
踩坑:第一反应加卡。
端到端和传统方案最大不同是什么?
模块化是「感知→预测→规划」显式接口、误差可分层归因;端到端直接从传感器到轨迹,信息不丢但不可解释、数据需求大、开环评测会骗人,必须靠闭环仿真与影子对比兜底。
追问:那怎么定位一次端到端的失败?(切片回放 + 中间监督 + 反事实仿真)
踩坑:只说「端到端更先进」。
蒸馏在闭环里起什么作用?
三个用途:云端大模型教车端小模型(部署)、教师模型生成伪标签(自动标注)、把多模型集成压成单模型(降本)。教师质量决定上限,教师有偏学生会继承。
追问:伪标签噪声怎么处理?(置信度过滤、一致性校验、人工锚点)
踩坑:把蒸馏只当压缩工具。
仿真与评测
开环评测有什么局限?
因果混淆:模型输出错了,历史仍按人类轨迹走,误差不累积、交互不发生。对规划尤其失真——「不敢动」的模型开环可能很好。所以开环只用于快速否定,闭环才用于肯定。
追问:怎么缓解?(自车历史条件化、闭环仿真、影子对比)
踩坑:拿开环指标证明安全。
怎么证明仿真可信?
同一批场景做「仿真 vs 实车」双跑,比对通过率、失败集合重叠度、排序一致性;差距大的模块(传感器仿真)要标定;实车发现的新失败模式要回灌场景库。没有对齐证据,仿真只能做筛选。
追问:对齐后仍有 gap 怎么办?(按 gap 加权、只信相对排序)
踩坑:认为「渲染真=仿真可信」。
闭环仿真怎么搭?
四件套:场景描述(可参数化)+ 交通流(会对自车反应)+ 车辆动力学 + 评测器。难点是「背景车要交互」,回放式仿真做不到;还要控制吞吐(百万级场景)与结果判读(自动分类失败原因)。
追问:回放和交互式各用在哪?(回归用回放,博弈用交互)
踩坑:把回放当闭环。
回归门禁怎么设?
分层:冒烟(分钟级,核心场景)→ 核心(小时级,分场景簇)→ 全量(天级)。阈值区分噪声与真实退化,失败要定位到「哪个簇退化」,并允许「已知问题白名单」但需登记。
追问:门禁总误报怎么办?(提高样本量、分桶阈值、趋势判定)
踩坑:一条总分卡死。
线上 A/B 怎么做?
车队分组、同版本基线、指标分层(接管/舒适/效率)、统计显著性、分层或配对校正(两组跑的路不同)。灰度限制爆炸半径,异常自动熔断回滚。
追问:样本量不够怎么办?(延长周期、配对同路段、用仿真补充)
踩坑:拿一天数据下结论。
MPI 这个指标有什么问题?
三个问题:接管定义不统一(安全员主观)、非系统原因混入(需剥离)、样本量小导致置信区间宽。报告必须带判定标准与置信区间;封闭场景更适合「每万吨公里事故率」这类业务指标。
追问:怎么降低主观性?(责任接管判定流程 + 复核)
踩坑:把 MPI 当安全证明。
部署与回流
影子模式是怎么实现的?
车端并行跑候选模型但不控车,与在用策略/人类驾驶做输出比对(轨迹距离、检测一致性、置信度),差异超阈值触发录制回传;云端聚合、归因、聚类、排序,产出待修复清单。关键约束是算力隔离与回传量控制。
追问:阈值怎么定?合理差异怎么排除?
踩坑:以为影子模式就是「录视频」。
影子模式和事件触发有什么区别?
事件触发只能发现「已暴露的问题」(接管、急刹、AEB);影子模式能发现「模型错了但系统没出事」的隐性 bad case——因为它在没有事件发生的平常路段也能比对出差异。两者互补:事件触发保底,影子扩面。
追问:影子会不会误报太多?怎么控?
踩坑:把二者混为一谈。
训练和部署不一致怎么排查?
拿同一帧原始数据,分别喂训练管线与车端管线,逐层比对输出:预处理(resize/归一化/颜色空间)、标定、坐标系、后处理(NMS/阈值)、量化。最常见是 BGR/RGB、插值、均值方差版本不一致。
追问:怎么防止复发?(自动化一致性测试进 CI)
踩坑:直接怀疑模型。
线上掉点怎么排查?
顺序:①确认范围(车型/区域/版本/时间);②对比新旧版本同场景;③查数据分布漂移;④查前后处理与标定;⑤查量化与算子;⑥最后才怀疑场景本身变了(施工/改路)。
追问:为什么先查环境?(很多「掉点」是路况变了)
踩坑:一上来就重训。
OTA 怎么保证安全?
A/B 分区保留上一版、签名校验、升级条件(驻车/电量/网络)、断点续传与断电保护、灰度分批、失败自动回退、成功率与回滚率看板。模型包与整车包解耦,可独立高频更新。
追问:升级中断电怎么办?(分区原子切换 + 看门狗)
踩坑:只讲差分升级。
组织与工具链
闭环 ROI 怎么算?
投入:采集/存储/标注/算力/人力;产出:路测里程节省、标注人力减少、版本周期缩短带来的收入。算法:省下的车日×单价 + 人天×单价 + 提前上线收益;再看边际收益(第 10 万帧 vs 第 100 万帧)。
追问:老板只批一半预算,你砍哪块?(先砍重复采集与低利用率存储)
踩坑:只讲技术价值。
闭环团队怎么分工?
平台(采集/存储/检索)、标注平台与运营、训练平台、仿真评测、车端部署与工具链、算法消费方;关键是要有「闭环 owner」对最终上车效果负责,否则 KPI 割裂。
追问:小团队怎么兼?(平台+算法双人组,数据质量专人)
踩坑:只按技术栈分工。
讲讲你做过的最有闭环感的项目
STAR 压缩版:一句话背景与规模 → 你负责环节的难点 → 一个关键取舍(为什么这么设计)→ 量化结果(周期/成本/指标)→ 一个失败与改进。70% 时间给「决策」,不是「我参与了」。
追问:如果重做一次,你会改什么?
踩坑:平铺直叙讲流程。
系统架构
千亿级数据检索怎么设计?
元数据入 StarRocks(分区分桶 + 物化视图 + bitmap 索引)做标签组合与聚合;向量库做「像不像」;文件走 OSS/HBase。查询链路是「结构化先过滤 → 向量再排序 → 缩略图人工确认」。
追问:为什么不用 ES 全扛?(聚合与多表关联弱,写入放大)
踩坑:只讲一个组件。
StarRocks 和 ES 怎么选?
ES 强在全文检索与日志,弱在大规模聚合与 join;StarRocks 是 MPP 列存,强在「多维度组合筛选 + 聚合统计」,适合标签圈选。实践中两者并存:ES 查日志与文本,StarRocks 查结构化标签。
追问:资源怎么估?(并发 × 单查询扫描量 → 核数;100 QPS 中等查询约数百核)
踩坑:唯组件论。
解析任务积压怎么治理?
先分层优先级(事故>影子>定向>常规),再限流与公平调度防大包饿死小包,然后扩消费并发/分片,最后补监控(p99 lag、积压量、死信)。根因常是「下游写入慢」而不是解析本身。
追问:怎么保证事故片段不被普通数据插队?
踩坑:只会加机器。
样本中心怎么设计?
分两层:基础文件(TV/PCD/GPS/autolabel/manual_label)+ 样本(基础文件的组合,粒度 2D/3D/video/clip)。样本种类限定「有限组合」防止存储与索引爆炸;样本工厂按批次生产、配比、冻结版本、导出训练。
追问:为什么要「有限组合」?(无限组合导致存储、索引、血缘不可控)
踩坑:把样本中心做成「文件服务器」。
算子
数据闭环里说的「算子」到底指什么?
两种:数据侧的加工单元(解析/解码/对齐/脱敏/质检/打标/切片/打包,要求幂等可重放),模型侧的计算图节点(Conv/NMS/GridSample/Scatter,要求车端覆盖与精度对齐)。两者在自动标注处交汇。
追问:数据算子最关键的性质是什么?(幂等 + 可重放,否则不可复现)
踩坑:只答一种,或者只说 CUDA kernel。
车端算子不支持怎么办?
三条路:自定义算子(TensorRT plugin/厂商库)、等价算子组合重写、fallback 到 CPU。按「使用频次 × 耗时占比」选,fallback 必须告警,否则会静默掉帧。
追问:怎么提前发现?(上线前做算子扫描:解析计算图匹配支持表)
踩坑:等到部署阶段才查支持矩阵。
怎么保证训练和车端算子精度一致?
同一份输入分别跑两个引擎,逐层 dump 输出,算相对误差与余弦相似度,定位第一个显著偏离的算子;量化误差要在关键层设预算;把对齐门禁写进 CI,换引擎/换芯片都重跑。
追问:常见元凶有哪些?(浮点累加顺序、算子融合、插值实现、padding 方式)
踩坑:只看最终指标,不做逐层比对。
算子是脚本吗?怎么部署?
逻辑上不等于脚本:算子是「接口契约 + 版本 + 实现」,脚本只是实现之一,也可以是容器镜像、常驻服务、Spark/Flink 作业。部署三种形态:一 Pod 一算子(隔离好、启动开销大)、一 Pod 多算子(省数据搬运、依赖耦合)、常驻服务(无冷启动、模型常驻)。真实系统按资源画像混合。
追问:怎么判断合并还是拆开?(计算时长 vs 启动+拉数据开销、GPU 独占、依赖冲突)
踩坑:一容器跑全流程,或者每个小算子都起一个 Pod。
按知识点看 →