联芸科技嵌入式驱动二面
- 轮次
- 二面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 讲一下你实习都做了哪些工作?
- 项目对应的具体业务场景是什么?
- 相关业务的代码逻辑是怎么实现的?
- 讲一个你遇到过的典型问题、印象很深的故障案例?
- 为什么这个问题让你印象深刻?
- 开发的时候组内是怎么配合协作?
- 说一说 STM32 都有哪些硬件资源?
- Flash 和 RAM 里面分别存放什么内容?
- 我们的程序实际运行在哪里?
《参考解析》
-
实习经历要讲到「可追问的颗粒度」:面试官连问业务场景、代码逻辑、故障案例,考的是这段经历是不是你真做的。准备时按「项目背景 → 我负责的模块 → 关键数据结构与调用链 → 我改动的具体函数」组织,每个模块都留一个能展开讲的技术点(中断与 DMA 的配合、状态机的设计、通信协议帧格式、错误处理),避免只讲「用了什么芯片、调通了什么」。
-
故障案例按「现象—假设—验证—根因—修复」讲:先说清现象和影响面(偶发还是必现、上电就挂还是跑一段时间才挂),再讲你列了哪些假设、用什么手段验证(示波器看时序、断点看变量、日志分级、二分定位),最后落到根因与修复,以及后来加了什么防护(超时、校验、看门狗、断言)。面试官追问「为什么印象深刻」时,讲清这次踩坑让你之后改了什么习惯,比讲故障本身更加分。
-
STM32 的硬件资源分三层说:内核层是 Cortex-M 系列内核、NVIC 中断控制器与 SWD/JTAG 调试口;存储层是片上 Flash(放代码与常量)和 SRAM(放运行时数据),部分型号还有 CCM RAM、备份域寄存器和外挂 QSPI/FSMC 存储;外设层包括 GPIO、USART、SPI、I2C、CAN、ADC、DAC、定时器、DMA、RTC、看门狗、USB 等,另外还有时钟树(HSI/HSE 加 PLL,由 RCC 配置)与 AHB/APB 总线矩阵、BOOT 引脚决定的启动方式。答的时候按「内核 + 存储 + 外设 + 时钟」四块归纳,比零散报外设名清楚。
-
Flash 与 RAM 各放什么:Flash 放 .text(机器码)、.rodata(常量、字库、字符串)、中断向量表,以及 .data 段的初值副本;RAM 放 .data 段运行时的副本、.bss(未初始化的全局与静态变量,启动时被清零)、堆和栈。上电后启动文件先把 .data 从 Flash 拷贝到 RAM、把 .bss 清零,再跳进 main——哪些段放哪里由链接脚本决定,所以「变量放哪」这个问题的最终答案在 .ld 文件里。Flash 的取舍是掉电不丢但擦写寿命有限(万次量级)、写前必须按扇区擦除;RAM 快且可无限次读写但掉电即失,频繁改写的参数应该放 EEPROM 或外挂 Flash。
-
程序实际运行在哪里:Cortex-M 的代码是就地执行(XIP),取指通过 I-Code/D-Code 总线直接从 Flash 读,并不是把整个程序搬到 RAM 里跑;运行时变量和栈在 SRAM。需要区分两种特殊情况:一是可以把关键函数或整段代码用 RAM 函数的方式搬到 SRAM 执行,用于降低中断延迟或支持运行中擦写 Flash;二是 bootloader 与应用程序的分区划分,以及向量表重映射(VTOR)决定复位后从哪里取中断向量。