海康威视错误代码0xf_海康威视嵌⼊式软件⼯程师笔试题分享
(含解答)
海康威视嵌⼊式驱动⼯程师的题⽬只包含选择题和简答题,没有编程题。毫⽆疑问,C语⾔基础题依然是最多的(c可是嵌⼊式的笔尖),⼜因为是驱动⽅向,所以关于Linux操作系统和底层⽅⾯的题会⽐较多⼀点,但是就题⽬的总体难度⽽⾔,其实并不是特别难。但如果对Linux 和驱动⽅⾯不是很了解的话,会⽐较吃亏。
选择题
1、若有8个待排序元素,采⽤冒泡排序和插⼊排序最⼤时间复杂度分别是()
A.64、24
B.64、64
C.16、64
D.16、16
答案:B
解答:9⼤内部排序的时间复杂度和空间复杂度如下表所⽰:
2、下⾯程序中b的值是()
int a[15] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
int *p = &a[5];
int b = p[7];
A.14
B.13
C.11
D.12
答案:B
3、下⾯哪个命令⽤来卸载⼀个内核模块?
B.delmod
C.unmod
答案:D
4、使⽤快速排序对n个数进⾏排序,其在最佳情况、平均情况、最差情况下的时间复杂度分别是()
A.n、nlogn、nlogn
B.nlogn、nlogn、n^2
C.nlogn、nlogn、nlogn
5、关于互斥锁的如下表述错误的是()。
A.互斥锁的加锁和解锁必须由同⼀线程分别对应使⽤
B.互斥锁只能为0/1
C.互斥锁的解锁过程不需要关⼼顺序,只需要成对使⽤即可
D.互斥锁⽤于线程的互斥
答案:C
解答:互斥量和信号量的区别:
互斥量⽤于线程的互斥,信号量⽤于线程的同步。这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别;互斥量值只能为0/1,信号量值可以为⾮负整数。也就是说,⼀个互斥量只能⽤于⼀个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥和同步。当信号量为单值信号量是,也可以完成⼀个资源的互斥访问;互斥量的加锁和解锁必须由同⼀线程分别对应使⽤,信号量可以由⼀个线程释放,另⼀个线程得到。
6、Linux在某⽬录下查某字符串通常如下哪个指令()
A.find
牙齿松动怎么治最好的办法
C.cat
D.其他都不对
答案:A
解答:Linux的find命令⽤来在指定⽬录下查⽂件
7、多个进程按照顺序逐⼀来访问某个资源,这种制约关系称之为()
A.调度
B.协同
C.互斥
D.同步
答案:D
8、⽀持多道程序的操作系统在运⾏过程中,不断地选择新进程运⾏来实现CPU的共享,但其中不是引起操作系统选择新进程的直接原因的是()
A.运⾏进程要等待某⼀事件发⽣
B.运⾏进程的时间⽚⽤完
C.有新进程进⼊就绪状态
D.运⾏进程出错
答案:C
解答:运⾏进程时间⽚⽤完,进程运⾏出错,进程进⼊阻塞状态(也就是等待某⼀事件发⽣)都会使操作系统发⽣调度,但有新进程进⼊就绪状态不会影响其他进程状态变化
9、操作系统分配资源的基本单位是()
C.线程
D.指令
答案:A
10、执⾏下述的main函数后,输出结果是()
int main()
{
int i = 10;
switch(i) {
case 9:i++;
case 10:i++;
case 11:i++;
default:i++;
}
printf('result= %d\n', i);
return 0;
}
A.12
B.13
C.11口袋妖怪钻石二周目
D.14
答案:B
11、以下能对⼆维数组a进⾏完整初始化的语句是()
A.int a[2][3]=((0,1,2),(3,4,5));
B.int a[2][3]={{0,1,2},{3,4,5}};
C.int a[2][3]={{0,1},{2,3},{4,5}};
D.int a[2][3]={0,1,2,3,4};
答案:B
12、下⾯程序的输出值,正确的是()
送男人什么礼物好#define CALC(x,y) x*y+x
int main()
{
int a = CALC(2 * 3, 3 + 2);
}
A.26
B.30
C.24
D.36
答案:A
13、下⾯程序的输出值,正确的是()
void swap(int *a, int *b) {
int *t;
t = a;
a = b;
b = t;
}
int main()
猪肚鸡的做法{
int x = 1, y = 2;
int *p = &x, *q = &y;清明节诗句大全
swap(p, q);
printf('%d %d\n', *p, *q);
return 0;
}
A.1 1
B.2 2
C.1 2
D.2 1
答案:C
421事件链接解答:本题的swap函数是将形参中的a、b两个指针指向的地址交换了,实参p、q并没有变化。可以⽐对⼀下:swap(&x, &y); //有效果
void swap(int *a, int *b) {
int t;
t = *a;
*a = *b;
14、假如test指针的值为0x12345678,则表达式test_p[1]的指针地址值是() char test[8] = { 0x01,0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
int *test_p = (int*)test;
A.0x12345678
B.0x1234567C
C.0x12345679
D.0x1234567A
答案:B
15、下⾯的C语⾔程序运⾏后,n的值是()
int n = 0;
int f = 17;
n = 4 * f % 3 + 1;
A.3
B.9
C.2
D.0
答案:A
16、下⾯那个操作可以将flag的bit[2](假定0]对应flag的32位)置0()
A.flag|=4
B.flag^=4
C.flag&=~4
D.flag|=~4
答案:C
17、下⾯程序的运⾏结果为()
#define TEST(a,b) a*b
int main()
{
int a = TEST(1 + 2, 3);
printf('result= %d\n', a);
return 0;
}
A.2
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论