影石 - 云台嵌入式 - 笔试

❗❗如果本文对您有帮助,请不要吝啬您的评论、点赞、收藏与小花,这对我非常重要!谢谢!❗❗

alt

本文所涉及的题目均为基于个人学习和理解重新表述的内容,仅供学习交流之用,不代表任何实际考试题目。如有雷同,纯属巧合。

岗位:云台嵌入式工程师-2025校招

题型:10 道选择题,8 道简答题,1 道编程题

1、选择题

1.1

【多选】以下关于DMA的描述哪些是准确的? ==(BCE)==

  1. 控制器不能独立于 CPU 运行,需要 CPU 提供时钟信号
  2. DMA 控制器独立于 CPU 进行工作,将输入输出设备的数据直接送到内存,无需 CPU 参与,节省了中断处理的时间
  3. DMA 总是在数据准备好时立即开始,无论 CPU 状态如何
  4. 即使启用 DMA,CPU 仍然必须介入,将数据从输入输出设备传送到 DMA 缓冲区
  5. DMA 传输时,源地址和目标地址内存对齐是为了数据传输的效率和稳定性

解答:

DMA,直接内存读取,独立于 CPU 运行,无需 CPU 提供时钟信号,也无需 CPU 的介入,选项 A、D 错误

1.2

【单选】C++ 中 const 关键词的作用描述不正确的是 ==(D)==

  1. const 函数不会修改类的数据成员
  2. const 成员变量不能被修改
  3. const 函数只能调用 const 函数
  4. 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. 1,3
  2. 1,2
  3. 1,5
  4. 1,4

解答:

1 -> push
2 -> push -> pop -> 2
3 -> push -> pop -> 3
4 -> push -> pop -> 4
5 -> push

1.4

【单选】当需要将一个 GPIO 引脚设置为输出模式时,以下哪个位需要设置为 1 ==(B)==

  1. 中断使能寄存器(IE)
  2. 方向控制寄存器(DDR)
  3. 输入数据寄存器(PIN)
  4. 输出数据寄存器(OUT)

解答:

IE 用于设置 GPIO 中断是否使能
DDR 用于设置 GPIO 输入/输出
PIN 用于设置输入模式下输入的数据
OUT 用于设置输出模式下输出的数据

1.5

【单选】C 语言中以下错误的表达式为 ==(B)==

struct {
	int a;
	char b;
}Q, *p=&Q;
  1. Q.a
  2. *p.b
  3. p->a
  4. (*p).b

解答:

结构体对象使用 . 访问成员变量
结构体对象指针使用 -> 访问成员变量
Q 是一个结构体对象,Q.a,选项 A 正确
p 是一个结构体指针,*p 是 Q ,(*p).bp->a,选项 C、D 正确
. 的优先级高于 * , 因此 *p.b 会先进行 p.b 导致选项 B 错误

1.6

【单选】执行语句 k=7>>1; 后,变量 k 的当前值是 ==(B)==

  1. 15
  2. 3
  3. 1
  4. 31

解答:

>> 运算符优先级高于 =
7 >> 1 ,意味着 7 右移 1 位(相当于除 2),结果为 3
K = 3

1.7

【单选】以下关于数字滤波的作用中,错误的是 ==(A)==

  1. 增加信号的带宽
  2. 提取特定频率成分
  3. 信号重建
  4. 去除噪声

解答:

数字滤波不能增加信号的带宽

1.8

【单选】函数 fun() 的正确定义方式为 ==(A)==

int main(){
	int a[3][4];
	fun(a);
	return 0;
}
  1. void fun(int p[][4]){}
  2. void fun(int *p[][4]){}
  3. void fun(int *p[4]){}
  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)==

  1. 优先级反转问题可以通过优先级继承或优先级上限等方式来解决
  2. 优先级翻转可以通过使用信号量或互斥锁来避免
  3. 优先级翻转是指高优先级任务被低优先级任务阻塞的现象
  4. 优先级翻转可以通过增加任务的优先级来解决

解答:

优先级反转是指高优先级的任务需要等待低优先级的任务释放资源
在 FreeRTOS 中信号量存在优先级翻转的潜在问题,而互斥量在信号量的基础上增加了优先级继承机制
互斥量能够尽量的避免出现优先级翻转的情况,但不能完全杜绝
综上,选项 A、C 正确,选项 B、D 错误

1.10

【单选】适宜采用 inline 定义函数情况是 ==(C)==

  1. 函数体含有递归语句
  2. 函数体含有循环语句
  3. 函数代码少、频繁调用
  4. 函数代码多、不常调用

2、简答题

2.1

用变量 a 给出下面的定义:

(示例)一个整型数:int a;

  1. 一个指向整型数的指针:1
  2. 一个指向指针的的指针,它指向的指针是指向一个整型:2
  3. 一个有 10 个整型数的数组:3
  4. 一个有 10 个指针的数组,该指针是指向一个整型:4
  5. 一个指向有 10 个整型数数组的指针:5
  6. 一个指向函数的指针,该函数有一个整型参数和一个浮点型参数,并返回一个整型数:6

解答:

  1. int *a;
  2. int **a;
  3. int a[10];
  4. int *a[10];
  5. int (*a)[10];
  6. int (*a)(int , float);

2.2

请使用宏定义,实现一个 FUN(x) 功能,其需求如下

  1. 当 x<0 时,返回值为 0
  2. 当 x=0 时,返回值为 1
  3. 当 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相关问题汇总,希望能帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。

全部评论
1.5题目是不是有问题,为啥是*p= &Q?
点赞 回复 分享
发布于 04-03 19:45 广东

相关推荐

评论
5
14
分享

创作者周榜

更多
牛客网
牛客企业服务