很好,这个需求非常“面试导向 + 项目真实导向”,而且正好是你负责的 CAN / LIN 底层通信最容易被问深度、问细节、问工程能力的地方。

下面这份清单不是“八股文”,而是我按真实面试 + 实际 ECU 项目设计评审整理的
👉 “CAN / LIN 必被问 & 必须想清楚的几十个问题”
很多问题你如果能当场讲清楚 + 结合项目例子,基本就是 高级工程师 / Tech Lead 水平


一、CAN 基础 & 物理/协议层(面试高频)

  1. CAN 总线为什么是多主总线?仲裁是怎么保证无冲突的?
  2. CAN 仲裁过程中,显性位/隐性位在物理层是怎么体现的?
  3. 为什么 CAN 用 ID 仲裁而不是地址仲裁
  4. 标准帧 vs 扩展帧的区别?项目中怎么选?
  5. CAN 的位填充规则是什么?为什么需要?
  6. CAN 一帧里哪些字段参与 CRC 计算?
  7. CAN 的最坏传输时间怎么估算?
  8. 什么情况下会出现 ACK Error
  9. CAN 网络中一个节点完全不发 ACK 会发生什么?
  10. CAN FD 相比 CAN 解决了什么问题?引入了哪些新坑?

二、CAN 错误处理 & 稳定性(非常加分)

  1. CAN Error Active / Passive / Bus-off 的触发条件?
  2. Bus-off 之后 ECU 应该怎么恢复?谁来恢复?
  3. 如果一个 ECU 不断 Bus-off,会对整网造成什么影响?
  4. 项目中你如何定位 CAN 总线错误
  5. CAN 错误计数器(TEC/REC)什么时候加?什么时候减?
  6. 如何避免错误风暴(Error Storm)
  7. 你是否遇到过因波特率偏差导致的通信问题?如何解决?

三、CAN 网络设计(项目设计必问)

  1. CAN 报文 ID 是如何规划的?
  • 功能 ID / 优先级 / 节点号如何分配?
  1. 报文周期是如何设计的?
  • 1ms / 10ms / 100ms 的依据是什么?
  1. 如何设计 事件触发报文 vs 周期报文
  2. 总线负载怎么计算?项目允许的上限是多少?
  3. 高优先级报文很多时,低优先级会不会“饿死”?
  4. CAN FD 项目中,哪些报文适合用 FD,哪些不适合?
  5. 网络中节点越来越多,你如何保证实时性?

四、CAN + AUTOSAR / OS 结合(高级问题)

  1. CAN Rx/Tx 是在中断里做,还是任务里做?为什么?
  2. 如何避免 CAN 中断占用过多 CPU?
  3. CAN 驱动、If、PduR、Com 各层职责?
  4. CAN 报文丢失时,上层如何感知?
  5. Rx Timeout 是在哪一层实现的?
  6. CAN 报文和 OS 调度之间如何保证时序确定性?

五、LIN 基础 & 协议理解(非常常问)

  1. LIN 为什么是 主从架构
  2. LIN 帧的组成?Break / Sync / PID 的作用?
  3. LIN 校验和 Classic vs Enhanced 区别?
  4. LIN 是如何实现时间同步的?
  5. LIN 的最大速率为什么这么低
  6. LIN 从节点是如何被唤醒的?
  7. LIN Sleep / Wakeup 的完整流程?

六、LIN 调度 & 工程问题(项目必问)

  1. LIN Schedule Table 是如何设计的?
  2. Event-triggered frame 的使用场景?
  3. LIN 从节点响应慢会发生什么?
  4. LIN 总线上挂多个从节点,如何避免冲突?
  5. 主节点掉电,LIN 总线会发生什么?
  6. LIN 和 CAN 在 Body 域中是如何配合的?

七、诊断 & 网络结合(CAN/LIN + UDS)

  1. 诊断报文为什么通常优先级高?
  2. UDS over CAN 使用的是物理寻址还是功能寻址?
  3. LIN 上是否支持 UDS?有什么限制?
  4. 多 ECU 同时响应功能寻址会发生什么?
  5. 如何避免诊断报文影响实时控制报文?
  6. Bootloader 模式下 CAN 通信和 App 有什么区别?

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

  1. 如果 CAN 网络上出现 报文洪水,你如何设计保护?
  2. 如果某 ECU 发送错误数据但协议完全正确,怎么检测?
  3. ECU 在 Reset 过程中,CAN 引脚应该是什么状态?
  4. CAN 收到非法 DLC 怎么处理?
  5. LIN 从节点程序跑飞,主节点如何发现?
  6. 通信异常是否会触发功能安全机制?如何设计?

九、项目设计反问(你可以反问面试官的)

  1. 项目中 CAN 网络负载目标是多少?
  2. 是否使用 CAN FD?为什么?
  3. 是否有 Bus Guardian 或网络监控?
  4. LIN 主节点是否支持动态 Schedule?
  5. 诊断与控制报文是否做了带宽隔离?

🔑 使用建议(非常重要)

  • 不要背答案
  • 每个问题至少准备:

    • 一个原理解释
    • 一个你项目里的真实例子
    • 一个你踩过的坑
面试官真正想听的是:
“你遇到过什么问题?你怎么设计的?为什么这样设计?”

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