【嵌入式面试题】boss收集的11道,持续更新中
1、是否熟悉 char 类型变量的取值范围?
答:熟悉,通常为 -128 到 127(有符号)或 0 到 255(无符号)。
2、是否了解通过 void* p 传递的 (函数) 参数,如果是字符串,如何在函数内部访问?
答:了解,可将 void* 指针强制转换为 char* 类型后访问。
3、是否知晓 strlen ("hello"), sizeof ("hello") 的值分别是多少?
答:知晓,strlen ("hello") 是 5,sizeof ("hello") 是 6(包含结束符 '\0')。
4、是否了解 #define 和 typedef 的区别?
答:了解,#define 是宏定义,进行文本替换;typedef 用于为类型定义别名,是类型定义。
5、串口的数据帧格式有哪些?
答:了解,通常包括起始位、数据位、奇偶校验位、停止位。
6、是否知晓 dma 的作用,(stm32 mcu 的)dma 的单次模式和循环模式的区别?
答:知晓,DMA 用于在外设和存储器间直接传输数据,减轻 CPU 负担;单次模式传输一次后停止,循环模式会重复传输。
7、是否可以解释 i2c 的连续模式?
答:了解,I2C 连续模式下,主机在读取数据后不发送停止信号,而是继续发送读命令以连续读取数据。
8、是否了解堆和栈的区别?
答:了解,栈由编译器自动分配释放,用于存储局部变量等;堆由程序员手动分配释放,空间较大且分配灵活。
9、是否了解 systic (system tick) 的作用?
答:了解,SysTick 是系统定时器,用于提供统一的时间基准,可用于延时、任务调度等。
10、是否熟悉 freertos 任务调度的机制和策略,可以解释优先级反转的逻辑现象?
答:熟悉,FreeRTOS 基于优先级调度,支持抢占式和时间片轮转;优先级反转是指低优先级任务持有高优先级任务所需资源,导致中优先级任务抢占运行,高优先级任务被阻塞的现象。
11、是否熟悉如何实现 strcpy 的逻辑流程?
答:熟悉,将源字符串的字符逐个复制到目标字符串,直到遇到源字符串的结束符 '\0',并将结束符也复制过去。