一、 单选题(40分)
1. 以下关于GPU的特点描述不准确的是:
A.GPU无法使用共享内存结构,提高通信速度
B.GPU的并行数据处理可以大幅度提高运算能力
C.GPU使用高速全局内存可以进一步提升运算速度
D.GPU的计算能力比CPU强
2.下列关于linux中epoll接口的描述,正确的是:
A.epoll相比于poll会随着fd的数目增长而降低效率
B.边缘触融发模式(Edge Trigger)模式是epoll缺省的工作方式
C.epoll工作在水平触发模式时如果用户不进行任何操作,该事件并不会丢失
D.在大规模并发服务器场景中需要监听多个socket的时候,选择select比epoll高效
3.和192.168.50.2 Mask 255.255.255.192属于同---网段的主机IP地址是哪个?
A.192.168.50.62
B.192.168.50.63
C.192.168.50.64
D.192.168.50.65
4.下述哪---种指令集属于CISC架构
A.X86
B.ARM
C.MIPS
D.RISC-V
5.在git仓库中管理的项目,文件example.c内容被破坏了,且修改后的文件没有完成提交,如何将其还原至原始版本?
A.git checkout HEAD --example.c
B.git reset --example.c
C.git update example.c
D.git revert example.c
6.RTOS如何保证实时性?
A.通过在任务执行前进行预处理来减少响应时间
B.通过实时任务调度算法来保证任务的截止时间得到满足
C.通过增加内存容量来提高系统性能
D.通过使用高性能硬件确保任务的快速执行
7.在linux操作系统中,内核的物理内存分配的基本方式有哪些?
A.静态分配和动态分配
B.等分配和不等分配
C.高速缓存和主存分配
D.连续分配和非连续分配
8.关于RISC处理器的基本特征描述,哪个不正确?
A.使用大量寄存器,尽量保证上下文切换在寄存器中完成
B.指令长度固定
C.指令意义简单,功能单---
D.采用存取式体系结构,可通过任意指令访存
9.下列代码的输出结果是什么?
cpp
#include <stdio.h>
int main() {
int a[5] ={1,2,3,4,5};
int *p = (int *)(&a+1);
printf("%d%d",*(a+1),*(p-1));
return 0;
}
A .25
B.21
C.15
D.11
10.下列哪个不是C++的特性
A.多态
B.继承
C.所有权
D.封装
11.I2C总线工作在快速模式下传输速率是多少?
A.9600Kbit/s
B.400Kbit/s
C.100Kbit/s
D.1000Kbit/s
12.关于CPU的描述错误的是
A.持续增加流水线深度可以持续改善CPU工作频率
B.运行多进程的Linux必须选用支持MMU的CPU
C.英特尔处理器采用CISC架构
D.下一条指令的地址存储在PC寄存器
13.关于sizeof 和strlen的区别,以下说法错误的是
A.sizeof 的参数可以是数据的类型,也可以是变量,而strlen只能以结尾为'\0'的字符串作参数
B.现有数组char msg[10]= "haha ";那么sizeof(msg)结果为10, strlen(msg)结果为4
C.sizeof 和strien函数都是在运行时才能计算出结果,sizeof 计算的是数据类型占内存的大小,而strlen计算的是字符串实际的长度
D.sizeof是一个操作符,strlen是库函数
14.一个类的友元函数可以访问类的()成员
A.私有成员
B.公有
C.其他选项都正确
D.保护
15.在多核处理器的页式存储管理中,当CPU形成一个有效地址时,要查页表,进行物理地址映射。这一工作是由下面哪项实现的?
A.存储管理进程
B.内存管理的查表程序
C.硬件MMU自动转换
D.操作系统调度
16.指令"ADD RO,R1,R2"的寻址方式为
A.寄存器间接寻址
B.立即寻址
C.寄存器寻址
D.多寄存器寻址
17.如果使用TCP协议做低延迟传输,需要进行内核参数优化,以下说法错误的是?
A.使能net.ipv4.tcp_sack
B.使能net.ipv4.tcp_autocorking
C.使能net.ipv4.tcp_thin_dupack
D.使能net.ipv4.tcp_fack
18.下列汇编指令中不会改变PC寄存器内容的是
A.RET
B.CALL
C.ADD
D.JMP
19.关于线程和进程,以下说法错误的是
A.---个进程可以创建多个线程
B.线程是用户态,进程是内核态
C.进程切换是一个开销很大的操作,线程切换的成本较低
D.进程需要占用系统资源(内存、CPU),线程创建时依赖父进程已经获取的这些系统资源
20.以下关于MIPI总线说法错误的是
A.MIPI总线有低功耗模式
B.MIPI是采用差分信号传输的
C.MIPI是移动图像处理接口(Mobile lmage Processing Interface)
D.MIPI允许多路data lane传输数据
二、多选题(30分)
1.以下属于linux线程状态的是
A.running
B.auto
C.preparing
D.ready
2.下面哪些技术会在程序链接阶段使用?
A.公共子表达式删除
B.反馈式优化
C.指令调度
D.函数内联
3.下面关于C++类的说法,正确的是
A.类的静态成员可以直接访问,无需实例化
B.类的成员变量存在指针类型,可以使用默认生成的拷贝构造函数
C.explicit关键字只对---个实参的构造函数有效
类的成员变量默认是private,成员函数默认是public
4.关于语句,描述正确的是
cpp
typedef int * int_t;
#define int_d int *
A.前者定义了一个新的类型别名,且可以支持类型检查
B.定义容个变量:int_t a,b; int_d c,d;其中a,b,c,d都是int *类型
C.后者只做了符号替换,不做类型检查
D.前者在编译前处理,后者在编译时处理
5.某系列芯片为ARM架构,下列说法正确的是
A.处理器的流水线结构的设计可以使得包括乘法在内的许多指令在单周期内执行
B.在FPU开启的情况下,芯片进行加、减、乘、除四种运算的运算耗时相同
C.ARM 64位指令集下每条指令长度为32bit
D.LR链接寄存器可以用于函数或子程序调用时返回地址的保存
6.在ARM处理器中,以下描述正确的是
A.网数参数超过3个时,前3个参数存储在R0,R1,R2寄存器中,多余的参数存放在堆栈中
B.网数调用时,网数参数传递都存放在寄存器中
C.函数返回值用R0来进行传递
D.函数调用时,RO,R1,R2用来存放前3个函数参数
7.关于c语言中的alloca函数描述正确的是?
void *alloca(unsigned int size);
A.alloca函数与malloc函数---样,也有对应的释放函数
B.申请的空间在stack上,非heap上
C.alloca申请的空间不需要程序员显示释放,会随着函数返回后自动释放
D.在32位机器上,alloca申请到的内存空间首地址必须4byte对齐
8.下面对于低速接口的描述正确的是
A.I2C中START后的第一个字节,前7bit是设备地址,最后一个bit是0为读,是1为写
B.SPI主机要获取从机的一个字节,就需要发送一个空字节来引发从机的传输
C.SPI中,模式0(CPOL=0, CPHA=0),表示SCK在空闲状态下为高电平,数据在SCK上升沿时进行传输,数据在SCK下降沿时进行采样
D.UART可以实现全双工的通讯,常用的波特率为9600、115200
9.下面对于进程间通信的描述错误的是
A.套接字socket可以作为进程间通信方式
B.信号是个计数器,用来控制多个进程对共享资源的访问
C.无名管道是半双工的,且可以在任意的2个进程间使用
D.共享内存---般需要配合信号量进行使用
10.使用共享资源时,为了满足互斥条件,通常有哪些方法?
A.自旋锁
B.原子操作
C.信号量
D.互斥锁
三、判断题(10分)
1.ARM cortex M7处理器上的Armv7E-M架构使用了精简指令集
2.GIT操作可以删除服务器上的历史记录
3.VLIW是在处理器执行阶段指定并行的指令级并行技术
4.RTOS设计更关注的不是高的吞吐量,而是保证任务在特定时间内完成
5.Cache一致性问题是指当有多个Master(如CPU、DMA、PCIE等)访问同---块内存时,由于数据缓存在Cache中,没有更新到实际的物理内存而导致的问题,所以软件不需要参与Cache---致性的维护
6.NEON是一种SIMD(Single Instruction Multiple Data)指令
7.下面关于shared_ptr的使用是否正确
cpp
int* ptr = new int;
std::shared_ptr<int> p1(ptr);
std::shared_ptr<int> p2(ptr);
8.实时操作系统响应中断时,中断函数中的局部变量保存在进入中断前的任务栈中。
9.拥有spin_lock的时候是否可以sleep
10.芯片ADC采样的分辨率越高,精度越高
四、编程题(20分)
1.在无人机系统中,由于飞行安全的需要,需要提示用户及时地更新固件。用户开机后,系统进行自检:如果发现当前日期距离新固件发布时间已超(或等于)30天,用户仍未进行固件更新,则提示用户尽快更新固件。
- 输入描述:输入新固件发布日期release time和当天开机日期current_time,时间是由(year, month, day)三个参数构成;
- 输出描述:如果current_time与release_time的时间差大于等于30天,输出1;小于30天,输出0;时间输入不符合规范(日期不存在或当前时间比固件发布时间还早),则输出-1。
- 样例输入:
2023 5 19
2023 7 19 - 输出样例
1
2.mn的窗口在MN的二维数组中滑动,以左上角为原点,进行窗口滑动,边缘以临近行进行补齐(repeat),滑动步伐k=1,得到每次滑动的最大值,将滑动窗口输出值做直方图统计且排序,分别输出直方图的X和Y值。
-
输入描述:
m(行) *n (列)的滑动窗口(m <=5,n<=5)
M(行) *N(列)的原始矩阵(M<=1000, N<=1000),矩阵中值小于256
滑动步伐k=1
输入顺序描述:
M N m n
M *N矩阵
-
输出描述:
Y:直方图统计纵坐标
排序输出X:直方图统计横坐标
基于x(从小到大)顺字打印输出x和Y值
-
样例输入:
5 5 2 3
1 1 3 4 0
3 3 1 4 4
4 0 3 3 4
1 4 4 2 4
1 1 4 4 3
-
输出样例
2 23
3 4