根据面经准备面试第四期-2026经纬恒润嵌入式软开
1.传感器和mcu通信(i2c)
2.gpio设置开漏输出还是推挽输出,为什么设置开漏输出
3.调试i2c遇到什么困难,主机怎么和不同从机通信
4.adc采集多少位12bit参考电压
5.定时器打开的流程
6.spi协议介绍,主从spi通信、除了时钟频率还有哪些要注意
7.tcp哪些特征支持稳定可靠、三次握手、四次挥手,在数据传输过程中、怎么避免丢包
8.多个。c文件需要共同引用一个。h文件,怎么避免重复引用
9.static是否用static修饰函数区别
10.进程间通信有哪些方法,线程间通信
11.volatie
12、memcpy底层怎么实现的
13、进程和线程的区别
14.const和define区别
15.编译四个阶段
16.bss和data区别
17全局变量和局部变量区别
18.堆栈溢出怎么办
19.内联函数
1.传感器和mcu通信(i2c)
通过SCL(时钟线)和SDA(数据线)进行半双工同步通信,支持多从机设备,通过地址寻址。
2.gpio设置开漏输出还是推挽输出,为什么设置开漏输出
开漏输出可避免总线冲突,支持线与功能,适用于I2C等总线协议;推挽输出适用于高速高低电平切换场景。
开漏输出,i2c总线是多主多从架构,有多个器件可能同时拉低sda/scl,
如果用推挽输出,一个器件拉高、一个器件拉低、会造成总线短路,有烧毁风险
开漏输出+上拉电阻,只负责拉低,释放时候交给上拉电阻拉高,保证总线安全
3.调试i2c遇到什么困难,主机怎么和不同从机通信
可能遇到时序冲突或地址错误;主机通过发送不同从机地址(7/10位)选择通信对象。
4.adc采集多少位12bit参考电压
12位分辨率,参考电压通常为MCU供电电压(如3.3V)或外部基准源,决定采集电压范围。
5.定时器打开的流程
配置时钟源→设置分频系数→加载计数值→开启中断(可选)→启动定时器。
1.开启定时器时钟、先打开定时器对应的外设时钟、
2.配置定时器参数、计数模式、向上计数
6.spi协议介绍,主从spi通信、除了时钟频率还有哪些要注意
全双工同步通信,主从模式通过CS片选;除时钟频率外,需注意模式(CPOL/CPHA)、数据位序(MSB/LSB)。
7.tcp哪些特征支持稳定可靠、三次握手、四次挥手,在数据传输过程中、怎么避免丢包
通过三次握手建立连接、四次挥手释放;可靠依赖序列号、确认重传、流量控制和拥塞控制避免丢包。
tcp、传输控制协议、面向连接的可靠的、基于字节流的传输层协议,用于http、ftp
三次握手/四次挥手,保证连接建立与释放的可靠性
序列号和确认号ack,保证数据有序、完整
超时重传,丢包能自动重发
滑动窗口+流量控制,避免接受端被压垮
拥塞控制,慢启动、拥塞避免
避免丢包,协议层面,tcp本身机制,序列号+确认机制,确认丢包时候会重传
超时重传机制
8.多个。c文件需要共同引用一个。h文件,怎么避免重复引用
用ifndef/define/endif,头文件保护,避免重复包含
9.static是否用static修饰函数区别
不加static,函数具有全局可见性,可以被其他。c文件调用,加了static,函数作用域仅限于当前。限制函数作用域为本文件,避免与其他文件同名函数冲突;无static的函数全局可见。c文件,外部不可见
10.进程间通信有哪些方法,线程间通信
进程/线程通信:进程间通信(IPC)包括管道、消息队列、共享内存等;线程间通信可通过全局变量、互斥锁、条件变量等
11.volatie
告知编译器变量可能被意外修改(如硬件寄存器),禁止优化,确保每次访问均从内存读取。
12、memcpy底层怎么实现的
通常按机器字长(如32位)逐字节或块复制数据,可能使用汇编优化效率。
13、进程和线程的区别
进程是资源分配单位,线程是CPU调度单位;同一进程的线程共享内存空间,进程间内存独立。
14.const和define区别
const定义类型安全常量,占用存储空间;define为预处理替换,无类型检查。
15.编译四个阶段
预处理(宏展开)→编译(生成汇编)→汇编(生成目标文件)→链接(合并库及目标文件)。
16.bss和data区别
BSS段存储未初始化全局/静态变量(清零);DATA段存储已初始化全局/静态变量。
17全局变量和局部变量区别
全局变量生命周期为整个程序,存储在静态区;局部变量限于作用域,存储在栈区。
18.堆栈溢出怎么办
检查递归深度/动态分配大小;使用静态分析工具;增加栈空间或改用堆内存。
19.内联函数
编译时将函数体直接嵌入调用处,减少函数调用开销,但可能增加代码体积。
#秋招笔面试记录##面试问题记录#