您当前的位置:首页 > 电脑百科 > 程序开发 > 程序员

海康威视嵌入式软件工程师笔试题分享(含解答)

时间:2020-06-21 16:42:22  来源:  作者:

说明:本篇文章题库来源于网络,目的在于共同学习,共同进步,知识分享可以通过网络平台不断提高自己

海康威视嵌入式驱动工程师的题目只包含选择题和简答题,没有编程题。毫无疑问,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、下面哪个命令用来卸载一个内核模块?

A.modprobe

B.delmod

C.unmod

D.rmmod

答案:D

4、使用快速排序对n个数进行排序,其在最佳情况、平均情况、最差情况下的时间复杂度分别是()

A.n、nlogn、nlogn

B.nlogn、nlogn、n^2

C.nlogn、nlogn、nlogn

D.n、nlogn、n^2

答案:B

5、关于互斥锁的如下表述错误的是()。

A.互斥锁的加锁和解锁必须由同一线程分别对应使用

B.互斥锁只能为0/1

C.互斥锁的解锁过程不需要关心顺序,只需要成对使用即可

D.互斥锁用于线程的互斥

答案:C

解答:互斥量和信号量的区别:

互斥量用于线程的互斥,信号量用于线程的同步。这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别;互斥量值只能为0/1,信号量值可以为非负整数。也就是说,一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥和同步。当信号量为单值信号量是,也可以完成一个资源的互斥访问;互斥量的加锁和解锁必须由同一线程分别对应使用,信号量可以由一个线程释放,另一个线程得到。

6、Linux在某目录下查找某字符串通常如下哪个指令()

A.find

B.grep

C.cat

D.其他都不对

答案:A

解答:Linux的find命令用来在指定目录下查找文件

7、多个进程按照顺序逐一来访问某个资源,这种制约关系称之为()

A.调度

B.协同

C.互斥

D.同步

答案:D

8、支持多道程序的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但其中不是引起操作系统选择新进程的直接原因的是()

A.运行进程要等待某一事件发生

B.运行进程的时间片用完

C.有新进程进入就绪状态

D.运行进程出错

答案:C

解答:运行进程时间片用完,进程运行出错,进程进入阻塞状态(也就是等待某一事件发生)都会使操作系统发生调度,但有新进程进入就绪状态不会影响其他进程状态变化

9、操作系统分配资源的基本单位是()

A.进程

B.程序

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= %dn", 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);

printf("result= %dn", a);

return 0;

}

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 %dn", *p, *q);

return 0;

}

A.1 1

B.2 2

C.1 2

D.2 1

答案:C

解答:本题的swap函数是将形参中的a、b两个指针指向的地址交换了,实参p、q并没有变化。可以比对一下:

swap(&x, &y); //有效果

void swap(int *a, int *b) {

int t;

t = *a;

*a = *b;

*b = t;

}

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](假定bit[31...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= %dn", a);

return 0;

}

A.2

B.3

C.7

D.9

答案:C

18、对于堆、栈、队列描述错误的是()

A.队列空间缓冲由进程申请,栈的空间缓冲由OS分配

B.堆总是一棵完全二叉树

C.堆的数据类型和队列相似

D.队列先进先出,栈后进先出

答案:B

19、以下对字符数组test赋值方式错误的是()

A.char test[10]; strcpy(test,"test");

B.char test[10]; test="test";

C.char test[]={'t','e','s','t'};

D.char test[10]={'t','e','s','t'};

答案:B

20、可用于中断下半段处理的处理机制有()

A.tasklet

B.工作队列

C.软中断

D.双向链表

答案:ABC

解答:上半部是不能中断的,仅仅是响应中断;下半部是可以中断的。对于适时要求高的,必须放在上半部。下半部的实现主要是通过软中断、tasklet、工作队列来实现的。上半部的功能是响应中断。当中断发生时,它就把设备驱动程序中中断处理例程的下半部挂到设备的下半部执行队列中去,然后继续等待新的中断到来。这样一来,上半部的执行速度就会很快,它就可以接受更多它负责的设备所产生的中断了。上半部之所以快,是因为它是完全屏蔽中断的,如果它没有执行完,其他中断就不能及时地处理,只能等到这个中断处理程序执行完毕以后。所以要尽可能多的对设备产生的中断进行服务和处理,中断处理程序就一定要快;下半部的功能是处理比较复杂的过程。下半部和上半部最大的区别是可中断,而上半部却不可中断。下半部几乎完成了中断处理程序所有的事情,因为上半部只是将下半部排到了它们所负责的设备中断的处理队列中去,然后就不做其它的处理了。下半部所负责的工作一般是查看设备以获得产生中断的事件信息,并根据这些信息(一般通过读设备上的寄存器得来)进行相应的处理。下半部是可中断的,所以在运行期间,如果其它设备产生了中断,这个下半部可以暂时的中断掉,等到那个设备的上半部运行完了,再回头运行这个下半部。

21、有函数fun()定义如下,在main函数调用fun函数执行过程中,使用了哪些函数参数传递方式()

int fun(int a[], short *ptr, int &c){

...

}

A.数组传递

B.指针传递

C.引用传递

D.值传递

答案-:BC

22、关于链表,描述正确的选项有()

A.在运行时可以动态添加

B.物理空间不连续,空间开销更大

C.查找元素不需要顺序查找

D.可在任意节点位置插入元素

答案:ABD

23、对运算符优先级的判断,正确的是()

A.取余运算符%高于加运算符+

B.逻辑与运算符&&高于赋值运算符=

C.数组下标[]高于自增运算符++

D.左移运算符<<高于大于运算符>

答案:ABCD

24、能在Linux内核态执行的是()。

A.缺页中断

B.时钟中断

C.命令解释

D.进程调度

答案:ABD

解答:缺页中断和时钟中断都属于中断,在内核态执行。进程调度属于系统调用,在内核态执行,命令解释程序属于命令接口,在用户态执行。

简答题

1、Linux驱动连接硬件与应用,根据你对驱动加载的理解,回答如下问题:

(1)insmod和modprobe都可以用来加载驱动模块,请描述这两者的差异。

(2)请给出三种以上Linux驱动模块加载失败的可能原因。

解答:modprobe和insmod类似,都是用来动态加载驱动模块的,区别在于modprobe可以解决加载模块时的依赖关系,它是通过/lib/modules/#uname -r/modules.dep(.bb)文件来查找依赖关系的;而insmod不能解决依赖问题;也就是说,如果你确定你要加载的驱动模块不依赖其他驱动模块的话,既可以insmod也可以modprobe,当然insmod可以在任何目录下执行,更方便一些。而如果你要加载的驱动模块还依赖其他ko驱动模块的话,就只能将模块拷贝到上述的特定目录,depmod后再modprobe。

2、设计或开发Linux操作系统的内核时,你会考虑哪些基本的管理模块,并描述其作用。

解答:Linux内核的五大模块:进程调度模块、内存管理模块、文件系统模块、进程间通信模块、网络接口模块。

进程调度模块:用来负责控制进程对CPU 资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU,同时保证内核能及时地执行硬件操作;

内存管理模块:用于确保所有进程能够安全地共享机器主内存区,同时,内存管理模块还支持虚拟内存管理方式,使得Linux 支持进程使用比实际内存空间更多的内存容量。并可以利用文件系统,对暂时不用的内存数据块交换到外部存储设备上去,当需要时再交换回来;

文件系统模块:用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其它操作系统兼容的多种文件系统格式;

进程间通信模块:用于支持多种进程间的信息交换方式;

网络接口模块:提供对多种网络通信标准的访问并支持许多网络硬件。



Tags:软件工程师   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
有一种说法,硅谷程序员是不是收入动则就是年入百万呢?事实上,确实是这样,硅谷程序员和我们国内程序员一样,在美国也属于高收入群体,年入百万属于大概率的事件。大概率到一个什么...【详细内容】
2021-08-11  Tags: 软件工程师  点击:(388)  评论:(0)  加入收藏
存在任何解决实际人类问题的业务。它可能是提高速度,降低成本,提高便利性,增加生活乐趣或使知识触手可及。通常用于解决这些业务问题的技术。但是,为什么设计模式很重要?IT系统的典型挑战是可用性,可伸缩性,弹性,数据管理,性能...【详细内容】
2021-01-14  Tags: 软件工程师  点击:(176)  评论:(0)  加入收藏
谷歌软件工程文化的主要元素之一就是通过设计文档定义软件设计。在开始项目编码工作之前,软件系统或应用程序的作者会创建这些相对非正式的文档。设计文档记录了高级实现策略...【详细内容】
2020-08-26  Tags: 软件工程师  点击:(100)  评论:(0)  加入收藏
您刚刚从大学获得计算机科学或软件工程学位,并且正在寻找职业。您还记得自己喜欢单身汉编写代码,并与好友一起做过一些很棒的项目,然后决定要成为一名开发人员。您开始准备工作...【详细内容】
2020-07-21  Tags: 软件工程师  点击:(78)  评论:(0)  加入收藏
说明:本篇文章题库来源于网络,目的在于共同学习,共同进步,知识分享可以通过网络平台不断提高自己海康威视嵌入式驱动工程师的题目只包含选择题和简答题,没有编程题。毫无疑问,C语...【详细内容】
2020-06-21  Tags: 软件工程师  点击:(687)  评论:(0)  加入收藏
▌简易百科推荐
我 2010 年开始在 Github 上开源自己的代码。在 push 代码之前我根本没想过为什么。只是因为我当时学了 git,而且我又觉得 Github 很方便,可以用来备份自己的代码。而后我就参...【详细内容】
2021-12-28  程序员的喵    Tags:Github   点击:(2)  评论:(0)  加入收藏
JAVA开发工程师(北京)本科 3-5年经验 面议 (招1人)岗位职责:1.负责我行应用系统的设计,完成软件编码工作,负责管理代码设计规范等工作;2.根据应用需求分析说明书,评估需求研发的可行...【详细内容】
2021-12-27  just do丶IT公众号    Tags:国企   点击:(2)  评论:(0)  加入收藏
今天聊聊编程的本质。程序就是数据结构+控制+逻辑,程序员编程工作的本质是翻译,翻译机要来了,程序员怎么办?黑客帝国中的程序黑客帝国4就要上映了,不知道前三部你看懂了么?值得多...【详细内容】
2021-12-17  博士聊IT    Tags:程序员   点击:(9)  评论:(0)  加入收藏
梦醒之后,每个人对于这份职业的未来、互联网行业的未来,以及更重要的,自己的未来都有了更现实的判断 文 | 祝颖丽编辑 | 黄俊杰一个生于 1986 年的人,他所走过的前半生:从出生起,...【详细内容】
2021-12-03    财经杂志  Tags:程序员   点击:(16)  评论:(0)  加入收藏
前些天在头条看到一个八二年的哥们,述说自己找工作屡次被拒的问题,在网上引起了广泛的讨论,这件事给我留下了很深的印象,因为这哥们和我同是程序员,都人到中年,上有老下有小。唯一...【详细内容】
2021-12-01  云南贤哥在深圳    Tags:程序员   点击:(20)  评论:(0)  加入收藏
很多读者都问过一个问题:程序员如何实现高速成长?之前也写过相关的文章,强调的主要是夯实计算机体系基础知识。 再说另一个诀窍:多看经典开源项目,这些项目大多是众多顶尖程序员...【详细内容】
2021-11-30  findyi    Tags:程序员   点击:(15)  评论:(0)  加入收藏
近日,一位45岁的网民在中国政府网留言求职,引发关注。该网民自称是一名软件开发人员,今年45岁,精通各种技术体系,“而我辞职回家半年后再回来寻找工作机会的时候,却发现连个面试...【详细内容】
2021-11-17  郭主任    Tags:程序员   点击:(42)  评论:(0)  加入收藏
即使在安全技术取得进步之后,网络犯罪仍在不断增加。据统计,网络犯罪每分钟给企业造成约 290 万美元的损失。主要是因为新技术不断涌现,难以维护安全。随着网络威胁的增加,网络...【详细内容】
2021-11-04  章大千    Tags:编程语言   点击:(40)  评论:(0)  加入收藏
北漂小伙李强(化名),在北京互联网大厂工作7年,月薪3万,离职回老家开摄影店,亏了200万。李强出生于山西一座名不经传的小城市,互联网专业大学毕业的他,没有听父母的劝言回到家乡考公...【详细内容】
2021-10-29  霸王课  今日头条  Tags:程序员   点击:(53)  评论:(0)  加入收藏
程序员是青春饭,这在国内似乎是公认的。所以很多公司不愿招大龄程序员,很多程序员也“知趣”地及早转型。有的做管理,有的做架构,我还见过改行卖保险的。总之,年龄大了不想敲代码...【详细内容】
2021-10-27  编程的艺术    Tags:   点击:(30)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条