驱动工程师笔试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
驱动工程师笔试题目
1、选择题
1:main()
{ int x=1,y=1;
y=x-- ;
printf( “ %d,%d\n ” ,x,y);
}运行结果为( ) ;
A.0 ,0
B.0 , 1
C.1 ,0
D.1 ,1
2:某文件中定义的静态全局变量(或称静态外部变量)其作用域是( ) A.只限某个函数 B.本文件
C.跨文件
D.不限制作用域
3:设int a[10],*p=a ;则对数组元素的正确引用是( )
A.a[p]
B.p[a]
C.*(p+2)
D.p+2
4:C语言中,系统自动打开的文件是( )
A.二进制文件
B.随机文件
C.非缓冲文件
D.设备文件
5:下列程序的运行结果是( )
main( )
{ int a[][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4],i=2,j=1;
p=a;
printf(″%d\n″,*(*(p+i)+j));
}
A.9
B.11
C.17
D.19
6:在软件生命周期中,下列哪个说法是不准确的?( )
A.软件生命周期分为计划、开发和运行三个阶段
B.在计划阶段要进行问题确认和需求分析
C.在开发后期才能进行编写代码和软件测试
D.在运行阶段主要是进行软件维护
7:下列语句定义整型指针p1、p2,( ) 是正确的。
A.int p1,p2;
B.int *p1,*p2;
C.int *p1,p2;
D.int **p1,p2;
8:下列程序的运行结果是( )
main()
{
int a[5] = {1,2,3,4,5};
int *ptr = (int*)(&a+1);
printf("%d %d" , *(a+1), *(ptr-1) );
}
A. 2 2
B. 2 1
C.2 5
D.以上均不是
2、简答题
8、下面的程序或程序段存在一个错误或不妥处请在其下划一条线,并将改正的内容写到每小题后的空白处
main()
{ char cl,c2;
cl='9';
c2='10';
printf(”cl=%c,c2=%c\n”,c1,c2);
}
9、下面的代码输出是什么,为什么?
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts("> 6") : puts("<= 6");
}
10、中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展―让标准C支持中断。具代表事实是,产生了一个新的关键字__interrupt,下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码,找出错误并改正.
__interrupt double compute_area (double radius)
{
double area = PI * radius * radius;
printf("\nArea = %f", area);
return area;
}
3、内核驱动题
11、请简述arm linux内核启动流程。
12、驱动里面为什么要有并发、互斥的控制?如何实现?举例说明。
13、请简述linux内核终端处理分成上半部分和下半部分的原因,为何要分?如何实现?
4、编程实现题
14、设计并实现一个在linux平台下简单的内存FIFO字符设备驱动,并简述该驱动的验证方法。