影石 - 云台嵌入式 - 笔试
❗❗如果本文对您有帮助,请不要吝啬您的评论、点赞、收藏与小花,这对我非常重要!谢谢!❗❗
本文所涉及的题目均为基于个人学习和理解重新表述的内容,仅供学习交流之用,不代表任何实际考试题目。如有雷同,纯属巧合。
岗位:云台嵌入式工程师-2025校招
题型:10 道选择题,8 道简答题,1 道编程题
1、选择题
1.1
【多选】以下关于DMA的描述哪些是准确的? ==(BCE)==
- 控制器不能独立于 CPU 运行,需要 CPU 提供时钟信号
- DMA 控制器独立于 CPU 进行工作,将输入输出设备的数据直接送到内存,无需 CPU 参与,节省了中断处理的时间
- DMA 总是在数据准备好时立即开始,无论 CPU 状态如何
- 即使启用 DMA,CPU 仍然必须介入,将数据从输入输出设备传送到 DMA 缓冲区
- DMA 传输时,源地址和目标地址内存对齐是为了数据传输的效率和稳定性
解答:
DMA,直接内存读取,独立于 CPU 运行,无需 CPU 提供时钟信号,也无需 CPU 的介入,选项 A、D 错误
1.2
【单选】C++ 中 const
关键词的作用描述不正确的是 ==(D)==
const
函数不会修改类的数据成员const
成员变量不能被修改const
函数只能调用 const 函数const
函数可以调用任意函数
解答:
const
关键词用于修饰常量,不可修改,选项 A 正确
const
函数不能修改类的非 mutable 成员变量,选项 B 正确
const
函数只能调用 const 函数,因为如果调用其他函数,可能会对成员变量产生修改,选项 C 正确,选项 D 错误
1.3
【单选】设有一个空栈,现有输入序列为 1,2,3,4,5
经过 push,push,pop,push,pop,push,pop,push 后,栈还存储什么值? ==(C)==
- 1,3
- 1,2
- 1,5
- 1,4
解答:
1 -> push
2 -> push -> pop -> 2
3 -> push -> pop -> 3
4 -> push -> pop -> 4
5 -> push
1.4
【单选】当需要将一个 GPIO 引脚设置为输出模式时,以下哪个位需要设置为 1 ==(B)==
- 中断使能寄存器(IE)
- 方向控制寄存器(DDR)
- 输入数据寄存器(PIN)
- 输出数据寄存器(OUT)
解答:
IE 用于设置 GPIO 中断是否使能
DDR 用于设置 GPIO 输入/输出
PIN 用于设置输入模式下输入的数据
OUT 用于设置输出模式下输出的数据
1.5
【单选】C 语言中以下错误的表达式为 ==(B)==
struct {
int a;
char b;
}Q, *p=&Q;
Q.a
*p.b
p->a
(*p).b
解答:
结构体对象使用 . 访问成员变量
结构体对象指针使用 -> 访问成员变量
Q 是一个结构体对象,Q.a
,选项 A 正确
p 是一个结构体指针,*p
是 Q ,(*p).b
,p->a
,选项 C、D 正确
.
的优先级高于*
, 因此*p.b
会先进行p.b
导致选项 B 错误
1.6
【单选】执行语句 k=7>>1;
后,变量 k 的当前值是 ==(B)==
- 15
- 3
- 1
- 31
解答:
>>
运算符优先级高于=
7 >> 1
,意味着 7 右移 1 位(相当于除 2),结果为 3
K = 3
1.7
【单选】以下关于数字滤波的作用中,错误的是 ==(A)==
- 增加信号的带宽
- 提取特定频率成分
- 信号重建
- 去除噪声
解答:
数字滤波不能增加信号的带宽
1.8
【单选】函数 fun()
的正确定义方式为 ==(A)==
int main(){
int a[3][4];
fun(a);
return 0;
}
void fun(int p[][4]){}
void fun(int *p[][4]){}
void fun(int *p[4]){}
void fun(int *p[3][4]){}
解答:
观察四个选项不同之处,这道题主要是考察函数参数列表
int a[3][4];
这里 a 应该是一个二维数组指针,类型为int (*)[4]
int p[][4]
类型为int (*)[4]
✅
int *p[][4]
类型为int* (*)[4]
❌
int *p[4]
类型为int **
❌
int *p[3][4]
类型为int* (*)[4]
❌
1.9
【多选】以下关于 RTOS 中优先级翻转描述中,哪些是正确的 ==(AC)==
- 优先级反转问题可以通过优先级继承或优先级上限等方式来解决
- 优先级翻转可以通过使用信号量或互斥锁来避免
- 优先级翻转是指高优先级任务被低优先级任务阻塞的现象
- 优先级翻转可以通过增加任务的优先级来解决
解答:
优先级反转是指高优先级的任务需要等待低优先级的任务释放资源
在 FreeRTOS 中信号量存在优先级翻转的潜在问题,而互斥量在信号量的基础上增加了优先级继承机制
互斥量能够尽量的避免出现优先级翻转的情况,但不能完全杜绝
综上,选项 A、C 正确,选项 B、D 错误
1.10
【单选】适宜采用 inline 定义函数情况是 ==(C)==
- 函数体含有递归语句
- 函数体含有循环语句
- 函数代码少、频繁调用
- 函数代码多、不常调用
2、简答题
2.1
用变量 a 给出下面的定义:
(示例)一个整型数:int a;
- 一个指向整型数的指针:1
- 一个指向指针的的指针,它指向的指针是指向一个整型:2
- 一个有 10 个整型数的数组:3
- 一个有 10 个指针的数组,该指针是指向一个整型:4
- 一个指向有 10 个整型数数组的指针:5
- 一个指向函数的指针,该函数有一个整型参数和一个浮点型参数,并返回一个整型数:6
解答:
int *a;
int **a;
int a[10];
int *a[10];
int (*a)[10];
int (*a)(int , float);
2.2
请使用宏定义,实现一个 FUN(x) 功能,其需求如下
- 当 x<0 时,返回值为 0
- 当 x=0 时,返回值为 1
- 当 x>0 时,返回值为 2
解答:
#define FUN(x) (x)<0?0:(x==0?1:2))
2.3
以下代码的运行结果是
#include <s
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
欢迎来到我的专栏,在这里,我将整理并分享2024年各大企业的真实笔试/面试真题,同时还整理了嵌入式软件相关的八股知识。专栏内容涵盖C/C++基础、嵌软常见通信协议、ARM、FreeRTOS、Linux OS相关问题汇总,希望能帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。