非常好,UDS 正是区分“会用 CAN”和“懂 ECU 的人”的分水岭。
下面这份是我按真实面试 + ECU 项目设计评审 + Bootloader 刷写整理的
👉 “UDS 面试 / 项目设计必须考虑的几十个问题”。
这些问题不是协议条文复述,而是面试官用来判断你有没有真正做过 UDS / Boot 的问题。
一、UDS 基础与架构理解(必问)
- UDS 为什么要区分 物理寻址 和 功能寻址?
- UDS 报文中 SID + SubFunction 的设计意义是什么?
- UDS 为什么需要 Session(0x10)?不切 Session 会怎样?
- 为什么刷写必须进入 Programming Session?
- Negative Response 的设计目的?
- NRC 0x78(Response Pending)什么时候必须发?
- UDS 的 P2 / P2* 时间是干什么的?
- Tester 和 ECU 谁来控制诊断节奏?
- UDS 和 OBD 的本质区别?
二、UDS over CAN / TP(高频重点)
- 为什么 UDS 需要 ISO 15765-2(TP)?
- Single Frame / First Frame / Consecutive Frame 的使用条件?
- Flow Control 帧中 BS / STmin 的工程意义?
- STmin 设置过小会发生什么?
- ECU 是否可以动态调整 BS?
- UDS over CAN FD 相比 CAN 有什么变化?
- 传输过程中丢一个 CF,会发生什么?
- TP 层超时通常有哪些?(N_As / N_Cr …)
三、Session & 状态管理(高级工程能力)
- Session 切换后,哪些 ECU 行为必须改变?
- Session 超时后 ECU 应该回到哪个 Session?
- Bootloader 和 Application 的 Session 是否共用?
- ECU Reset(0x11)在不同 Session 下行为是否一致?
- 诊断过程中 ECU Reset 会发生什么?
- Session 切换失败如何给出 NRC?
四、安全访问 SecurityAccess(面试极爱问)
- Seed & Key 的设计目的是什么?
- Security Access 为什么要分 Level?
- Seed 是固定的可以吗?为什么?
- 连续输错 Key 应该怎么处理?
- 如何防止暴力破解 Security Access?
- Bootloader 和 Application 的安全等级是否一样?
- Security Access 成功后,Session 切换是否会失效?
- 你项目中 Key 算法是怎么实现和保护的?
五、刷写 / Bootloader 相关(最核心)
- 刷写完整流程(0x10 → 0x27 → 0x34 → 0x36 → 0x37)你能完整讲一遍吗?
- RequestDownload 中长度和地址的合法性如何校验?
- TransferData 中 BlockSequenceCounter 为什么重要?
- 如果某个 Block 丢失或重复,ECU 怎么处理?
- 刷写过程中掉电,ECU 如何避免变砖?
- 校验是在 Boot 里做还是 App 里做?为什么?
- 为什么有时刷写成功但 ECU 不启动?
- 多镜像 / A-B 分区对 UDS 流程有什么影响?
- 刷写失败后 ECU 应该留在什么状态?
六、RoutineControl(工程细节必问)
- RoutineControl 一般用于哪些操作?
- 擦 Flash 放在哪个 Routine?
- 校验 CRC 放在哪个 Routine?
- Routine 执行时间很长怎么办?
- Routine 是否允许被中断?
- Routine 执行失败如何反馈给 Tester?
七、DTC & 诊断数据(经常被忽略)
- DTC 的状态位有哪些?
- DTC 存储在什么条件下更新?
- ClearDTC 是否允许在所有 Session?
- 诊断报文和故障存储如何避免互相影响?
- Bootloader 是否需要支持 DTC?
八、异常 & 边界场景(高级工程师必答)
- UDS 报文在 CAN 上优先级怎么规划?
- 如何避免诊断报文影响实时控制?
- Tester 在刷写过程中断开会发生什么?
- ECU 在升级中被多 Tester 访问怎么办?
- 如何防止非法 Tester 刷写 ECU?
- UDS 是否支持并发服务?为什么?
- UDS 服务执行过程中 ECU Reset 怎么处理?
- UDS 协议本身有哪些你觉得“不合理”的地方?
九、标准 & 合规(加分项)
- ISO 14229 哪些内容你在项目中真正用到了?
- UDS 与 ISO 26262 的关系?
- UDS 与 ISO 21434 的关系?
- OEM 通常会对 UDS 有哪些定制要求?
- UDS 服务是否允许 OEM 私有扩展?如何设计?
🎯 如何用这 60+ 个问题准备面试(非常关键)
每个问题你至少准备三点:
- 标准角度:ISO 14229 怎么说
- 工程角度:你项目中怎么做
- 权衡取舍:为什么这么设计,而不是别的方案
如果你能把 刷写流程 + 安全访问 + Session 管理讲清楚,
面试官通常会直接认定你是 “真正做过 UDS/Boot 的人”。