《嵌入式LINUX脱产班入学测试题(C语言)》
嵌入式Linux C语言应用开发试题及答案
嵌入式Linux C语言应用开发试题及答案一:选择题1.下面不是对Linux操作系统特点描述的是( B )。
[A] 良好的可移植性[B] 单用户[C] 多用户[D] 多任务2.查看创建目录命令mkdir的帮助文档,可以使用命令( D)。
[A] mkdir –h [B] help mkdir [C] mkdir -p [D] man mkdir3.在C语言中,要求运算数必须是整型的运算符是( D )。
[A] / [B] ++ [C] != [D] %4.C语言程序的三种基本程序是( A )。
[A] 顺序结构,选择结构,循环结构[B] 递归结构,循环结构,转移结构[C] 嵌套结构,递归结构,顺序结构[D] 循环结构,转移结构,顺序结构5.数据结构包含的内容不包括(a)A.线性结构B.存储结构C.逻辑结构D.数据运算6.向一个单链表linklist中的节点t后面插入一个节点p,下列操作正确的是(a)A.p->next = t->next;t->next = p;B.t->next = p->next;t->next = p;C.t->next = p;p->next = t->next;D.t->next = p;t->next = p->next;7.下列哪种打开文件的方式不能修改文件已有的内容( B )[A] r+ [B] r [C] w+ [D] a+8.以下哪种不是进程的状态( B )[A] 运行态[B] 锁定态[C] 睡眠态[D] 停止态9.常用来进行多任务同步的机制是( B )[A]管道[B] 信号量[C]信号[D]共享内存10.下列对于有名管道描述错误的是( D )[A] 可以用于互不相关的进程间[B] 通过路径名来打开有名管道[C] 在文件系统中可见[D] 管道内容保存在磁盘上11.不能被用户进程屏蔽的信号是( B )[A] SIGINT [B] SIGSTOP [C] SIGQUIT [D] SIGILL12.fread()返回值的含义是( B )[A] 读取的字节数[B] 读取的对象数[C] 缓冲区的首地址[D] 013.以下不属于socket的类型的是 ( )。
(完整版)嵌入式Linux笔试题库和答案(新)
嵌入式Linux 笔试题库一.选择题1. Linux 的创始人是谁()A、TurbolinuxB、AT&T Bell LaboratryC、University of Helsinki D 、Linus Torvalds2. 在Linux 中,命令解释器是哪个()A、管道B、分级文件系统C、字符型处理器D、shell3. Linux 安装程序提供了两个引导装载程序()A、GROUP 和LLTOB、DIR 和COIDC、GRUB 和LILOD、以上都不是4. 如果当前目录是/home/sea/china,那么“ china”的父目录是哪个目录()A、/home/seaB、/home/C、/D、/sea5. 在Linux中,要删除abc目录及其全部内容的命令为:()A、rm abcB、rm -r abcC、rmdir abcD、rmdir -r abc6. 假定kernel支持vfat分区,下面哪一个操作是将/dev/hda1分区加载到/win目录?()A、mount -t windows /win /dev/hda1B 、mount -fs=msdos /dev/hda1 /winC、mount -s win /dev/hda1 /winD、mount - vfat /dev/hda1 /win7. 显示用户的主目录的命令是什么()A、echo $HOMEB、echo $USERDIRC、echo $ECHOD、echo $ENV8系统中有用户user1和user2,同属于users组。
在user1用户目录下有一文件file1,它拥有644的权限, 如果user2用户想修改user1用户目录下的file1文件,应拥有()权限。
A、744B、664C、646D、7469.如何查看一个RPM 软件包是否安装()A 、rpm-Vc postfixB 、rpm-q postfixC 、rpm--changelog postfixD 、rpm-q—changelogpostfix10*.在Linux 中,提供TCP/IP 包过滤功能的软件叫什么( C )A、rarpB、routeC、iptablesD、filter11.nfs 服务的配置文件是什么?()/etc/mtab B、/etc/fastboot C、/etc/fstab D、/etc/exports12. 用命令ls -al 显示出文件ff 的描述:-rwxr-xr-- 1 root root 599 Cec 10 17:12 ff 由此可知文件ff 的类型为:()A、普通文件B、硬连接C、目录D符号连接13.Linux 操作系统中的shell 是()A、命令解释器B、程序设计语言C、脚本编辑器D、编译器14.能实现文件系统远程挂载的是()。
c语言嵌入式试题
c语言嵌入式试题以下是一些C语言嵌入式试题:1.以下关于C语言嵌入式编程的说法正确的是?(A)C语言嵌入式编程需要考虑内存管理。
(B)C语言嵌入式编程需要考虑实时性。
(C)C语言嵌入式编程需要考虑硬件资源的利用。
(D)以上都正确。
答案:(D)2.以下关于C语言嵌入式编程的内存管理的说法正确的是?(A)嵌入式系统通常内存有限,因此需要精心管理内存。
(B)嵌入式系统通常使用动态内存分配,因此需要注意内存泄漏。
(C)嵌入式系统通常使用静态内存分配,因此不需要考虑内存泄漏。
(D)以上都正确。
答案:(A)、(B)3.以下关于C语言嵌入式编程的实时性的说法正确的是?(A)嵌入式系统通常需要实时响应外部事件。
(B)嵌入式系统通常需要满足一定的延迟要求。
(C)嵌入式系统通常需要满足一定的吞吐量要求。
(D)以上都正确。
答案:(A)、(B)、(C)4.以下关于C语言嵌入式编程的硬件资源利用的说法正确的是?(A)嵌入式系统通常硬件资源有限,因此需要充分利用硬件资源。
(B)嵌入式系统通常需要考虑功耗,因此需要合理使用硬件资源。
(C)嵌入式系统通常需要考虑成本,因此需要降低硬件资源的使用。
(D)以上都正确。
答案:(A)、(B)、(C)5.以下关于C语言嵌入式编程的常见错误是?(A)使用未定义的变量或函数。
(B)使用不兼容的数据类型。
(C)使用未初始化的变量。
(D)以上都正确。
答案:(A)、(B)、(C)6.以下关于C语言嵌入式编程的常见技巧是?(A)使用宏来实现常见的操作。
(B)使用结构体来封装数据。
(C)使用函数指针来实现灵活的处理。
(D)以上都正确。
答案:(A)、(B)、(C)7.以下关于C语言嵌入式编程的常见工具是?(A)编译器。
(B)链接器。
(C)调试器。
(D)以上都正确。
答案:(A)、(B)、(C)8.以下关于C语言嵌入式编程的常见平台是?(A)ARM。
(B)MIPS。
(C)x86。
(D)以上都正确。
答案:(A)、(B)、(C)9.以下关于C语言嵌入式编程的常见应用是?(A)家用电器。
嵌入式Linux试题
嵌入式Linux系统基础试题库一.填空题:1. 在Linux系统中,以文件方式访问设备。
2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统。
3. Linux文件系统中每个文件用索引节点来标识。
7. 某文件的权限为:drw-r--r--,用数值形式表示该权限,则该八进制数为:644 ,该文件属性是目录。
8. 前台起动的进程使用Ctrl+c终止。
13. 编写的Shell程序运行前必须赋予该脚本文件执行权限。
16. linux内核分为进程调度、内存管理、虚拟文件系统和网络接口、进程间通信这5个子系统。
19. 唯一标识每一个用户的是用户ID 和用户名。
21. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为文件系统。
27. vi编辑器具有三种工作模式:命令模式、输入模式和末行模式。
28. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占 1 位,表示文件类型,第二段占3位,表示文件所有者对该文件的权限。
29. 进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为:运行态、就绪态和等待态(阻塞态)。
38 在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是/etc 。
40. 套接字文件的属性位是s ,管道文件的属性位是p。
41. 结束后台进程的命令是kill。
43. Links分为硬链接和符号链接。
44. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是ps -aux 。
46. 将前一个命令的标准输出作为后一个命令的标准输入,称之为管道。
47. 为脚本程序指定执行权的命令及参数是chmod a+x filename 。
52.在Linux系统中,压缩文件后生成后缀为.gz文件的命令是gzip 。
53. 在用vi编辑文件时,将文件内容存入test.txt文件中,应在末行模式下键入:w test.txt。
嵌入式Linux C语言面试试题
基础试题(C语言)一、ANSI C/C++方面的知识一.1、简答题。
下面的题目必须全部答对才给分(20分):1、如何在C中初始化一个字符数组。
2、如何在C中为一个数组分配空间。
3、如何初始化一个指针数组。
4、如何定义一个有10个元素的整数型指针数组。
5、s[10]的另外一种表达方式是什么。
6、GCC3.2.2版本中支持哪几种编程语言。
7、要使用CHAR_BIT需要包含哪个头文件。
8、对(-1.2345)取整是多少?9、如何让局部变量具有全局生命期。
10、C中的常量字符串应在何时定义?11、如何在两个.c文件中引用对方的变量。
12、使用malloc之前需要做什么准备工作。
13、realloc函数在使用上要注意什么问题。
14、strtok函数在使用上要注意什么问题。
15、gets函数在使用上要注意什么问题。
16、C语言的词法分析在长度规则方面采用的是什么策略?17、a+++++b所表示的是什么意思?有什么问题?18、如何定义Bool变量的TRUE和FALSE的值。
19、C语言的const的含义是什么。
在定义常量时,为什么推荐使用const,而不是#define。
20、C语言的volatile的含义是什么。
使用时会对编译器有什么暗示。
一.2、问答题。
1、-----------------------------------------------------------"匈牙利命名法"有什么优缺点?(2分)2、-----------------------------------------------------------下面x, y, *p的值是多少,有什么问题?(2分)int x, y, z = 2;int *p=&z;x=sizeof*p;y=x/*p; /* x=?, *p=?, y=?, 有什么问题?*/3、-----------------------------------------------------------下面的语句是什么意思?如何声明或定义才使它们更易懂?(10分)int (*foo())();int (*foo())[];int (*foo[])();(*(void(*)())0)();void (*signal(int,void(*)(int)))(int);4、-----------------------------------------------------------本题(2分)。
CC++ linux 嵌入式相关 带答案的笔试题 (2) 汇总
7.C++中为什么用模板类。
答:(1)可用来创建动态增长和减小的数据结构(2)它是类型无关的,因此具有很高的可复用性。
(3)它在编译时而不是运行时检查数据类型,保证了类型安全(4)它是平台无关的,可移植性(5)可用于基本数据类型8.CSingleLock是干什么的。
答:同步多个线程对一个数据类的同时访问12.Linux有内核级线程么。
答:线程通常被定义为一个进程中代码的不同执行路线。
从实现方式上划分,线程有两种类型:“用户级线程”和“内核级线程”。
用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。
这种线程甚至在象DOS 这样的操作系统中也可实现,但线程的调度需要用户程序完成,这有些类似Windows 3.x 的协作式多任务。
另外一种则需要内核的参与,由内核完成线程的调度。
其依赖于操作系统核心,由内核的内部需求进行创建和撤销,这两种模型各有其好处和缺点。
用户线程不需要额外的内核开支,并且用户态线程的实现方式可以被定制或修改以适应特殊应用的要求,但是当一个线程因I/O 而处于等待状态时,整个进程就会被调度程序切换为等待状态,其他线程得不到运行的机会;而内核线程则没有各个限制,有利于发挥多处理器的并发优势,但却占用了更多的系统开支。
Windows NT和OS/2支持内核线程。
Linux 支持内核级的多线程14.使用线程是如何防止出现大的波峰。
答:意思是如何防止同时产生大量的线程,方法是使用线程池,线程池具有可以同时提高调度效率和限制资源使用的好处,线程池中的线程达到最大数时,其他线程就会排队等候15函数模板与类模板有什么区别?答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。
22.TCP/IP 建立连接的过程?(3-way shake)答:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
嵌入式系统开发人员C语言测试题编程风格问答填空题
3.2 填空题(267) 根据编码规范,所有代码都应____级以上的warning编译成功。
(268) 根据编码规范,所有的源文件应是可打印的______,在编辑器中定义TAB 键自动用__8个空格代替。
(269) 根据编码规范,文件名和目录的长度不要超过_255____字符。
(270) 头文件应避免被重复引用,应使用_____________预处理块。
(271) 用#include <filename.h> 格式来引用_________________。
(272) 用#include "filename.h" 格式来引用__________________。
(273) 根据编码规范,声明函数原型时给出参数名称和类型,并且与实现此函数时的参数名称、类型保持一致,无参数的函数,用___void___声明。
(274) 根据编码规范,代码文件不要超过______行,一个函数的代码不要超过_53____行, 每行不应超过______个字符。
(275) 一个程序中的空行数目最好占总代码行的_____,注释行数不应少于总代码行的____20_%_。
(276) 目录、文件的命名均不要超过__255___个字符。
3.3 问答与设计(277) 使用goto语句会有什么不良后果?(278) 为什么要尽量避免函数带有"记忆"功能?尽量避免函数带有“记忆”功能。
相同的输入应当产生相同的输出。
带有“记忆”功能的函数,其行为可能是不可预测的,因为它的行为可能取决于某种“记忆状态”。
这样的函数既不易理解又不利于测试和维护。
在C/C++语言中,函数的static 局部变量是函数的“记忆”存储器。
建议尽量少用static 局部变量,除非必需。
(279) 不设计多参数函数的目的是什么?尽量不设计多参数函数,将不使用的参数从接口中去掉,降低接口复杂度,减少函数间接口的复杂度(280) 分别说明extern、static、auto变量的作用域范围。
嵌入式C语言考试试卷
一、填空题20%1、定义int** a[3][4]; 则sizeof(a)为48 。
2、一个完整的编译过程,可分为3个阶段,分别为:编译预处理、编译、链接。
3、内存泄露是指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。
一般我们常说的内存泄漏是指堆内存的泄漏。
4、对于大印第安序(大端)的机器,数据的低字节存放在高地址。
5、在32位系统中,有一个指向某结构体的指针pFunc,其所占内存大小为 4 字节。
6、断言(Assert)是个只有定义了DEBUG 才起作用的宏,如果其参数的计算结果为假(真、假),则中止调用程序的执行。
7、定义一个指向数组的指针pa,该数组具有10个元素,且元素的类型为int。
int (*pa)[10] 。
二、判断题10%1、int型变量占用的数据长度一定是32位。
(×)2、extern关键字用于声明本文件所使用的变量(或函数)在其他文件中定义。
(√)3、void指针也是可以进行自加运算的。
(×)4、对于具有成千上万个源程序的工程,如果修改了其中一个头文件,则需要对所有的源文件进行重新编译。
(×)5、程序员除了可以在全局数据区(静态区)、堆栈上获得存储空间,还可以在中断向量区随意获取存储空间。
(×)6、在差错处理时,忘了释放已分配的动态存储空间,容易造成内存泄露。
(√)7、在中断服务程序(ISR)中,要格外小心浮点运算的处理,有可能带来执行速度的不确定性。
(√)8、程序员无法对分配在寄存器中的临时变量进行访问。
(×)9、volatile可以用于修饰用以访问硬件寄存器的指针。
(√)10、函数指针可以用于实现底层驱动的接口。
(√)三、简答题30%1、请简述小端字节序和大端字节序的区别?字节序是否会对程序的可移植性造成影响?(5分)书P132、什么是函数的重入?有哪些情况会造成函数的重入?(5分)函数执行一半时被打断了,在中断处理中又进入了该函数。
嵌入式C语言16道试题
编者按:非常基本的C语言问题, 一个信息类(计算机,资讯工程,电子工程, 通信工程)专业的本科毕业生应该达到的水平。
题目不难,全部都能快速地答完, 当然也需要一定的知识储备。
对于大多数人, 我们预期你可能答错3) 4) 15)题, 所以答错3道以内的, 我们认为你很棒。
答错5道题以内, 我们认为你还不错(你还可能答错第9题)。
如果你有6道以上的题目不能答对,基本上我们都不好说什么了....约定:1) 下面的测试题中, 认为所有必须的头文件都已经正确的包含了2) 数据类型char 一个字节1 byteint 两个字节2 byte (16位系统, 认为整型是2个字节)long int 四个字节4 bytefloat 四个字节4 byetdouble 八个字节8 bytelong double 十个字节10 bytepointer 两个字节2 byte(注意, 16位系统, 地址总线只有16位)第1题:考查对volatile关键字的认识#include<setjmp.h>static jmp_buf buf;main(){volatileint b;b=3;if(setjmp(buf)!=0){printf("%d", b);exit(0);}b=5;longjmp(buf ,1);}请问, 这段程序的输出是(a) 3(b) 5(c) 0(d) 以上均不是第2题:考查类型转换main(){struct node{int a;int b;int c;};struct node s= {3,5,6 };struct node*pt=&s;printf("%d" , *(int*)pt);}这段程序的输出是:(a) 3(b) 5(c) 6(d) 7第3题:考查递归调用int foo (int x ,int n){int val;val=1;if (n>0){if (n%2==1) val= val*x;val= val* foo(x*x , n/2);}return val;}这段代码对x和n完成什么样的功能(操作)?(a) x^n (x的n次幂)(b) x*n(x与n的乘积)(c) n^x(n的x次幂)(d) 以上均不是第4题:考查指针,这道题只适合于那些特别细心且对指针和数组有深入理解的人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) 以上均不是第5题:考查**数组与指针void foo(int [][3]);main(){int a [3][3]= { {1,2,3} , {4,5,6},{7,8,9}};foo(a);printf("%d" , a[2][1]);}void foo(int b[][3]){++ b;b[1][1]=9;}这段程序的输出是:(a) 8(b) 9(c) 7(d)以上均不对第6题:考查逗号表达式main(){int a, b,c, d;a=3;b=5;c=a,b;d=(a,b);printf("c=%d" ,c);printf("d=%d" ,d);}这段程序的输出是:(a) c=3 d=3(b) c=5 d=3(c) c=3 d=5(d) c=5 d=5第7题:考查指针数组main(){int a[][3]= {1,2,3 ,4,5,6};int (*ptr)[3]= a;printf("%d %d", (*ptr)[1], (*ptr)[2]);++ptr;printf("%d %d" , (*ptr)[1], (*ptr)[2]); }这段程序的输出是:(a) 2 3 5 6(b) 2 3 4 5(c) 4 5 0 0(d) 以上均不对第8题:考查函数指针int*f1(void){return(&x);}int*f2(void){int*ptr;*ptr=10;return ptr;}int*f3(void){int*ptr;ptr=(int*) malloc(sizeof(int));return ptr;}上面这3个函数哪一个最可能引起指针方面的问题(a) 只有f3(b) 只有f1 and f3(c) 只有f1 and f2(d) f1 , f2 ,f3第9题:考查自加操作(++)main(){int i=3;int j;j=sizeof(++i+++i);printf("i=%d j=%d", i ,j);}这段程序的输出是:(b) i=3 j=2(c) i=3 j=4(d) i=3 j=6第10题:考查形式参数, 实际参数, 指针和数组void f1(int*,int);void f2(int*,int);void(*p[2]) (int*,int);main(){int a;int b;p[0]= f1;p[1]= f2;a=3;b=5;p[0](&a, b);printf("%d\t %d\t", a, b);p[1](&a, b);printf("%d\t %d\t", a, b);}void f1(int* p ,int q){int tmp;tmp=*p;*p= q;q= tmp;}void f2(int* p ,int q){int tmp;*p= q;q= tmp;}这段程序的输出是:(a) 5 5 5 5(b) 3 5 3 5(c) 5 3 5 3(d) 3 3 3 3第11题:考查自减操作(--)void e(int );main(){int a;a=3;e(a);}void e(int n){if(n>0){e(--n);printf("%d", n);e(--n);}}这段程序的输出是:(a) 0 1 2 0(b) 0 1 2 1(c) 1 2 0 1(d) 0 2 1 1第12题:考查typedef类型定义,函数指针typedef int (*test) ( float * , float*)test tmp;tmp 的类型是(a) 函数的指针, 该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments)Pointer to function of having two arguments that is pointer to float(b) 整型(c) 函数的指针, 该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments),并且函数的返回值类型是整型Pointer to function having two argument that is pointer to float and return int(d) 以上都不是第13题:数组与指针的区别与联系main(){char p;char buf[10]={1,2,3,4,5,6,9,8};p= (buf+1)[5];printf("%d" , p);}这段程序的输出是:(a) 5(b) 6(c) 9(d) 以上都不对第14题:考查指针数组的指针void f(char**);main(){char* argv[]= {"ab" ,"cd" ,"ef" ,"gh","ij" ,"kl" };f( argv );}void f(char**p ){char* t;t= (p+=sizeof(int))[-1];printf("%s" , t);}这段程序的输出是:(a) ab(b) cd(c) ef(d) gh第15题:此题考查的是C的变长参数,就像标准函数库里printf()那样,这个话题一般国内大学课堂是不会讲到的,不会情有可原#include<stdarg.h>int ripple (int , );main(){int num;num= ripple (3,5,7);printf("%d" , num);}int ripple (int n, ){int i , j;int k;va_list p;k=0;j=1;va_start(p, n);for (; j<n;++j){i= va_arg(p ,int);for (; i; i&=i-1 )++k;}return k;}这段程序的输出是:(a) 7(b) 6(c) 5(d) 3第16题:考查静态变量的知识int counter (int i){staticint count=0;count= count+i;return (count );}main(){int i , j;for (i=0; i<=5; i++)j= counter(i);}本程序执行到最后,j的值是:(a) 10(b) 15(c) 6(d) 7详细参考答案第1题: (b)volatile字面意思是易于挥发的。
嵌入式系统开发人员C语言测试题内存管理
9.1 填空题(768) 下面程序的输出是_____,为什么?char *ptr;if ((ptr = (char *)malloc(0)) == NULL){puts("Got a null pointer");}else{puts("Got a valid pointer");}(769) 以下程序运行后的输出结果是______ 。
main(){char m;m='B'+32; printf("%c\n",m);}已有定义如下:struct node{int data;struct node *next;} *p;以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。
请填空。
p = (struct node *)malloc(________);(770) 在绝对地址0xXXXXXXXX上写入字符’a’的语句是___________。
unsigned char *p = (unsigned char *)0xF000FF00;*p = ‘a’;9.2 问答与设计(771) 对下面程序段进行解释:typedef void (*lpFunction)();lpFunction lpReset = (lpFunction)0xF000FFF0;lpReset();(772) 结合编译优化原理,指出下面程序存在的问题并修改。
int a,b,c;a = inWord(0x100); // 读取I/O空间0x100端口的内容存入a变量b = a;a = inWord (0x100); // 再次读取I/O空间0x100端口的内容存入a变量c = a;(773) 以下为常见的内存错误,请分别给出解决措施:a. 内存分配未成功,却使用了它;b. 内存分配虽然成功,但是尚未初始化就引用它;c. 忘记了释放内存,造成内存泄露;d. 内存释放成功,却继续使用它。
嵌入式linux c开发常见笔试题目
嵌入式linux c开发常见笔试题目嵌入式Linux C开发是一个广泛应用于各种嵌入式设备的技术领域,也是许多企业在招聘时重点考察的技能。
在笔试中,考察的内容通常包括C语言基础、嵌入式系统知识、Linux系统编程等方面。
以下是一些常见的嵌入式Linux C开发笔试题目,供大家参考。
1. C语言基础在嵌入式Linux C开发中,对C语言的熟练掌握是非常重要的。
下面是一些与C语言基础相关的题目:1.1 请写出C语言中的数据类型,并解释其含义。
1.2 请解释C语言中的指针,并写出指针的声明、赋值和使用的例子。
1.3 请解释C语言中的结构体,并写出结构体的定义和使用的例子。
2. 嵌入式系统知识嵌入式系统是指在限定的资源和空间中运行的计算机系统,对于嵌入式Linux C开发来说,对嵌入式系统的了解是必不可少的。
下面是一些与嵌入式系统知识相关的题目:2.1 请解释嵌入式系统的特点,并举例说明。
2.2 请简要解释Linux内核的作用,并说明为什么在嵌入式系统中常使用Linux内核。
2.3 请解释交叉编译的概念,并说明为什么在嵌入式Linux C开发中常使用交叉编译。
3. Linux系统编程Linux系统编程是指在Linux系统上进行程序开发和调试的技术。
对于嵌入式Linux C开发者来说,熟悉Linux系统编程是必备的技能。
下面是一些与Linux系统编程相关的题目:3.1 请解释Linux系统中的进程和线程,并说明它们的区别和联系。
3.2 请解释Linux文件系统的层次结构,并说明每个层次的作用。
3.3 请解释Linux中的系统调用,并举例说明几个常用的系统调用。
4. 嵌入式Linux应用开发嵌入式Linux应用开发是指在嵌入式Linux系统上进行应用程序开发的技术。
下面是一些与嵌入式Linux应用开发相关的题目:4.1 请编写一个在嵌入式Linux系统上运行的Hello World程序。
4.2 请解释Linux设备驱动程序的概念,并说明为什么在嵌入式Linux应用开发中常涉及到设备驱动程序。
嵌入式C语言16道试题
编者按:非常基本的C语言问题, 一个信息类(计算机,资讯工程,电子工程, 通信工程)专业的本科毕业生应该达到的水平。
题目不难,全部都能快速地答完, 当然也需要一定的知识储备。
对于大多数人, 我们预期你可能答错3) 4) 15)题, 所以答错3道以内的, 我们认为你很棒。
答错5道题以内, 我们认为你还不错(你还可能答错第9题)。
如果你有6道以上的题目不能答对,基本上我们都不好说什么了....约定:1) 下面的测试题中, 认为所有必须的头文件都已经正确的包含了2) 数据类型char 一个字节1 byteint 两个字节2 byte (16位系统, 认为整型是2个字节)long int 四个字节4 bytefloat 四个字节4 byetdouble 八个字节8 bytelong double 十个字节10 bytepointer 两个字节2 byte(注意, 16位系统, 地址总线只有16位)第1题:考查对volatile关键字的认识#include<setjmp.h>static jmp_buf buf;main(){volatile int b;b =3;if(setjmp(buf)!=0){printf("%d ", b);exit(0);}b=5;longjmp(buf , 1);} 请问, 这段程序的输出是(a) 3(b) 5(c) 0(d) 以上均不是第2题:考查类型转换main(){struct node{int a;int b;int c;};struct node s= { 3, 5,6 }; struct node *pt = &s;printf("%d" , *(int*)pt);}这段程序的输出是:(a) 3(b) 5(c) 6(d) 7第3题:考查递归调用int foo ( int x , int n){int val;val =1;if (n>0){if (n%2 == 1) val = val *x; val = val * foo(x*x , n/2); }return val;}这段代码对x和n完成什么样的功能(操作)?(a) x^n (x的n次幂)(b) x*n(x与n的乘积)(c) n^x(n的x次幂)(d) 以上均不是第4题:考查指针,这道题只适合于那些特别细心且对指针和数组有深入理解的人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) 以上均不是第5题:考查多维数组与指针void foo(int [][3]);main(){int a [3][3]= { { 1,2,3} , { 4,5,6},{7,8, 9}};foo(a);printf("%d" , a[2][1]);}void foo(int b[][3]){++ b;b[1][1] =9;}这段程序的输出是:(a) 8(b) 9 (c) 7(d)以上均不对第6题:考查逗号表达式main(){int a, b,c, d;a=3;b=5;c=a,b;d=(a,b);printf("c=%d" ,c);printf("d=%d" ,d);}这段程序的输出是:(a) c=3 d=3(b) c=5 d=3(c) c=3 d=5(d) c=5 d=5第7题:考查指针数组main(){int a[][3] = { 1,2,3 ,4,5,6};int (*ptr)[3] = a;printf("%d %d ", (*ptr)[1], (*ptr)[2]);++ptr;printf("%d %d" , (*ptr)[1], (*ptr)[2]); }这段程序的输出是:(a) 2 3 5 6(b) 2 3 4 5(c) 4 5 0 0(d) 以上均不对第8题:考查函数指针int *f1(void){int x =10;return(&x);}int *f2(void){int*ptr;*ptr =10;return ptr;}int *f3(void){int *ptr;ptr=(int*) malloc(sizeof(int));return ptr;}上面这3个函数哪一个最可能引起指针方面的问题(a) 只有f3(b) 只有f1 and f3(c) 只有f1 and f2(d) f1 , f2 ,f3第9题:考查自加操作(++)main(){int i=3;int j;j = sizeof(++i+ ++i);printf("i=%d j=%d", i ,j);}这段程序的输出是:(a) i=4 j=2(b) i=3 j=2 (c) i=3 j=4(d) i=3 j=6第10题:考查形式参数, 实际参数, 指针和数组void f1(int *, int);void f2(int *, int);void(*p[2]) (int *, int);main(){int a;int b;p[0] = f1;p[1] = f2;a=3;b=5;p[0](&a, b);printf("%d\t %d\t", a, b);p[1](&a, b);printf("%d\t %d\t", a, b);}void f1(int* p , int q){int tmp;tmp =*p;*p = q;q= tmp;}void f2(int* p , int q){int tmp;tmp =*p;*p = q;q= tmp;}这段程序的输出是:(a) 5 5 5 5(b) 3 5 3 5(c) 5 3 5 3(d) 3 3 3 3第11题:考查自减操作(--)void e(int );main(){int a;a=3;e(a);}void e(int n){if(n>0){e(--n);printf("%d", n);e(--n);}}这段程序的输出是:(a) 0 1 2 0(b) 0 1 2 1(c) 1 2 0 1(d) 0 2 1 1第12题:考查typedef类型定义,函数指针typedef int (*test) ( float * , float*)test tmp;tmp 的类型是(a) 函数的指针, 该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments)Pointer to function of having two arguments that is pointer to float(b) 整型(c) 函数的指针, 该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments),并且函数的返回值类型是整型Pointer to function having two argument that is pointer to float and return int(d) 以上都不是第13题:数组与指针的区别与联系main(){char p;char buf[10] ={ 1,2,3,4,5,6,9,8};p = (buf+1)[5];printf("%d" , p);}这段程序的输出是:(a) 5(b) 6(c) 9(d) 以上都不对第14题:考查指针数组的指针void f(char**);main(){char * argv[] = { "ab" ,"cd" , "ef" ,"gh", "ij" ,"kl" };f( argv );}void f( char **p ){char* t;t= (p+= sizeof(int))[-1];printf( "%s" , t);}这段程序的输出是:(a) ab(b) cd(c) ef (d) gh第15题:此题考查的是C 的变长参数,就像标准函数库里printf()那样,这个话题一般国内大学课堂是不会讲到的,不会情有可原 #include <stdarg.h> int ripple ( int , );main() {int num;num = ripple ( 3, 5,7); printf( " %d" , num); }int ripple (int n, ) {int i , j; int k; va_list p; k= 0; j = 1;va_start(p, n);for (; j<n; ++j) {i = va_arg(p , int ); for (; i; i &=i-1 ) ++k; } return k; }这段程序的输出是: (a) 7 (b) 6 (c) 5 (d) 3第16题:考查静态变量的知识 int counter (int i) {static int count =0; count = count +i; return (count ); } main() {int i , j;for (i=0; i <=5; i++) j = counter(i); }本程序执行到最后,j 的值是: (a) 10 (b) 15 (c) 6 (d) 7详细参考答案 第1题: (b)volatile 字面意思是易于挥发的。
成都亚嵌入学测试题V3.0
亚嵌教育成都中心嵌入式LINUX系统应用开发(就业)班入学测试题(版本:V3.0)第一部分C语言与数据结构1, 一个C语言程序总是从哪里开始执行的?2,请说出如下语句块的意思:struct student {Int stuno; // 学号Char name[32]; // 姓名}Struct student stu[32];3,以下为linux下的32位C程序,请计算sizeof的值(多题)题1char str[] = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) =sizeof ( p ) =sizeof ( n ) =题2void *p = malloc( 100 );请计算sizeof ( p ) =4、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?5、关键字const有什么作用?以下的声明是什么意思?const int a;int const a;const int *a;int * const a;int const * a const;6、给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。
在以上两个操作中,要保持其它位不变。
7、C程序的内存布局由哪几个段组成?每个段都起什么作用?8、说出下面各语句的含义:typedef int (*SIG)(); //?____________________typedef void (* SIGARG)(); //?____________________SIG signal(int ,SIGARG); //?____________________9,编写strcpy函数已知strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest是目的字符串,strSrc是源字符串。
Linux及C考试题附答案
华清远见嵌入式学院《Linux及C》考试题(A卷)1-5 CBCDB6-10 DBADD11-15 CCCAA16-20 C ADD C D A21-23 DBA一、选择题(23题,每空2分,共46分)1.常见的Linux发行版本有很多,下面不是Linux发行版本的是( C)。
[A] Red Hat Linux [B] Ubuntu Linux [C] unix [D] 红旗2.下面不是对Linux操作系统特点描述的是( B )。
[A] 良好的可移植性[B] 稳定性低[C] 多用户[D] 多任务3.嵌套创建目录的命令可以使用( C )。
[A] mkdir –h [B] help mkdir [C] mkdir -p [D] man mkdir4.假设目录中存在若干文件(num表示文件编号,1~8),使用以下( D )通配符可以挑选出其中的编号为1、2、3、5、6、7的文件。
[A] file_*.txt [B] flie_?.txt [C] file_[1-7].txt [D] file_[^48].txt5.文件权限r-x-w-r--对应的八进制表示形式为( B )[A] 0536 [B] 0524 [C] 0656 [D] 05346.目前流行的两种软件包管理机制,Debian使用( D )软件包。
[A] zip [B] rpm [C] tar [D] deb7.下述程序第二次的输出结果为( B )。
int main(void){extern int a;int b=0;static int c;a+=3;other();b+=3;other();}int a=5;other(){int b=3;static int c=2;a+=5; b+=5; c+=5;printf("%d,%d,%d\n",a,b,c);c=b;}[A] 13,0,13[B] 18,8,13 [C] 13,8,13[D] 18,8,08.C语言程序的三种基本程序是( A )。
嵌入式系统开发人员C语言测试题选择题
3.1 选择题(221)请选出可用作C语言用户标识符的一组标识符____a. Void define WORDb. a3_b3 _123 IFc. For -abc Cased. 2a Do sizeof(222)请选出正确的标识符编号____a. Hot_dogb. $z^**c. cat1d. a11e. SUM#f. Dollarg. 2dogh. S_expi. ^pointer(223)下面符合规范的函数原型声明有哪些____。
a. T_S16 CheckData();b. T_S16 CheckData(void)c. T_S16 SetPoint(T_S16, T_S16)d. T_S16 SetPoint(T_S16 nX, T_S16 nY)(224)声明头文件引用时,幸免使用绝对路径,要使用相对路径。
以下符合规范的头文件引用有哪些______。
a. #include "c:\switch\inc\def.inc";b. #include "inc\def.inc"c. #include "def.inc"d. #include "..\def.inc"(225)按照编码规范,头文件由_____组成:a. 头文件开头处的版权和版本声明;b. API函数的调用示例c. 预处理块d. 函数和类结构定义(226)代码文件由_____组成:a. 定义文件开头处的版权和版本声明;b. API函数的调用示例c. 全局变量的声明d. 程序的实现体(包括数据和代码)(227)按照编码规范,符合规范的程序块是____。
a. if(!ValidNi(ni)){…}nRepssnInd=SsnData[index].nRepssnIndex;nRepssnNi=SsnData[index].ni;b. T_S8 *pContext;T_S16 nIndex;T_S32 lCounter;pContext = (T_S8)malloc(sizeof(T_S8)*100);if (pContext == NULL){return FALSE;}c. if (!ValidNi(ni)){…}nRepssnInd = SsnData[index].nRepssnIndex;nRepssnNi = SsnData[index].ni;d. T_S8 *pContext;T_S16 nIndex;T_S32 lCounter;pContext = (T_S8)malloc(sizeof(T_S8)*100);if (NULL == pContext){return FALSE;}(228)以下说法正确的是______。
嵌入式程序员C语言测试题
嵌入式程序员C语言测试题嵌入式程序员C语言测试题C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。
这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。
从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。
这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII值。
这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不是在嵌入式系统上。
如果上述任何问题的答案是"是"的话,那么我知道我得认真考虑我是否应该去做这份工作。
从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,你能了解应试者C语言的水平。
不管怎么样,看一下这人如何回答他不会的问题也是满有趣。
应试者是以好的直觉做出明智的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口呢,还是表现出对问题的真正的好奇心,把这看成学习的机会呢?我发现这些信息与他们的测试成绩一样有用。
有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令人头痛的考题能给正在找工作的人一点帮助。
这些问题都是我这些年实际碰到的。
其中有些题很难,但它们应该都能给你一点启迪。
这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。
为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意思分配分数。
预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
《嵌入式LInux设计与开发》练习题
《嵌入式LInux设计与开发》练习题练习题(一)一、填空题1.嵌入式系统一般包括_____________、嵌入式操作系统和。
2.Arm7内核采用的是体系结构。
3.S3C2410X芯片包含通道PWM定时器和____________通道内部计时器。
4.gcc的编译流程分为预处理、编译、和______________。
5.C语言中的预处理语句是以符号开头的。
6.多任务系统中有3个功能单位:任务、和____________。
二、选择题1.下列操作系统中,具有Windows图形界面的是()A.VxWorks B.QNX C.Windows CE D.Linux 2.使vi编辑器处于可编辑状态的命令是()A.r B.p C.i D.b3.下列选项中,能帮助用户生成makefile的工具是()A.gcc B.autotools C.gdb D.vi4.可以使用TFTP通过网络下载文件的命令是()A.run B.tftpboot C.sleep D.mv5.下列不属于Linux系统中线程的是()A.用户级现程 B.网络级线程 C.轻量级线程 D.内核级线程6.下列选项中,常用于网络中不同机器之间的进程间通信的是()A.套接字 B.管道 C.信号 D.信号量7.使用有关线程操作的函数时必须包含的头文件是()A.pthread.h B.stdio.h C.time.h D.string.h8.TCP/IP参考模型包含几层()A.4 B.5 C.6 D.79.在TCP中,用于发送数据的函数是()A.bind() B.send() C.accept() D.recv()10.下列选项中,不属于Linux系统的设备分类的是()A.字符设备 B.数据设备 C.块设备 D.网络设备三、判断对错1.Arm9采用的是5级指令流水线。
() 2.Vi编辑器有4种模式:标准模式、插入模式、命令行模式和可视模式。
() 3.NFS文件系统的目的是让不同的机器、不同的操作系统之间可以共享文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GEC 嵌入式LINUX就业班入学测试题姓名:__________________ 报名班次:________________ 手机号码:_________________
1.对于一个正常运行的C程序,以下叙述中正确的是:
A)程序的执行总是从main函数开始。
B)程序的执行总是从程序的第一个函数开始。
C)程序的执行总是从最后一个函数开始。
D)程序的执行从哪个函数开始是不确定的。
2.设有定义:
int k = 0;
以下选项的四个表达式中,运算之后k的值不变的是:
A)k++; B) k += 1; C) ++k; D) k+1;
3.以下选项中,当x为大于1的奇数时,值为0的表达式:
A) x % 2 == 1 B) x / 2 C) x % 2 != 0 D) x % 2 == 0
4.以下叙述中正确的是:
A)break语句只能用于switch语句题中。
B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环。
C)break 语句只能用在循环体内和switch语句体内。
D)在循环体内使用break语句和continue语句的作用相同。
5.有以下程序:
int main(void)
{
int k = 5, n = 0;
do {
swith( k)
{
case 1:
case 3: n += 1; break;
default: n = 0; k--;
case 2:
case 4: n += 2; k--; break;
}
printf(“%d”, n);
}while(k > 0 && n < 5);
}
程序运行之后的输出结果是:
A) 235 B) 0235 C) 02356 D) 2345
6.有以下程序:
int main(void)
{
char ch[ ] = “uvwxyz”;
char *p;
p = ch;
printf(“ %c ”, *(p + 5));
}
程序运行之后的输出结果是:
A) z B) 0 C) 元素ch[5]的地址D) 字符y的地址
7.分析下面的代码:
char *a = “hello”;
char *b = “hello”
if(a == b)
printf(“YES”);
else
printf(“NO”);
程序运行之后的输出结果是:
A) YES B) NO C) 跟编译器设置有关D) 程序有语法错误
8.下列叙述错误的是:
A)复合语句中定义的函数只在该复合语句中有效。
B)return( ) 语句中的括号内,可以是变量,常量或者有确定值的表达式。
C)形式参数也是局部变量。
D)主函数中定义的变量在整个程序中都是有效的。
9.假设有以下语句:
char *p[2] = {“abcd”, “ABCD”};
则下面说法正确的是:
A)p是一个数组,里面有2个元素,分别是两个指向“abcd”和“ABCD”的指针。
B)p是一个指针,指向一个包含了两个字符串的数组。
C)p[0]的值是字符串“abcd”的大小。
D)p[1]是一个一维数组,里面放了一个字符串“ABCD”。
10.设整型变量a为5,使b不为2的表达式是:
A) b = a/2; A) b = 6 - (--a); C) b = a % 2; D) b = a>3 ? 2 : 1
11.下面语句不正确的是:
A)int a[5];
B)char b[ ] = {…a‟, …b‟, …c‟};
C)int a[ ] = {2, 3, 4, 5};
D)char b[3 ][ ] = {1, 2, 3, 4, 5};
12.假如有如下定义:char c = 0; 则以下语句不正确的是:
A) c = …\n‟; A) c += 6; C) c = …A‟; D) c = “hello”;
13.以下说法正确是:
A)带参数的宏定义中的参数是有类型的。
B)宏展开将会占用程序的运行时间。
C)可以在一个逻辑行中写多条宏定义命令。
D)一般而言,函数的声明语句可以放在头文件中。
14.C语言中,switch语句后的括号中的表达式的值可以是:
A)整型。
B)整型,字符型,枚举型。
C)整型和字符型。
D)任何类型。
15.若函数的形参为一维数组,则下列说法正确的是:
A)调用时对应的实参必须是一个数组。
B)形参数组的元素个数必须多于实参数组的元素个数。
C)形参数组的元素个数必须等于实参数组的元素个数。
D)该形参实际上是一个指针。