海康威视嵌入式软件开发工程师(BSP)笔试题(附超详细解答)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、若有8个待排序元素,采用冒泡排序和插入排序最大时间复杂度分别是()。
64、24
64、64
16、64
16、16
KEY:B
解答:9大内部排序的时间复杂度和空间复杂度如下表所示:
O() O()
O() O()
O() O() O() O()
O() O()
O() O()
O() O() O()
O() O() O()
O() O() O()
1.int a[15] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
2.int *p = &a[5];
3.int b = p[7];
14
13
11
12
KEY:B
3、下列代码中数组data最终的数据是哪个()。
1.#define MAX_DATA_SIZE (10)
2.
3.int main()
4.{
5.unsigned int i = 0;
6.unsigned char data[MAX_DATA_SIZE] = { 1,2,3,4,5,6,7,8,9,0 };
7.
8.memcpy(&data[2], data, MAX_DATA_SIZE / 2);
9.
10.return 0;
11.}
1234567890
1212121890
1212345890
其他结果都不对
KEY:D
解答:由于本题中data数组里直接放的是数字,直接强制转化为char类型,按照ASCII码进行查询,显然不会是这些数字了。也就是说,如果改成以下的定义:
unsigned char data[MAX_DATA_SIZE] =
{ '1','2','3','4','5','6','7','8','9','0' };
那么答案就是C了。
4、下面哪个命令用来卸载一个内核模块?
modprobe
delmod
unmod
rmmod
KEY:D
5、使用快速排序对n个数进行排序,其在最佳情况、平均情况、最差情况下的时间复杂度分别是()。
n、nlogn、nlogn
nlogn、nlogn、n^2
nlogn、nlogn、nlogn
n、nlogn、n^2
KEY:B
6、关于互斥锁的如下表述错误的是()。
互斥锁的加锁和解锁必须由同一线程分别对应使用
互斥锁只能为0/1
互斥锁的解锁过程不需要关心顺序,只需要成对使用即可
互斥锁用于线程的互斥
KEY:C
解答:互斥量和信号量的区别:
•互斥量用于线程的互斥,信号量用于线程的同步。这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别;
•互斥量值只能为0/1,信号量值可以为非负整数。也就是说,一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥和同步。当信号量为单值信号量是,也可以完成一个资源的互斥访问;
•互斥量的加锁和解锁必须由同一线程分别对应使用,信号量可以由一个线程释放,另一个线程得到。
这里区分一下互斥和同步:
•互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的;
•同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
参考文章:线程同步(互斥锁与信号量的作用与区别)。
7、Linux在某目录下查找某字符串通常如下哪个指令?
find
grep
cat
其他都不对
KEY:A
解答:Linux的find命令用来在指定目录下查找文件,可以使用-name选项来完成:
1.find /home -name "*.txt"//不忽略大小写
2.find /home -iname "*.txt"//忽略大小写
8、多个进程按照顺序逐一来访问某个资源,这种制约关系称之为()。
调度
协同
互斥
同步
KEY:D
9、支持多道程序的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但其中()不是引起操作系统选择新进程的直接原因。
运行进程要等待某一事件发生
运行进程的时间片用完
有新进程进入就绪状态
运行进程出错
KEY:C
解答:运行进程时间片用完,进程运行出错,运行进程阻塞(也就是等待某一事件发生)都会使操作系统选择新进程,但有新进程进入就绪状态不会影响其他进程状态变化。
10、()是操作系统分配资源的基本单位。
进程
程序
线程
指令
KEY:A
11、执行下述的main函数后,输出结果是多少?
1.int main()
2.{
3.int i = 10;
4.
5.switch(i) {
6.case 9:i++;
7.case 10:i++;
8.case 11:i++;
9.default:i++;
10.}
11.printf("result= %d\n", i);
12.
13.return 0;
14.}
12
13
11
14
KEY:B
12、以下能对二维数组a进行完整初始化的语句是()。int a[2][3]=((0,1,2),(3,4,5));
int a[2][3]={{0,1,2},{3,4,5}};
int a[2][3]={{0,1},{2,3},{4,5}};
int a[2][3]={0,1,2,3,4};
KEY:B