非常好,UDS 正是区分“会用 CAN”和“懂 ECU 的人”的分水岭
下面这份是我按真实面试 + ECU 项目设计评审 + Bootloader 刷写整理的
👉 “UDS 面试 / 项目设计必须考虑的几十个问题”

这些问题不是协议条文复述,而是面试官用来判断你有没有真正做过 UDS / Boot 的问题


一、UDS 基础与架构理解(必问)

  1. UDS 为什么要区分 物理寻址功能寻址
  2. UDS 报文中 SID + SubFunction 的设计意义是什么?
  3. UDS 为什么需要 Session(0x10)?不切 Session 会怎样?
  4. 为什么刷写必须进入 Programming Session
  5. Negative Response 的设计目的?
  6. NRC 0x78(Response Pending)什么时候必须发?
  7. UDS 的 P2 / P2* 时间是干什么的?
  8. Tester 和 ECU 谁来控制诊断节奏?
  9. UDS 和 OBD 的本质区别?

二、UDS over CAN / TP(高频重点)

  1. 为什么 UDS 需要 ISO 15765-2(TP)
  2. Single Frame / First Frame / Consecutive Frame 的使用条件?
  3. Flow Control 帧中 BS / STmin 的工程意义?
  4. STmin 设置过小会发生什么?
  5. ECU 是否可以动态调整 BS?
  6. UDS over CAN FD 相比 CAN 有什么变化?
  7. 传输过程中丢一个 CF,会发生什么?
  8. TP 层超时通常有哪些?(N_As / N_Cr …)

三、Session & 状态管理(高级工程能力)

  1. Session 切换后,哪些 ECU 行为必须改变?
  2. Session 超时后 ECU 应该回到哪个 Session?
  3. Bootloader 和 Application 的 Session 是否共用?
  4. ECU Reset(0x11)在不同 Session 下行为是否一致?
  5. 诊断过程中 ECU Reset 会发生什么?
  6. Session 切换失败如何给出 NRC?

四、安全访问 SecurityAccess(面试极爱问)

  1. Seed & Key 的设计目的是什么?
  2. Security Access 为什么要分 Level?
  3. Seed 是固定的可以吗?为什么?
  4. 连续输错 Key 应该怎么处理?
  5. 如何防止暴力破解 Security Access?
  6. Bootloader 和 Application 的安全等级是否一样?
  7. Security Access 成功后,Session 切换是否会失效?
  8. 你项目中 Key 算法是怎么实现和保护的?

五、刷写 / Bootloader 相关(最核心)

  1. 刷写完整流程(0x10 → 0x27 → 0x34 → 0x36 → 0x37)你能完整讲一遍吗?
  2. RequestDownload 中长度和地址的合法性如何校验?
  3. TransferData 中 BlockSequenceCounter 为什么重要?
  4. 如果某个 Block 丢失或重复,ECU 怎么处理?
  5. 刷写过程中掉电,ECU 如何避免变砖?
  6. 校验是在 Boot 里做还是 App 里做?为什么?
  7. 为什么有时刷写成功但 ECU 不启动?
  8. 多镜像 / A-B 分区对 UDS 流程有什么影响?
  9. 刷写失败后 ECU 应该留在什么状态?

六、RoutineControl(工程细节必问)

  1. RoutineControl 一般用于哪些操作?
  2. 擦 Flash 放在哪个 Routine?
  3. 校验 CRC 放在哪个 Routine?
  4. Routine 执行时间很长怎么办?
  5. Routine 是否允许被中断?
  6. Routine 执行失败如何反馈给 Tester?

七、DTC & 诊断数据(经常被忽略)

  1. DTC 的状态位有哪些?
  2. DTC 存储在什么条件下更新?
  3. ClearDTC 是否允许在所有 Session?
  4. 诊断报文和故障存储如何避免互相影响?
  5. Bootloader 是否需要支持 DTC?

八、异常 & 边界场景(高级工程师必答)

  1. UDS 报文在 CAN 上优先级怎么规划?
  2. 如何避免诊断报文影响实时控制?
  3. Tester 在刷写过程中断开会发生什么?
  4. ECU 在升级中被多 Tester 访问怎么办?
  5. 如何防止非法 Tester 刷写 ECU?
  6. UDS 是否支持并发服务?为什么?
  7. UDS 服务执行过程中 ECU Reset 怎么处理?
  8. UDS 协议本身有哪些你觉得“不合理”的地方?

九、标准 & 合规(加分项)

  1. ISO 14229 哪些内容你在项目中真正用到了?
  2. UDS 与 ISO 26262 的关系?
  3. UDS 与 ISO 21434 的关系?
  4. OEM 通常会对 UDS 有哪些定制要求?
  5. UDS 服务是否允许 OEM 私有扩展?如何设计?

🎯 如何用这 60+ 个问题准备面试(非常关键)

每个问题你至少准备三点:

  1. 标准角度:ISO 14229 怎么说
  2. 工程角度:你项目中怎么做
  3. 权衡取舍:为什么这么设计,而不是别的方案
如果你能把 刷写流程 + 安全访问 + Session 管理讲清楚,
面试官通常会直接认定你是 “真正做过 UDS/Boot 的人”

最后修改:2026 年 01 月 19 日
如果觉得我的文章对你有用,请随意赞赏