很好,这个需求非常“面试导向 + 项目真实导向”,而且正好是你负责的 CAN / LIN 底层通信最容易被问深度、问细节、问工程能力的地方。
下面这份清单不是“八股文”,而是我按真实面试 + 实际 ECU 项目设计评审整理的
👉 “CAN / LIN 必被问 & 必须想清楚的几十个问题”
很多问题你如果能当场讲清楚 + 结合项目例子,基本就是 高级工程师 / Tech Lead 水平。
一、CAN 基础 & 物理/协议层(面试高频)
- CAN 总线为什么是多主总线?仲裁是怎么保证无冲突的?
- CAN 仲裁过程中,显性位/隐性位在物理层是怎么体现的?
- 为什么 CAN 用 ID 仲裁而不是地址仲裁?
- 标准帧 vs 扩展帧的区别?项目中怎么选?
- CAN 的位填充规则是什么?为什么需要?
- CAN 一帧里哪些字段参与 CRC 计算?
- CAN 的最坏传输时间怎么估算?
- 什么情况下会出现 ACK Error?
- CAN 网络中一个节点完全不发 ACK 会发生什么?
- CAN FD 相比 CAN 解决了什么问题?引入了哪些新坑?
二、CAN 错误处理 & 稳定性(非常加分)
- CAN Error Active / Passive / Bus-off 的触发条件?
- Bus-off 之后 ECU 应该怎么恢复?谁来恢复?
- 如果一个 ECU 不断 Bus-off,会对整网造成什么影响?
- 项目中你如何定位 CAN 总线错误?
- CAN 错误计数器(TEC/REC)什么时候加?什么时候减?
- 如何避免错误风暴(Error Storm)?
- 你是否遇到过因波特率偏差导致的通信问题?如何解决?
三、CAN 网络设计(项目设计必问)
- CAN 报文 ID 是如何规划的?
- 功能 ID / 优先级 / 节点号如何分配?
- 报文周期是如何设计的?
- 1ms / 10ms / 100ms 的依据是什么?
- 如何设计 事件触发报文 vs 周期报文?
- 总线负载怎么计算?项目允许的上限是多少?
- 高优先级报文很多时,低优先级会不会“饿死”?
- CAN FD 项目中,哪些报文适合用 FD,哪些不适合?
- 网络中节点越来越多,你如何保证实时性?
四、CAN + AUTOSAR / OS 结合(高级问题)
- CAN Rx/Tx 是在中断里做,还是任务里做?为什么?
- 如何避免 CAN 中断占用过多 CPU?
- CAN 驱动、If、PduR、Com 各层职责?
- CAN 报文丢失时,上层如何感知?
- Rx Timeout 是在哪一层实现的?
- CAN 报文和 OS 调度之间如何保证时序确定性?
五、LIN 基础 & 协议理解(非常常问)
- LIN 为什么是 主从架构?
- LIN 帧的组成?Break / Sync / PID 的作用?
- LIN 校验和 Classic vs Enhanced 区别?
- LIN 是如何实现时间同步的?
- LIN 的最大速率为什么这么低?
- LIN 从节点是如何被唤醒的?
- LIN Sleep / Wakeup 的完整流程?
六、LIN 调度 & 工程问题(项目必问)
- LIN Schedule Table 是如何设计的?
- Event-triggered frame 的使用场景?
- LIN 从节点响应慢会发生什么?
- LIN 总线上挂多个从节点,如何避免冲突?
- 主节点掉电,LIN 总线会发生什么?
- LIN 和 CAN 在 Body 域中是如何配合的?
七、诊断 & 网络结合(CAN/LIN + UDS)
- 诊断报文为什么通常优先级高?
- UDS over CAN 使用的是物理寻址还是功能寻址?
- LIN 上是否支持 UDS?有什么限制?
- 多 ECU 同时响应功能寻址会发生什么?
- 如何避免诊断报文影响实时控制报文?
- Bootloader 模式下 CAN 通信和 App 有什么区别?
八、异常 & 边界条件(高级工程师必答)
- 如果 CAN 网络上出现 报文洪水,你如何设计保护?
- 如果某 ECU 发送错误数据但协议完全正确,怎么检测?
- ECU 在 Reset 过程中,CAN 引脚应该是什么状态?
- CAN 收到非法 DLC 怎么处理?
- LIN 从节点程序跑飞,主节点如何发现?
- 通信异常是否会触发功能安全机制?如何设计?
九、项目设计反问(你可以反问面试官的)
- 项目中 CAN 网络负载目标是多少?
- 是否使用 CAN FD?为什么?
- 是否有 Bus Guardian 或网络监控?
- LIN 主节点是否支持动态 Schedule?
- 诊断与控制报文是否做了带宽隔离?
🔑 使用建议(非常重要)
- 不要背答案
每个问题至少准备:
- 一个原理解释
- 一个你项目里的真实例子
- 一个你踩过的坑
面试官真正想听的是:
“你遇到过什么问题?你怎么设计的?为什么这样设计?”