嵌入式软件工程师笔试题
嵌入式软件工程师笔试题[小编推荐]
![嵌入式软件工程师笔试题[小编推荐]](https://img.taocdn.com/s3/m/8bb6e95f9a6648d7c1c708a1284ac850ad0204f0.png)
嵌入式软件工程师笔试题[小编推荐]第一篇:嵌入式软件工程师笔试题[小编推荐]1、将一个字符串逆序2、将一个链表逆序3、计算一个字节里(byte)里面有多少bit被置14、搜索给定的字节(byte)5、在一个字符串中找到可能的最长的子字符串6、字符串转换为整数7、整数转换为字符串/** 题目:将一个字符串逆序* 完成时间:2006.9.30深圳极讯网吧* 版权归刘志强所有* 描述:写本程序的目的是希望练一下手,希望下午去面试能成功,不希望国庆节之后再去找工作拉!*/#includeusing namespace std;//#define NULL((void *)0)char * mystrrev(char * const dest,const char * const src){if(dest==NULL && src==NULL)return NULL;char *addr = dest;int val_len = strlen(src);dest[val_len] = '';int i;for(i=0;i{*(dest+i)= *(src+val_len-i-1); }return addr;}main(){char *str=“asdfa”;char *str1=NULL;str1 =(char *)malloc(20);if(str1 == NULL)cout<<“malloc failed”; cout<free(str1);str1=NULL;//杜绝野指针}p=head;q=p->next;while(q!=NULL){temp=q->next;q->next=p;p=q;q=temp;}这样增加个辅助的指针就行乐。
ok 通过编译的代码:#include#include#includetypedef struct List{int data;struct List *next;}List;List *list_create(void){struct List *head,*tail,*p;int e;head=(List *)malloc(sizeof(List));tail=head;printf(“nList Create,input numbers(end of 0):”); scanf(“%d”,&e);while(e){p=(List *)malloc(sizeof(List));p->data=e;tail->next=p;tail=p;scanf(“%d”,&e);}tail->next=NULL;return head;}List *list_reverse(List *head){List *p,*q,*r;p=head;q=p->next;while(q!=NULL){r=q->next;q->next=p;p=q;q=r;}head->next=NULL;head=p;return head;}void main(void){struct List *head,*p;int d;head=list_create();printf(“n”);for(p=head->next;p;p=p->next)printf(“--%d--”,p->data);head=list_reverse(head);printf(“n”);for(p=head;p->next;p=p->next)printf(“--%d--”,p->data);}编写函数数N个BYTE的数据中有多少位是1。
嵌入式工程师笔试试卷及答案

嵌入式工程师笔试试卷及答案在嵌入式系统领域,嵌入式工程师是一种非常重要的职业。
他们需要掌握硬件和软件技能,以及在资源受限的环境下进行开发的技能。
本试卷旨在测试嵌入式工程师的专业知识和技能。
第一部分:选择题这一部分包括5个选择题,每个问题有4个选项,只有一个选项是正确的。
这部分的目的是测试对嵌入式系统的基础知识的掌握。
下列哪个不是嵌入式系统的特点?A. 硬件资源受限B. 实时性要求高C. 软件开发成本低D. 系统可靠性要求高答案:C下列哪个不是嵌入式系统中常用的总线标准?A. USBB. I2CC. RS232D. HDMI答案:D下列哪个不是C语言的关键字?A. switchB. caseC. classD. break答案:C下列哪个不是常用的编译器?A. GCCB. KeilC. IARD. Visual Studio答案:D下列哪个不是常用的调试工具?A. JTAGB. GDBC. SVND. Trace32答案:C第二部分:简答题这一部分包括2个简答题,每个问题需要回答2-3个句子。
这部分的目的是测试对嵌入式系统的基本原理和通信协议的理解。
什么是中断?中断的作用是什么?答:中断是指在CPU运行程序的过程中,由于某些事件的发生,需要立即暂停当前程序的执行,转而去执行另一段代码的一种机制。
中断的作用是提高CPU 的利用率,增强系统的实时性和可靠性,实现CPU与外设的异步通信。
请简述I2C总线的工作原理。
答:I2C总线是一种串行通信协议,通过两根线SCL和SDA实现设备间的通信。
SCL线是时钟线,由主设备控制;SDA线是数据线,用于主设备和从设备之间的数据传输。
在传输数据时,主设备先发送起始信号,然后发送从设备地址和读/写标志,接着发送数据或者请求数据,最后发送停止信号。
从设备在接收到起始信号后,会根据地址来判断是否需要响应主设备的请求。
第三部分:编程题这一部分包括2个编程题,需要在规定的环境下编写代码。
嵌入式软件工程师经典笔试题

预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
4). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。
记住,第一印象很重要。
2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B) (A) : (B))这个测试是为下面的目的而设的:1). 标识#define在宏中应用的基本知识。
这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2). 三重条件操作符的知识。
这个操作符存在C语言中的原因是它使得编译器能产生比if- then-else更优化的代码,了解这个用法是很重要的。
3). 懂得在宏中小心地把参数用括号括起来4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?least = MIN(*p++, b);3. 预处理器标识#error的目的是什么?如果你不知道答案,请看参考文献1。
这问题对区分一个正常的伙计和一个书呆子是很有用的。
只有书呆子才会读C语言课本的附录去找出象这种问题的答案。
当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。
4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?这个问题用几个解决方案。
嵌入式软件工程师笔试题汇总

1、将一个字符串逆序2、将一个链表逆序3、计算一个字节里(byte)里面有多少bit被置14、搜索给定的字节(byte)5、在一个字符串中找到可能的最长的子字符串6、字符串转换为整数7、整数转换为字符串/** 题目:将一个字符串逆序* 完成时间:2006.9.30深圳极讯网吧* 版权归刘志强所有* 描述:写本程序的目的是希望练一下手,希望下午去面试能成功,不希望国庆节之后再去找工作拉!#include <iostream>using namespace std;//#define NULL ((void *)0)char * mystrrev(char * const dest,const char * const src){if (dest==NULL && src==NULL) return NULL;char *addr = dest;int val_len = strlen(src);dest[val_len] = '\0';int i;for (i=0; i<val_len; i++){*(dest+i) = *(src+val_len-i-1); }return addr;}main(){char *str="asdfa";char *str1=NULL;str1 = (char *)malloc(20);if (str1 == NULL)cout<<"malloc failed"; cout<<mystrrev(str1,str); free(str1);str1=NULL;//杜绝野指针}p=head;q=p->next;while(q!=NULL){temp=q->next;q->next=p;p=q;q=temp;}这样增加个辅助的指针就行乐。
ok 通过编译的代码:#include <stdio.h>#include <ctype.h>#include <stdlib.h>typedef struct List{int data;struct List *next;}List;List *list_create(void){struct List *head,*tail,*p;int e;head=(List *)malloc(sizeof(List));tail=head;printf("\nList Create,input numbers(end of 0):"); scanf("%d",&e);while(e){p=(List *)malloc(sizeof(List)); p->data=e;tail->next=p;tail=p;scanf("%d",&e);}tail->next=NULL;return head;}List *list_reverse(List *head) {List *p,*q,*r;p=head;q=p->next;while(q!=NULL){r=q->next;p=q;q=r;}head->next=NULL;head=p;return head;}void main(void){struct List *head,*p;int d;head=list_create();printf("\n");for(p=head->next;p;p=p->next) printf("--%d--",p->data); head=list_reverse(head);for(p=head;p->next;p=p->next)printf("--%d--",p->data);}编写函数数N个BYTE的数据中有多少位是1。
嵌入式软件工程师笔试题目

一、选择题1.在嵌入式系统中,Bootloader的主要作用是:A.提供操作系统的图形界面B.加载并启动操作系统(正确答案)C.管理系统的文件资源D.执行应用程序代码2.下列哪种编程语言常用于嵌入式系统的开发?A.JavaB.PythonC.C/C++(正确答案)D.JavaScript3.嵌入式Linux系统中,用于进程间通信的机制不包括:A.管道(Pipe)B.信号(Signal)C.共享内存(Shared Memory)D.DLL(动态链接库)(正确答案)4.在嵌入式系统开发中,交叉编译是指:A.在目标平台上编译代码以在相同平台上运行B.在一种平台上编译代码以在另一种平台上运行(正确答案)C.使用多种编译器同时编译代码D.编译代码时跳过某些优化步骤5.关于嵌入式系统的中断处理,以下说法错误的是:A.中断是硬件或软件发出的信号,用于请求CPU的注意B.中断向量表用于存储中断服务程序的地址C.中断服务程序是响应中断而执行的代码D.中断处理过程中,CPU不会保存当前正在执行的程序的上下文(正确答案)6.在嵌入式Linux开发中,Makefile文件的主要作用是:A.定义项目的编译规则(正确答案)B.描述项目的文档结构C.存储项目的源代码D.指定项目的版本信息7.下列哪项不是嵌入式系统低功耗设计的方法?A.使用低功耗的硬件组件B.优化软件算法以减少CPU的使用率C.增加系统的时钟频率以提高性能(正确答案)D.在不需要时关闭设备的电源8.关于嵌入式系统的实时性,以下说法正确的是:A.实时系统是指系统能够在任意时间内响应外部事件B.实时系统不需要保证任务在规定的时间内完成(正确答案)【注:此题表述有误,实际上实时系统需要保证任务在规定的时间内完成,但此处按照题目要求标注“正确答案”于错误选项,实际正确选项应为能体现实时系统确保任务按时完成的描述】C.硬实时系统要求所有任务都必须在规定的时间内完成D.软实时系统允许某些任务偶尔错过其截止时间。
嵌入式工程师笔试题

1.在嵌入式系统中,常用于存储启动代码和关键数据的存储器类型是?
A.SRAM
B.DRAM
C.Flash存储器(答案)
D.SDRAM
2.下列哪项不是嵌入式操作系统的特点?
A.实时性强
B.可裁剪
C.资源丰富,占用空间大(答案)
D.可靠性高
3.在嵌入式系统开发中,用于描述硬件设备的结构和功能的语言是?
A.C语言
B.HDL(硬件描述语言)(答案)
C.Java
D.Python
4.下列哪种通信接口在嵌入式系统中常用于低速、短距离的数据传输?
B
B.SPI(答案)
C.Ethernet
D.HDMI
5.嵌入式系统开发中,常用于调试和程序下载的接口是?
A.GPIO
B.UART(答案)
C.I2C
D.PWM
6.下列哪项不是嵌入式系统设计中需要考虑的实时性因素?
A.响应时间
B.吞吐量
C.延迟时间
D.代码美观性(答案)
7.在嵌入式Linux系统中,用于管理系统资源和提供程序运行环境的层是?
A.Bootloader
B.Kernel(答案)
C.Filesystem
D.Shell
8.下列哪种工具不是嵌入式系统开发中常用的交叉编译工具?
A.arm-linux-gcc
B.gcc(答案)
C.arm-none-eabi-gcc
D.x86_64-linux-gnu-gcc。
嵌入式软件 笔试题

嵌入式软件工程师笔试题姓名:得分:一、常识理论题1、简述嵌入式操作系统有哪些,你用过哪几种,简述其特点、优势及劣势?(5分)2、请描述控制及提高嵌入式软件质量有哪些办法,在开发过程中怎么才能保证嵌入式软件的可靠性?(5分)3、你认为在嵌入式开发过程中需要哪些过程控制文档?(5分)4、用变量a给出下面的定义。
(8分)a)一个整型数(An integer)b)一个指向整型数的指针(A pointer to an integer)c)一个指向指针的指针,它指向的指针是指向一个整型数(A pointer to a pointer to aninteger)d)一个有10个整型数的数组(An array of 10 integers)e)一个有10个指针的数组,该指针是指向一个整型数的。
(An array of 10 pointers tointegers)f)一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to afunction that takes an integer as an argument and returns an integer)h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that take an integer argument and return an integer )5、在嵌入式系统中,动态分配内存可能发生的问题是什么?请给出下面这段代码的输出结果。
(10分)char *ptr;if ((ptr = (char *)malloc(0)) ==NULL)puts("Got a null pointer");else puts("Got a valid pointer");6、请解释下面这段语句的意思及区别?(10分)#define dPS struct s *typedef struct s * tPS;dPS p1,p2;tPS p3,p4;7、请解释关键字static、const、volatile各自的含义及作用,请解释下面这个函数有什么错误?(10分)int square(volatile int *ptr){return *ptr * *ptr;}8、请指出下面代码是什么意思,指出其中的错误。
嵌入式软件工程师招聘试题

一、选择题(10×3=30分)1.STM32F103单片机的每个通用I/O端口有个32位的配置寄存器,个32位的数据寄存器,个32位的置位/复位寄存器,个16位的复位寄存器,个32位的锁定寄存器。
答案是()。
(A)2,1,2,1,1 (B)2,2,1,1,1 (C)2,2,2,1,1 (D)2,2,1,2,12. STM32F103单片机的所有GPIO引脚有一个内部微弱的上拉和下拉,当它们被配置为()时可以是激活的或者非激活的。
(A)输入(B)输出(C)推挽(D)开漏3.关于中断嵌套说法正确的是()。
(A)只要响应优先级不一样就有可能发生中断嵌套(B)只要抢占式优先级不一样就有可能发生中断嵌套(C)只有抢占式优先级和响应优先级都不一才有可能发生中断嵌套(D)以上说法都不对4.定时/计数器的定时是指(),定时/计数器的计数是指()。
(A)对时间计数(B)外部事件定时(C)内部时钟计数(D)外部事件计数5.在进行串行通信时,若两机的发送与接收可以同时进行,则称为()。
(A)半双工传送(B)单工传送(C)双工传送(D)全双工传送6.有以下程序#includeint f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s);}int f(int n){ static int a=1;n+=a++;return n;}程序运行以后的输出结果是()。
(A)7 (B)8 (C)9 (D)107.在使用STM32固件库函数编程中以下()定义表示通用推挽输出。
(A)GPIO_Mode_Out_OD(B)GPIO_Mode_AF_PP(C)GPIO_Mode_Out_PP(D)GPIO_Mode_AF_OD8.以下能对一维数组a进行初始化的语句是:()。
(A)int a[5]=(0,1,2,3,4,)(B)inta(5)={}(C)int a[3]={0,1,2}(D)int a{5}={10*1}9.STM32嵌套向量中断控制器(NVIC) 具有个可编程的优先等级,在STM32F103 系列上面,又只有个可屏蔽中断。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
笔试题
1: 设 float a=2, b=4, c=3; ,以下 C 语言表达式与代数式 (a+b)+c 计算结果不一致的是
A.(a+b)*c/2
B.(1/2)*(a+b)*c
C.(a+b)*c*1/2
D.c/2*(a+b)
参考答案: B,因为 a,b,c 三个变量都是浮点数,所以在 B 答案中其结果是 0,因为在计算 1/2 是就是 0,如果改成 1/2.0 就正确了。
2: 为了向二进制文件尾部增加数据,打开文件的方式应采用
A.″ab″
B.″rb+″
C.″wb″
D.″wb+″
参考答案: D
3: 下述程序执行后的输出结果是
#include
main()
{
int x= 'f';
printf( “%c n”, 'a'+(x - ‘a'+1));
}
A.g
B.h
C.i
D.j
参考答案: A
4:C 语言中,下列运算符优先级高的是
A.!
B.%
C.>>
D.= =
参考答案: A
5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。
A.*a
B. a [ 0 ]
C. a
D.a++ 参考答案: D
6: 执行语句“ k=7>>1; ”后,变量 k 的当前值是
A.15
B.31
C. 3
D. 1 参考答案: C
7: 定义函数时,缺省函数的类型声明,则函数类型取缺省类型
A.void
B.char
C.float
D.int 参考答案: D 8: 若 main() 函数带参数,参数个数多是
A.0
B. 1
C. 2
D. 3
参考答案: C 只知道有定义形式 main(int argc,char* argv[]))
9: 若有宏定义: #define MOD(x , y) x%y 则执行以下语句后的输出结果是 int a=13 ,b=94; printf( ″%d n″, MOD(b, a+4));
A. 5
B.7
C.9
D.11
参考答案: B
10: 下列各个错误中,哪一个不属于编译错误
A.改变 x 原值 3 为 5 ,写作“ x==5 ; ”
B.花括号不配对
C.复合语句中的后一条语句后未加分号
D.变量有引用、无定义参考答案: A
11: 下列程序段运行后, x 的值是 ( )
a=1;b=2;x=0;
if(!( — a))x — ;
if(!b)x=7;else ++x;
A.0
B. 3
C. 6
D.7
参考答案: A
12: 设
#define N 3
#define Y(n) ((N+1)*n)
则表达式 2*(N+Y(5+1)) 的值是
A.42
B.48
C.54
D.出错
参考答案: B Y(5+1) 传递过去的应该是 6,而不是简单的把 5+1给替换掉
13: 若定义了 char ch[]={ ″abc 0def ″}, *p=ch; 则执行 printf( ″%c″,*p+4); 语句的输出结果是
A.def
B. d
C. e
D.0
参考答案: C
14: 下列转义字符中错误的是
A.′ 000′
B.′ 14′
C.′ x111′
D.′ 2′
参考答案: C error C2022: ‘273' : too big for character
15: 算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为
A.算术运算、赋值运算、关系运算
B.算术运算、关系运算、赋值运算
C.关系运算、赋值运算、算术运算
D.关系运算、算术运算、赋值运算参考答案: B 16: 设#define N 3
#define Y(n) ((N+1)*n) 则表达式 2*(N+Y(5+1)) 的值是
A.42
B.48
C.54
D.出错
参考答案: B
17: 表达式 strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一个
A.非零整数
B.浮点数
C.0
D.字符参考答案: A 18: 设 struct { short a; char b; float c;
}cs;
则 sizeof(cs) 的值是
A. 4
B. 5
C. 6
D.7 参考答案: D 字节对齐的话应该是 8
19: 若变量已正确定义,表达式 ( j=3 , j++ ) 的值是
A. 3
B. 4
C. 5
D.0 参考答案: A 20:C 语言中运算对象必须是整型的运算符是
A.%
B./
C.!
D.**
参考答案: A 21: 多态类中的虚函数表是 Compile-Time ,还是 Run-Time 时建立的 ? 22:
01 #include
02
03 void main()
04
05 { int c;
06
07 while ((c=getchar())!= ′ \ n ′ )
08
09 switch(c - ′ 2 ′ )
10
11 { case 0:
12
13 case 1:putchar(c+4);break;
14
15 case 2:putchar(c+4);break;
16
17 case 3:putchar(c+3);break;
18
19 default:putchar(c+2);break;
20
21 }
22
23 printf( ″\ n ″ );
24
25 }
运行时输入: 2473 ,输出结果:
参考答案: 6897 VC++6.0 测试过
23:写一语句实现 x是否为 2 的若干次幂的判断。
参考答案: !(X)&(X-1)
24: 如何判别一个数是 unsigned 。
参考答案: 1 #define issignal(x) ((x>=0 && ~x>=0) ? 1:0) // 为 1 是无符号为 0 有符号
25: 已知一个数组 table ,用一个宏定义,求出数据的元素个数。
参考答案: #define NTBL
1 #define NTBL (sizeof(table)/sizeof(table[0]))
26: 最简单的 RS-232 线缆需要几根线?最通用的波特率是多少?最通用的位数是多少?
参考答案: 3 根; 9600 bit/s ;1 bit start ,8 bit data ,1 bit stop 。
27: 请简单描述一下什么是 IIC 总线?标准速率是多少?快速速率是多少?总线设备地址是几位?通信总线有几根,分别是什么?
参考答案:一种芯片之间的通信总线;100 Kbit/s ;400 Kbit/s ;7 bit ;2 根,SDA、SCL 。
28: 请简单描述一下什么是 IIC 总线?标准速率是多少?快速速率是多少?总线设备地址是几位?通信总线有几根,分别是什么?
参考答案:一种芯片之间的通信总线;100 Kbit/s ;400 Kbit/s ;7 bit ;2 根,SDA、SCL 。
29: 请问 SPI 通信总线有几根,分别是什么?
参考答案: 4 根,CS、 MCLK(SCLK)、 MISO(SDI)、 MOS(I SDO)。
30: 请问 USB通信总线的通信速率有几种?分别最大是什么?
参考答案: 4 种;低速: 1.5Mbit/s , 全速: 12Mbit/s , 高速: 480Mbit/s , 超高速: 4.8Gbit/s , 。