零跑 整车嵌入式软件开发方向 嵌入式软件工程师 二面
一面主要考察了基础八股(CAN协议、RTOS任务调度、volatile/const、内存管理、死锁、看门狗、Linux驱动、AUTOSAR基础等),二面整体难度明显上升,更侧重系统设计能力、车载软件工程实践以及对整车架构的理解深度。面试官会结合一面的项目继续深挖,同时引入更多车载场景下的工程问题。
- 一面提到了你的项目,这次深入聊一下:如果把你的项目移植到车载域控平台上,需要做哪些改造?从硬件抽象、OS选型、通信协议、功能安全几个维度分别说一下。
- 什么是域控架构?和传统分布式ECU架构相比,域控架构的优势和挑战分别是什么?零跑的整车电子架构你了解吗?
- Classic AUTOSAR的分层架构中,BSW各层的职责是什么?MCAL层和ECU抽象层的边界在哪里?你在项目中有没有接触过类似的分层设计?
- AUTOSAR中的RTE是如何实现软件组件之间通信解耦的?Sender-Receiver和Client-Server两种通信模式分别适合什么场景?
- 什么是整车OTA?完整的升级流程是怎样的?升级过程中如何保证安全性和可回滚性?A/B分区方案的原理是什么?
- UDS诊断协议了解吗?0x22、0x2E、0x27、0x31服务分别是做什么的?DTC是如何存储和上报的?你在项目中有没有实现过诊断相关功能?
- LIN总线和CAN总线的区别是什么?LIN的主从调度机制是怎样的?在整车中LIN总线通常用在哪些场景?
- SOME/IP协议的服务发现机制是怎样的?和传统CAN信号矩阵相比,SOME/IP在数据传输上有什么本质区别?Adaptive AUTOSAR中SOME/IP是如何承载服务通信的?
- 什么是功能安全(ISO 26262)?ASIL等级是如何划分的?软件层面的功能安全要求体现在哪些地方?
- 嵌入式系统中的Flash磨损均衡是怎么实现的?NOR Flash和NAND Flash的区别是什么?车载场景下对存储介质有哪些特殊要求?
- 多核MCU(如Aurix TC3xx)的软件开发和单核有什么区别?核间通信是如何实现的?如何保证多核之间的数据一致性?
- 什么是时间触发通信(TT-CAN / FlexRay)?和事件触发通信相比,时间触发在实时性保障上有什么优势?
- 车载Linux和桌面Linux在内核配置上有哪些主要差异?Yocto构建系统了解吗?BSP移植的基本流程是什么?
- 如何设计一个整车级别的日志系统?需要考虑哪些问题:存储空间、实时性、加密、远程上传、隐私合规?
- 如何设计一个可靠的整车软件版本管理方案?从代码仓库、编译构建、版本号规范、发布流程几个维度说一下。
- 你在项目中遇到过最复杂的系统集成问题是什么?多个模块联调时出现了什么问题,是怎么定位和解决的?
- 如果让你从零设计零跑下一代整车域控软件架构,你会如何规划?从需求分析、架构选型、开发流程、测试验证几个维度说一下你的思路。
反问环节:
- 团队目前整车OTA和域控软件的技术栈是什么?主要用Classic AUTOSAR还是Adaptive AUTOSAR?
- 新人入职后的成长路径是怎样的,一般多久能独立负责一个模块?
- 目前团队最大的技术挑战是什么?
核心嵌入式面试八股文总结:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
总结 & 备战建议
整体难度高于一面,二面的核心考察点从"知不知道"升级到"会不会用、能不能设计"。几个重点方向:
第一,AUTOSAR要真的懂架构,不只是背概念。RTE、BSW分层、SWC通信模式,面试官会追问细节,建议结合实际工具(如EB tresos、Vector DaVinci)的使用经验来回答。
第二,OTA是零跑的重点方向,A/B分区、升级状态机、回滚机制、安全校验这些要系统梳理一遍,不能只停留在"知道有这个东西"的层面。
第三,UDS诊断是车企必考项,0x22读数据、0x2E写数据、0x27安全访问、0x31例程控制,每个服务的使用场景和报文格式都要熟悉。
第四,功能安全(ISO 26262)不要求精通,但ASIL等级划分、软件层面的安全机制(冗余设计、看门狗、内存保护)要能说清楚。
第五,系统设计题是二面的重头戏,回答时要有结构感:先说需求和约束,再说方案选型,最后说权衡和取舍,不要上来就给答案。