ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

汽车电子底层软件开发:岗位能力、自学路线与面试指南

汽车电子底层软件开发:岗位能力、自学路线与面试指南 很多人问我要不要报汽车电子底层软件开发就业课我一般先反问一句你知道这个岗位上班第一周大概率在干什么吗大部分人的回答是写驱动配置AUTOSAR但真实场景往往是——拿到一块板子、一份几百页的英文参考手册、一份没人维护的旧代码然后花两天时间搞清楚为什么这版软件刷进去之后看门狗会复位。汽车电子这个行业对底层软件开发岗的需求一直存在而且门槛不在会不会写代码而在能不能把代码和硬件、协议、流程三者对上。这篇内容我按从业者的角度把岗位拆开讲清楚哪些能力是真需求自学或跟课该怎么排顺序简历上的项目怎么做才不像练手Demo面试会被问到什么以及E/E架构演进之后这个方向到底还值不值得进。1. 底层软件开发到底写什么代码把岗位画像拆到寄存器级市面上讲汽车电子的内容很多但大部分停留在CAN总线是什么AUTOSAR有几层这种科普层面。真正决定你能不能拿offer的是能不能把写底层软件这件事描述到寄存器、报文、时序这一级。所以先把岗位画像拆细。1.1 三个层次的底层招人时指的通常是哪一个行业里说底层其实混着三件事面试时如果分不清很容易答偏。第一层是芯片级驱动。直接读写寄存器控制GPIO、时钟、ADC、PWM、SPI、Flash控制器处理中断向量表、启动流程、内存布局。这一层的代码和芯片强绑定换一颗MCU基本要重写。第二层是协议栈与基础软件。CAN/CAN FD、LIN、FlexRay、车载以太网的驱动和上层适配诊断栈UDS on CAN / UDS on IP、网络管理、非易失存储管理、Bootloader。这一层有标准可依但标准只规定接口和行为不规定怎么实现所以调试量很大。第三层是集成与配置。用AUTOSAR的配置工具把上面两层装配起来写RTE接口做多核分区处理时序和资源分配。这一层看起来最软件实际上最考验你对前两层的理解深度。招聘JD里写底层软件开发八成是这三层的混合体偏第一、第二层居多。所以判断一门就业课靠不靠谱先看它有没有把第一层讲到寄存器只讲配置工具的学完你会发现面试第一轮就卡住。1.2 一枚量产ECU里你负责的那部分代码长什么样拿一个典型的车身控制器举例。上电之后代码的执行顺序大致是启动代码初始化栈指针和时钟 → 看门狗初始化并开始喂狗 → MCU时钟树配置 → 端口和外设初始化 → 通信驱动初始化 → 诊断栈和网络管理启动 → 进入周期任务调度。中间任何一步失败通常的表现都是复位—复位—复位而不是打印一行错误日志。这就是底层开发和互联网后端最大的区别你没有丰富的运行时诊断手段很多问题只能靠示波器、调试器和经验去反推。一个典型模块比如CAN接收代码大致长这样仅为结构示意具体寄存器名以芯片手册为准/* CAN 接收中断服务函数只做搬数据和置标志不做耗时处理 */ void CAN0_RxIsr(void) { Can_MsgType msg; CanIf_RxIndicationType ind; if (Can_ReadRxFifo(msg) ! CAN_OK) { Can_ReportError(CAN_ERR_RX_FIFO_OVERFLOW); return; } /* 报文过滤只留下本节点关心的ID其余直接丢 */ if (!CanIf_IsRxPduAccepted(msg.id)) { return; } ind.pduId CanIf_MapIdToPdu(msg.id); ind.length msg.dlc; memcpy(ind.data, msg.data, msg.dlc); /* 交给上层中断里只入队 */ Com_RxQueuePush(ind); Com_RxIrqFlag 1u; }这段代码里藏着几个面试常问的点为什么中断里不做协议解析、FIFO溢出怎么处理、DLC和实际长度不一致怎么办、队列满了丢新还是丢旧。这类问题你在书上找不到标准答案都是踩出来的。1.3 招聘JD反复出现的词翻译成具体动作我把常见要求做了个翻译表很多人简历过不了初筛就是因为只写了熟悉没写做过什么。JD里的说法实际对应的工作内容验证你会的标准熟悉C语言熟悉嵌入式开发指针、位操作、内存对齐、volatile、链接脚本能解释清楚.data和.bss谁在启动时被清零熟悉CAN/LIN总线报文收发、信号打包、总线负载计算、错误处理能手算一帧标准帧多少位能算采样点熟悉UDS诊断服务实现、NRC处理、P2时间、刷写流程能画出0x27安全访问的完整时序熟悉AUTOSARMCAL配置、BSW集成、RTE接口能说清Com和PduR的分工边界熟悉功能安全安全机制设计、E2E、看门狗策略能解释ASIL等级为什么影响代码结构熟悉调试工具TRACE32、CANoe、示波器能用CANoe抓出一次偶发丢帧的原因2. 就业课能不能用先拿这五块硬骨头去对我见过不少转行的朋友课程看了三四个月笔记做得很漂亮一上手连时钟树都配不明白。问题不在课程本身而在于判断标准用错了——不是看它讲了多少知识点而是看它有没有把那五块必须动手的硬骨头啃下来。2.1 硬骨头一C语言的内存模型与寄存器思维学底层开发C语言不是拿来刷算法题的。你需要建立的是内存里每一块字节归谁管的意识。举个具体的例子为什么中断里改的全局变量要加volatile因为编译器优化时可能把它缓存在寄存器里而中断修改的是内存两者不同步。这个知识点很多人背过但真到写代码时DMA缓冲区、双缓冲交换、标志位这几个高频场景里几乎天天遇到。再比如内存对齐。通信协议里经常有这种写法typedef struct { uint8_t header; uint16_t length; /* 偏移 2前面补 1 字节 */ uint8_t payload[8]; uint32_t crc; } MsgFrameType; /* 大小通常不是 15而是 20 或 24 */如果这个结构体是直接跟Flash里存的原始数据做memcpy映射的对齐问题会直接导致解析错位。这类坑在生产代码里非常常见解决办法是要么按字节解析、要么用#pragma pack并明确知道代价非对齐访问在某些内核上会触发异常。提示判断一门课讲不讲真东西看它有没有带你读过一次链接脚本.ld 或 .lsl。只看过启动代码截图和自己改过一次段分配差距很大。2.2 硬骨头二MCU外设驱动与中断这块必须动手。我的建议是不要一上手就用厂商的SDK。先用寄存器写一遍GPIO翻转、用定时器做一个毫秒基准、用ADC采一次电压、再用外部中断做一个按键响应。走完这一圈你就理解了轮询和中断各自适合什么场合。中断这块有几个实务要点优先级和嵌套。MCU中断控制器一般支持多级优先级高优先级可以打断低优先级。底层代码里通信中断通常要高但不能无限高否则会挤掉电机控制这类硬实时任务。ISR里不做耗时操作。标准做法是置标志 入队主循环里消费。原因很直接ISR执行期间同级或低级中断被屏蔽时间一长就丢事件。看门狗和中断的关系。很多新手把喂狗放在定时器中断里结果主循环卡死、定时器照跑、看门狗照喂程序永久挂起却没人发现。正确做法是喂狗点放在主循环或者一个多任务都汇报过心跳的统一逻辑里。2.3 硬骨头三CAN/CAN FD与诊断协议栈CAN是汽车电子的通用语言必须熟到能徒手画帧格式。几个必须掌握的点仲裁机制。CAN用ID做仲裁ID越小优先级越高而且是逐位比较。这解释了一个常见疑惑为什么关键的刹车、转向报文ID往往分配得很小。总线负载计算。一帧标准数据帧11位ID、8字节数据在不考虑位填充时大约110位左右加上位填充最坏情况会更多。如果你要评估一条500kbps的总线上能挂多少报文就得会算每帧位数 ≈ 帧头开销 数据位数 填充位总线负载 所有帧位数之和 / (波特率 × 时间窗口)工程上一般建议峰值负载不超过30%~40%留出余量给偶发报文和错误帧采样点。这是新手最容易忽略、老手最容易吵起来的地方。多个节点在同一条总线上采样点必须足够接近否则在边沿附近会出现采样错误。经验值大多落在75%~87.5%之间具体要根据收发器延迟和线束长度算。整车厂通常会出一份网络规范把每个网络动力、车身、诊断的波特率、采样点、终端电阻要求写死你不遵守台架上就可能零星报错误帧。诊断。UDS的核心服务其实就那么几个但组合起来能覆盖绝大部分工作服务名称典型用途0x10会话控制切换到编程会话、扩展会话0x27安全访问种子密钥解锁刷写前必走0x22/0x2E读写DID读版本号、写标定参数0x31例程控制触发自检、擦除Flash0x34/0x36/0x37请求下载/传输数据/退出传输刷写三件套0x19/0x14读/清DTC故障码管理0x3ETesterPresent维持会话防止超时回默认会话还有个必须记住的细节NRC 0x78响应挂起。当诊断请求需要较长时间处理比如擦除一个扇区ECU要先回0x78告诉诊断仪我还在干活别超时处理完再发正式响应。很多自制Bootloader跑不通就是漏了这一步上位机等不到响应直接判定失败。2.4 硬骨头四AUTOSAR工具链与配置AUTOSAR这块我要说点不太好听的会用配置工具不代表懂AUTOSAR。我用过的主流配置工具各家都差不多点几下就能生成一堆代码但生成出来的东西为什么这么组织、模块之间的接口为什么这么定工具不会告诉你。理解AUTOSAR建议按这个顺序先看分层和接口。MCAL对寄存器ECU Abstraction封装外设语义Service Layer提供诊断、存储、网络管理RTE负责SWC之间的通信应用层不碰硬件。再理解配置参数的后端意义。比如Com模块里配一个发送模式为周期发送背后就是启动一个定时任务往PduR推数据超时没推上去可能触发超时监控。你配的参数最后都会变成运行时的行为和内存占用。最后才是工具操作。工具的熟练度一两周就能练出来前面的理解才是不可替代的。另外提醒一句不是所有项目都用AUTOSAR。很多自主品牌的量产项目仍是半AUTOSAR甚至手写架构特别是成本敏感的控制器。所以面试时被问到你们项目为什么用/不用AUTOSAR能讲出资源和研发流程的权衡比背分层图有用得多。2.5 硬骨头五调试与测试手段底层工程师的核心竞争力有一半在能不能快速定位问题。手段大致分三类在线调试。TRACE32、J-Link、iSYSTEM这类工具能看寄存器、看内存、设数据断点、跟踪中断。真正的高手会用它看栈使用深度提前在栈底填0xDEADBEEF之类的特征值跑一段时间后看被冲掉多少这比事后分析崩溃现场高效得多。总线分析。CANoe、CANalyzer、Vehicle Spy加上便宜的USB-CAN盒子能抓报文、做仿真、跑自动化脚本。学会写CAPL脚本做周期性发送和异常注入能让你的验证效率翻倍。硬件侧观测。示波器看CAN差分波形、看电源纹波、看复位引脚时序万用表测静态电流。有些软件问题最后发现是硬件上电时序不对不具备硬件观测能力的人会在这里绕很久。这五块如果一门课只覆盖了其中两块那它更适合当作入门科普如果五块都覆盖并且有动手环节才值得花时间。3. 排一条能跑通的自学路线从点亮一盏灯到跑完一次刷写有了判断标准再说路线。我按自己带人和自学的经验把学习拆成四个阶段每个阶段都有明确的通关标志。这套路线对转行、应届都适用。3.1 阶段一不用库先把GPIO和时间基准摸一遍时间预算4到6周每天2小时以上。目标很明确能不看SDK靠参考手册把一颗LED点起来并且能做出一个误差可接受的毫秒延时。具体动作读芯片的时钟树章节搞清楚晶振、PLL、分频器到各外设总线的路径。这一步很多人跳过结果后面配串口波特率不对怎么都调不通。配置GPIO的方向、复用、上下拉、驱动能力。注意复用寄存器往往是多位域改之前先读回当前值用读—改—写的方式操作/* 读-改-写只改目标位域不影响同寄存器其他外设 */ uint32_t tmp PORTB_PCR12; tmp ~PORT_PCR_MUX_MASK; tmp | PORT_PCR_MUX(1u); /* 复用为 GPIO */ PORTB_PCR12 tmp;用系统定时器SysTick或芯片的STM做一个毫秒基准用另一个定时器输出PWM用示波器或逻辑分析仪量一下实际周期。误差在1%以内算过关。配一次外部中断做按键响应同时体会消抖为什么必须做——机械按键的抖动信号在中断里会被识别成多次触发。通关标志能用寄存器写一份自己的GPIO/定时器/中断小驱动并且解释清楚每个寄存器位的作用。3.2 阶段二CAN收发自己写别一上来就上协议栈时间预算6到8周。这个阶段的核心是打通报文从物理层到应用层的全链路。硬件上最低成本的方案是买两块带CAN控制器的开发板加两个USB-CAN分析仪市面上一两百块的够用总花费控制在千元以内。学习顺序建议先搞清CAN控制器的寄存器结构模式配置、位时序波特率预分频、时间段1/2、同步跳转宽度、过滤器、发送邮箱、接收FIFO。手写位时序配置用分析仪确认波特率正确。这一步最容易出错采样点的计算公式要自己推一遍。实现发送和接收先发固定ID固定数据再试标准帧和扩展帧、单帧和多帧。实现一个最简单的信号打包函数。假设有一路车速信号起始位、长度、分辨率、偏移都写在DBC里你要能徒手根据DBC把物理值转成字节/* 车速起始位 8长度 16分辨率 0.05625 km/h偏移 0 */ uint16_t raw (uint16_t)((speed_kmh - 0.0f) / 0.05625f); can_data[1] (uint8_t)(raw 0xFFu); /* Intel 格式低位在前 */ can_data[2] (uint8_t)((raw 8) 0xFFu);最后再引入协议栈无论是AUTOSAR的CanIf/CanTp还是自己搭的简易栈对比一下栈做了什么、不做什 么。通关标志两台设备互发报文能通过改变ID验证仲裁优先级能算出一段总线的负载率。3.3 阶段三UDS Bootloader这是简历上最值钱的一段时间预算6周如果每天投入少延长到8到10周也正常。刷写Bootloader是底层岗面试的硬通货因为它同时考察Flash操作、诊断协议、异常处理、状态机设计、安全访问几乎把所有基础能力串起来了。实现路径建议先做诊断服务的最小集合0x10会话控制、0x3E保持会话、0x22读版本、0x27安全访问、0x31例程控制。0x27的种子密钥算法可以自己定一个简单的真实项目里是保密算法但流程必须一模一样。再加刷写三件套0x34请求下载携带地址和长度、0x36传输数据分块传、0x37退出传输。注意每块数据的长度受CAN帧长约束CAN FD一帧最多64字节考虑传输层开销后有效载荷会少一些。Flash驱动自己做一遍。重点是三个概念擦除的最小单位是扇区而不是字节写之前必须先擦除擦完是0xFF写完之后必须校验CRC或者逐字节比对不做校验的Bootloader在量产里是不合格品。加断电保护和回滚逻辑。这是区分练手项目和像量产项目的关键点。设计一个标志区记录当前App是否完整、是否被校验通过刷写中途掉电下次上电不能直接跳App要留在Bootloader等重新刷。注意刷写过程中如果App正在运行而App区被擦除代码正在执行的Flash被修改行为是不可预测的。所以量产设计里要么App跳到RAM里执行刷写逻辑要么用A/B双区。这个细节面试官一旦问你们刷写的时候App还能跑吗答不上来就很尴尬。通关标志能通过上位机或者自己写个简单脚本完成一次完整刷写包括失败重试和掉电续传。3.4 阶段四往功能安全和流程上靠时间预算长期边工作边补。功能安全ISO 26262不是一门可以速成的技术但可以通过几个具体点建立认知ASIL等级会直接影响代码结构。比如ASIL D的模块通常要求双核锁步、内存和总线的端到端保护、独立的看门狗。常见安全机制程序流监控看关键流程的执行顺序是否被打乱、内存CRC校验、E2E保护给通信数据加计数器、CRC和数据ID、栈监控。安全分析FMEA、FTA这些方法在文档层面用得多底层工程师通常参与的是针对某个失效模式采取什么检测手段。流程层面ASPICE里的SWE.1到SWE.6对应需求、设计、实现、单元测试、集成测试、合格性测试。你不需要成为流程专家但要知道代码不是写完就完事配套的单元测试报告、静态分析报告、代码评审记录都是交付物。这个认知在面试时会直接反映在你的表达方式上。阶段时长核心动作通关标志一4~6周寄存器点灯、定时器、中断手写GPIO/定时器驱动并解释寄存器二6~8周CAN帧收发、位时序、信号打包双板通信总线负载计算三6~10周UDS服务集 Bootloader完成一次可重试的完整刷写四持续功能安全、ASPICE、测试能讲清楚模块对应的失效检测手段4. 项目怎么做出量产味分层、规范、文档、边界简历上写三个跑马灯项目不如写一个能把异常处理说清楚的项目。这一节讲的是怎么把练手Demo改造成看起来像量产代码。4.1 选题别做跑马灯做有状态机和对异常处理的东西几个我推荐的选题方向按难度排序带诊断的CAN节点周期性上报两路模拟量支持DID读写支持DTC上报和清除。难度适中覆盖面广。UDS Bootloader上面阶段三的成果含安全访问和掉电保护。网络管理实现总线休眠和唤醒。这个方向竞争小因为很多人不做但整车厂特别关心静态电流会做网络管理的人相对稀缺。带E2E保护的通信模块给报文加上计数器、CRC和数据ID并实现接收侧的校验和错误处理。选题的关键判断标准是这个项目里有没有状态和异常。一个永远成功的Demo你觉得没问题面试官一眼就看出你没有处理过真实场景。4.2 代码分层和接口设计把能跑变成能改分层不是教条是为了让代码能被别人改。建议按这个结构组织app/ 业务逻辑不含寄存器操作 service/ 诊断、存储、网络管理 comm/ CAN/LIN 驱动与传输层 mcu/ 寄存器封装、时钟、中断向量 cfg/ 配置与标定参数每层之间的接口要遵守两条纪律上层不包含下层的头文件里跟硬件相关的定义。业务代码里出现一个寄存器名就说明分层破了。所有对外接口都返回明确的状态码不用全局变量传错误。void Can_Send(...)这种设计在量产项目里会被评审打回因为调用者无法判断是否成功。命名规范、注释规范这些看着虚但它们是最低成本的专业信号。变量名写成a、b、tmp1面试官会默认你没在正规代码库里待过。4.3 文档和单元测试面试官判断你像不像量产人的依据这部分是大多数自学者完全空白的区域也是最能拉开差距的地方。你不需要写几十页文档但至少要准备三份东西一份需求说明一两页写清楚这个模块要做什么、输入输出是什么、关键时序约束是什么比如诊断响应必须在50ms内给出否则回0x78。一份设计说明两三页模块划分、状态机图、数据结构、异常处理策略。状态机图这里用普通表格或文字描述就行。一份测试记录至少包含正常用例、边界用例、异常用例三类。比如诊断长度超限、DID不存在、安全访问未解锁就调用写服务。单元测试在MCU上做有难度但可以用这个思路把跟硬件无关的逻辑比如CRC计算、信号打包、状态机跳转抽出来在PC上编译运行用简单的断言框架跑一遍。这样你面试时可以说我的核心逻辑在PC端有单元测试覆盖硬件相关部分用桩函数隔离这句话的信息量很大。4.4 三个能让你的项目瞬间掉分的细节第一没有超时处理。所有的等待都写成死循环等标志位一旦对端不回程序永久卡死。正确做法是带超时退出并返回错误码。第二没有边界检查。诊断请求长度没校验、数组下标没判断、循环次数没上限。这类问题在自动化测试或者静态分析工具下会成片暴露。第三版本混乱。代码里到处是#if 0、注释掉的旧逻辑、test1.c、test2_new.c。用Git做版本管理写清楚的提交信息这本身就是专业度的体现。5. 面试现场底层岗高频问题与回答思路面试和笔试最大的区别在于底层岗的面试官通常都是干过活的人他们问的问题偏你踩过吗而不是你背过吗。下面按类型整理并说清楚每类问题他想听什么。5.1 语言与硬件基础题问题面试官想听的核心点volatile的作用编译器优化与内存可见性中断/DMA场景而不只是背定义结构体内存对齐对齐规则、pack的代价、跟通信帧映射的坑.data/.bss/.text的区别谁在启动时从Flash搬到RAM谁被清零谁只读栈溢出的排查方法栈填充特征值、看栈指针、栈使用量统计复位的几种来源上电复位、看门狗复位、软件复位、掉电复位以及怎么读寄存器区分Flash为什么先擦后写擦除单位、写1变0不可逆、擦写寿命这类题的答法有一个通用原则先答结论再补一个你实际遇到的场景。比如答完volatile的定义加一句我在做CAN接收的时候DMA往缓冲区写数据标志位不加volatile就会出现主循环读不到更新的情况。这一句话就把你和只背过书的人区分开了。5.2 总线与诊断题高频的几道CAN为什么用双绞线和终端电阻。差分传输抗共模干扰终端电阻用于阻抗匹配、减少信号反射。可以补一句实际排查中终端电阻错装成两个60欧姆并联会导致通信距离明显缩短。CAN FD和经典CAN的区别。数据段可变速率、数据场最长64字节、CRC算法增强。要顺带说清楚它对软件的影响缓冲区大小、传输层分块逻辑、对CPU负载的影响。UDS的安全访问为什么要种子密钥。防止未授权刷写和参数篡改。可以补一句它并不提供强加密能力只是工程上的访问控制手段。0x78响应挂起的意义。前面已说过能主动提这个细节非常加分。怎么定位一条总线上偶发的丢帧。这是一个开放性题标准答法是先确认是发送侧丢还是接收侧丢看发送计数器和接收计数器再看总线负载是否过高再看错误帧计数最后看硬件侧的采样点和线束。5.3 工程与流程题这类题往往出现在二面或技术负责人面试里你们项目的软件是怎么发布的。想听的是版本管理、编译环境、交付物二进制、标定文件、文档、测试报告。需求变更怎么处理。想听的是变更评审、影响范围分析、回归测试。代码评审关注什么。可以答接口契约、边界条件、资源占用、可测性、是否符合编码规范。遇到一个偶发问题怎么推进。这是最能体现水平的一题。好的答法是先想办法复现并提高复现率加日志、加计数器、压力测试再做二分定位屏蔽模块、替换版本最后确认根因并补测试用例防止回归。5.4 反问环节怎么问才显得懂行反问环节是被低估的加分项。几个比较有效的问题这个岗位主要是维护已有平台还是做新平台开发——区分工作性质。团队里底层和应用的比例大概是多少底层是自己做还是用供应商的协议栈——了解技术栈深度。刷写和诊断这部分是自研还是采购——自研意味着你能接触到核心技术。团队怎么做代码评审和版本发布——判断工程规范程度。避免问加班多不多能不能远程这类问题放在第一轮哪怕你真的很关心。6. 别被软件定义汽车晃了眼架构演进下底层岗往哪走最后聊点方向性的东西。这两年软件定义汽车智能汽车电子电气架构这些词很热很多人在纠结要不要往底层走怕学完就过时。我的判断是底层不会消失但底层的工作内容在变。6.1 从分布式到区域控制器变的是什么不变的是什么传统架构是分布式一个功能一个ECU几十上百个节点挂在几条CAN总线上。现在的演进路径大致是功能域集中动力域、底盘域、座舱域、智驾域再往区域控制器按物理位置划分 中央计算平台走。通信上CAN仍然承载大部分实时控制信号但车载以太网承担了高带宽的骨干通信。对底层岗位的影响有两面不变的是——只要有执行器和传感器就需要有人操作MCU寄存器需要有人做诊断、刷写、网络管理、功能安全的底层实现。这部分工作的总量没有减少只是从几十个小节点集中到十几个能力更强的控制器上。变化的是——单个控制器的软件复杂度大幅上升多核、Hypervisor、大容量Flash、复杂的电源管理都成了常见配置同时底层工程师需要理解一点以太网和SOA的知识至少要能跟上层沟通。另外工具链和自动化程度在提高靠手工配置吃饭的日子会越来越难过。6.2 汽车电子测试是不是一条更好的路有不少人从开发转测试或者一开始就考虑测试方向。客观说说两条路的差异维度底层软件开发汽车电子测试HIL/自动化入门门槛需要硬件和协议基础上手慢上手相对快工具驱动为主核心能力调试、时序、异常处理用例设计、自动化框架、问题定位与硬件距离近经常要动板子和示波器中HIL台架为主职业上限系统架构、技术专家测试架构、质量体系转型灵活性可转系统、架构、算法集成可转质量、项目管理、自动化开发我的观察是测试不是退路但它对问题定位能力的要求同样很高。真正做得好的测试工程师能一眼看出某个现象背后的代码逻辑这种人非常抢手。反过来说只会照用例点按钮的测试岗可替代性也在上升。6.3 给转行和应届的三条实在建议第一先入场再谈方向。汽车电子的技术栈很宽你在门外很难判断自己更喜欢哪一块。先拿到一个跟底层沾边的岗位哪怕是集成、配置、测试进去半年再调整性价比远高于在家纠结一年。第二把能跑通升级成能讲清。我发现很多技术不错的人面试吃亏原因是只能演示结果讲不出取舍。每次做完一个功能强迫自己写一段总结为什么这么设计、还有什么方案、各自的代价是什么。这个习惯坚持一年你的表达水平会明显不一样。第三英文阅读能力是隐形的门槛。芯片参考手册、AUTOSAR规范、功能安全标准几乎全英文而且写得又长又绕。我的经验是不要从头读先看目录和框图定位到相关章节再细读配合具体的寄存器描述交叉验证。一开始一节要读两小时很正常读完十份手册之后速度会明显提上来。我自己带过的几个转行朋友里进步最快的那个有个共同特点他不追求把知识体系学完整而是每学一个模块就找一个能跑起来的最小场景跑通之后立刻写一份自己的笔记然后故意改坏几个参数看系统怎么报错。这种破坏性学习的效率比安安静静看视频高出好几倍。汽车电子这个行业对底层工程师的需求还在只是它不奖励看过很多课的人只奖励亲手把东西跑起来、并且知道它为什么能跑起来的人。
返回列表