⚡
一、命名规范篇
Q1:AUTOSAR中Short Name的长度限制是多少?命名有哪些字符限制?
答案:Short Name长度必须在1到128个字符之间,必须以字母开头,只能包含字母、数字和下划线。
面试延伸:如果被追问为什么不能用连字符,回答:因为RTE生成器会直接用Short Name生成C代码函数名,而C语言标识符不允许连字符。
Q2:为什么AUTOSAR不允许仅靠大小写区分两个名字?
答案:在同一个命名空间内,DoorLocked和doorLocked不能同时存在。原因是实际集成工作中,工程师很容易在代码里混用大小写导致链接错误,而且代码生成工具在不同平台上对大小写的处理可能不一致。
Q3:Long Name和Short Name的使用场景有什么区别?
答案:- Short Name:用于XML建模和RTE代码生成,遵循严格的字符和长度限制,面向工具链。- Long Name:面向人类读者,可包含空格和完整单词,用于文档显示。
命名示例:- Short Name:VehSpd- Long Name:Vehicle Speed
规则要点:- Long Name实词首字母大写,冠词/介词/连词小写- Long Name强制使用空格分隔- Long Name建议不超过80字符
Q4:AUTOSAR的关键词(Keyword)系统是什么?有什么作用?
答案:AUTOSAR预定义了一套标准关键词,每个关键词包含:- shortName:唯一标识- longName:完整形式- abbrName:缩写形式,用于构建Short Name- classification:语义分类
五大语义分类:1. Mean-Environment-Device:主体/环境/设备(如Eng=Engine)2. Action-PhysicalType:动作/物理类型(如N=Speed)3. Condition-Qualifier:条件/限定符(如Max=Maximum)4. Index:索引(如1,2,3)5. Preposition:介词(如At, For, From)
拼接顺序:Mean-Environment-Device → Action-PhysicalType → Condition-Qualifier → Index → Preposition
示例:EngNMax = Engine(主体)+ Speed(物理类型)+ Maximum(限定符)= 最大发动机转速错误示例:MaxEngN(限定符不能放在主体之前)
Q5:如果一个缩写有多个含义,AUTOSAR如何处理?
答案:允许不同关键词共享同一个abbrName,但每个关键词必须有唯一的shortName。
示例:
这样用户在命名时仍使用缩写Ch,但系统底层通过不同的shortName保证语义精确区分。
Q6:AUTOSAR命名中为什么不推荐使用下划线?
答案:1. RTE使用下划线分隔端口名和数据元素名(如Rte_IWrite_Runnable_Port_DataElement),若命名中本身含下划线会导致解析歧义。2. 多个连续下划线和尾部下划线降低可读性。3. 首部下划线在C/C++中通常表示保留标识符,XML Schema已禁止。替代方案:使用大写字母分隔关键词缩写,如EngNMax而非Eng_N_Max。
Q7:VehV和VehSpd有什么区别?N又是什么?
答案:
示例:- VehV = Vehicle Velocity(车辆平移速度)- EngN = Engine Speed(发动机转速)- WhlSpd = Wheel Speed(车轮转速,平移和旋转速度有关联时用)
二、接口与数据类型篇
Q8:Sender-Receiver接口的命名有什么特殊要求?
答案:接口名必须以序列号结尾,以支持未来版本演进。如BattU1、BattU2。推荐做法:- 接口名应独立于具体使用场景,不编码通信路径- 错误示例:YawRateStdByEsc(绑定了ESC组件)- 正确示例:YawRate1(可被多个端口复用)
Q9:VariableDataPrototype(数据元素)的命名有哪些规则?
答案:- 数据内容用Val(Value缩写),如<SHORT-NAME>Val</SHORT-NAME>- 操作用Cls(Close缩写),如关闭操作- 多个数据元素表示同一操作时,用Mean-Environment-Device关键词区分: - UsrTx(用户传输) - TelgrmTx(报文传输)不推荐:在数据元素名中重复接口名,会造成RTE函数名冗余。
Q10:ApplicationDataType的命名规则是什么?

答案:1. 名称必须反映类型的物理意义2. 禁止使用t_等前缀3. 必须以序列号结尾,以区分同一物理量的不同分辨率/范围版本4. 不编码通信路径信息以支持复用示例:- U1:电压类型版本1- T1, T2, T3:温度类型的不同精度版本
Q11:AUTOSAR中的CompuMethod有哪几种类型?如何命名?
答案:
{Unit}Identcl | ||
{Unit}Lnrl | ||
示例:- KelvinIdentcl:开尔文单位,等值转换- VoltLnrl:电压线性转换- AckSt1:应答状态枚举转换表
Q12:AUTOSAR中如何建模枚举类型?
答案:AUTOSAR MetaModel没有显式的枚举类型,通过ApplicationPrimitiveDataType + CompuMethod(TEXTTABLE类型)组合实现。关键点:- ApplicationDataType定义数据类型身份- CompuMethod定义枚举值与物理语义的映射- RTE通过CompuMethod中的枚举标签保证全局唯一性常见问题:不同枚举类型使用相同标签但不同数值(如Opend=0在A类型,Opend=1在B类型),RTE需要额外信息来解决冲突。
Q13:接口聚类有三种方式,分别适用于什么场景?
答案:
面试加分点:Record相比Array的优势是每个元素有独立名称,可读性更好。
三、组件与系统建模篇
Q14:SW-ComponentType和SW-ComponentPrototype有什么区别?
答案:
命名空间规则:- SW-ComponentType名称在AR-Package内唯一- SW-ComponentPrototype名称在CompositionSwComponentType内唯一规则:禁止使用前缀标识应用域(如Pwr_表示动力域),信息已包含在包结构中。
Q15:同一个ComponentType被多次实例化时,端口名如何命名?
答案:使用命名模式:<Port name> + <Preposition> + <ComponentPrototype name>示例:- 组件类型Washer,RPort名Activation- 实例:WasherFront、WasherRear、WasherHeadlamp- 管理器PPort命名:ActivationOfWasherFront、ActivationOfWasherRear、ActivationOfWasherHeadlamp
Q16:PortPrototype和PortInterface的复用原则是什么?
答案:鼓励一个接口被多个端口复用,而非为每个变体定义不同接口。案例:汽油机有慢速/快速扭矩干预路径,柴油机没有。错误做法:定义TorqueInterventionSlow和TorqueInterventionFast两个接口,柴油机变体中忽略慢速接口。正确做法:定义一个TorqueIntervention1接口,两个端口都用此接口,柴油机变体中禁用慢速端口。好处:接口不受变体影响,变体处理更清晰。
四、单位与物理维度篇
Q19:AUTOSAR中如何命名复合单位?
答案:
Display Name特殊字符:平方→*2,立方→*3,平方根→*(1/2),微→μ。示例:NwtPerMtr = N/m,MtrPerSecCubd = m/s³。
Q20:Physical Dimension的Short Name如何构建?
答案:语法:({Dim}* | NoDimension)(_{Index}),Dim ::= {PhysDim}{Neg}{Number}。七个基本物理量:Len(长度)、M(质量)、Ti(时间)、I(电流)、T(热力学温度)、Amt(物质的量)、Lumi(发光强度)。示例:Len1TiNeg1 = 速度,Len2M1TiNeg2 = 扭矩,Len2M1TiNeg2_1 = 能量(与扭矩量纲相同,用_1区分)。
五、蓝图与版本演进篇
Q21:Blueprint机制是什么?解决了什么问题?
答案:Blueprint是一种“预定义模板”机制,允许从标准化元素派生出项目级定制元素。三个核心实体:Blueprint、Blueprinted Element、Blueprint Mapping。应用场景:PortPrototypeBlueprint可独立于任何SW-C存在,派生时可修改longName和description。命名模式:派生一次{blueprintName},派生多次{blueprintName}_{Keyword}。关键特性:Blueprint元素对RTE层无影响,影响仅由派生的Prototype元素产生。
Q22:AUTOSAR如何管理模型元素的版本演进?
答案:核心原则:已发布的标准化元素不能修改任何属性,如需变更,必须创建新元素,且新元素名称仅通过改变末尾序列号来区分。各元素类型版本化规则:枚举数据类型/连续数据类型/数组/记录/SR接口/CS接口/PortPrototypeBlueprint等修改相应内容即触发新建。示例:BattU1新增数据元素时创建BattU2,老项目继续用BattU1不受影响。
Q23:AUTOSAR中为什么不允许多个同名的SwComponentType存在于同一AR-Package?
答案:RTE生成器硬性要求。RTE生成器会拒绝存在同名SwComponentType的配置。同样适用范围:SwComponentPrototypes在CompositionSwComponentType内必须唯一,PortPrototypes在SwComponentType内必须唯一。

面试
资料
学习
路线
学习
指导
多名10年+大厂经验
工程师在线指导
学习
交流
众多开发者一起交流
助力你提升技能
夜雨聆风