嵌入式工程师笔试题

合集下载

嵌入式软件工程师笔试题目

嵌入式软件工程师笔试题目

1.编写一个函数,判断处理器是使用Big_endian模式(返回0)还是Little_endian模式(返回1)存储数据[cpp]view plaincopyprint?1. i nt checkCPU()2. {3. union w4. {5. int a;6. char b;7. }c;8. c.a = 1;9.10. return (c.b == 1);11. }/*共用体的所有成员都是从地地址开始存放的.2.判断单链表是否存在环形链表问题[cpp]view plaincopyprint?1. b ool IsLoop(node *head,node **start)2. {3. node *p1 = head, *p2 = head;4.5. if(head == NULL || head->next == NULL)6. {7. return false;8. }9. do10. {11. p1 = head->next;12. p2 = head->next->next;13. }while(p2 && p2->next && p1 != p2);14. if(p1 == p2)15. {16. *start = p1;17. return true;18. }19. else20. return false;21. }3.计算一个无符号32位整型(unsigned int)的bit有多少位为1或0 [cpp]view plaincopyprint?1. i nt caculate_bit(unsigned int num)2. {3. unsigned int mask = 1 << 31;4. int n = 0;5. int i;6.7. for(i = 0; i < 32; i++)8. {9. if(num & mask)10. {11. n++;12. }13. num <<= 1;14. }15.16. return n;17. }4.保证malloc和free成对出现[cpp]view plaincopyprint?1. c har * function(void)2. {3. char *p;4. p = (char*)malloc(…);5. if(p==NULL)6. …;7. … /* 一系列针对p 的操作 */8. return p;9. }在某处调用function(),用完function 中动态申请的内存后将其free,如下:char *q = function();…free(q);上述代码明显是不合理的,因为违反了malloc 和free 成对出现的原则,即"谁申请,就由谁释放"原则。

嵌入式软件工程师经典笔试题

嵌入式软件工程师经典笔试题

预处理器(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编写死循环呢?这个问题用几个解决方案。

嵌入式笔试题及答案

嵌入式笔试题及答案

嵌入式笔试题及答案一、单选题(每题2分,共20分)1. 嵌入式系统通常指的是:A. 通用计算机系统B. 专用计算机系统C. 便携式计算机系统D. 网络计算机系统答案:B2. 下列哪个不是嵌入式系统的特点:A. 实时性B. 资源受限C. 可扩展性D. 专用性答案:C3. 在嵌入式系统中,通常使用哪种类型的处理器:A. 通用处理器B. 微处理器C. 数字信号处理器D. 图形处理器答案:B4. 嵌入式系统的开发流程不包括以下哪一项:A. 需求分析B. 系统设计C. 硬件选择D. 软件编程答案:C5. 以下哪个不是嵌入式操作系统的功能:A. 任务调度B. 内存管理C. 文件系统D. 网络通信答案:D6. 在嵌入式系统中,中断服务程序的作用是:A. 执行系统初始化B. 处理系统异常C. 响应外部事件D. 执行系统监控答案:C7. 以下哪个不是嵌入式系统的硬件组成部分:A. 微处理器B. 存储器C. 输入/输出设备D. 操作系统答案:D8. 嵌入式系统中的外设驱动程序的主要功能是:A. 控制外设的电源B. 实现系统与外设的通信C. 管理外设的内存D. 处理外设的错误答案:B9. 在嵌入式系统中,以下哪个不是常用的编程语言:A. C语言B. C++C. JavaD. Assembly答案:C10. 以下哪个不是嵌入式系统的开发工具:A. 编译器B. 调试器C. 仿真器D. 网络浏览器答案:D二、多选题(每题3分,共15分)11. 嵌入式系统的开发需要考虑以下哪些因素:A. 系统性能B. 成本控制C. 功耗管理D. 软件兼容性答案:A, B, C12. 嵌入式系统的软件包括以下哪些部分:A. 引导程序B. 操作系统C. 应用程序D. 驱动程序答案:A, B, C, D13. 嵌入式系统的硬件设计包括以下哪些内容:A. 微处理器选择B. 存储器设计C. 外设接口D. 电源管理答案:A, B, C, D14. 嵌入式系统的调试方法包括:A. 单元测试B. 集成测试C. 系统测试D. 性能测试答案:A, B, C, D15. 嵌入式系统的实时性要求包括:A. 确定性B. 可预测性C. 可重复性D. 可扩展性答案:A, B三、判断题(每题1分,共10分)16. 嵌入式系统总是需要操作系统的支持。

嵌入式工程师岗位笔试题

嵌入式工程师岗位笔试题

嵌入式工程师岗位笔试题1.请解释下列关键字的作用,结合作用域阐述其不同作用。

define和typedef的区别是什么?extern是什么?什么时候使用?关键字static的作用是什么?关键字const有什么含意?关键字volatile有什么含意?并给出三个不同的例子。

2. 如何定义一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数的指针。

3.int a; int *pa; int **pa;a = 0x5a; pa = &a; ppa = &pa; 那么 *ppa等于?3.请指出以下中断服务程序中有几处错误,分别是什么?__interrupt double compute_area (double radius){double area = PI * radius * radius;printf("\nArea = %f", area);return area;}4.请阅读以下代码,找出其中的错误和潜在的隐患,指出并改正或提出意见和建议。

(注:代码本身无实际意义,只是将入口参数ptr所指向的内容通过两个内部缓冲区p和q 复制到局部数组buf[]中,并将该数据的首地址作为返回至传递到函数外)5.阅读下段代码,并在空白处填写正确的代码使得程序的逻辑完整。

6.在嵌入式系统中,操作系统有什么作用?嵌入式操作系统有什么特点?你所知道的有哪些嵌入式操作系统?它们有什么区别?7.什么是单片机的最小系统?请选用一款你熟悉的单片机,画出你的最小系统的结构框图。

8.代码编程题:请编码实现冒泡排序问题或折半查找问题9.方案设计题:现有一个数据采集设备,需要采集半双工总线上的若干设备的设备地址信息,现可通过发送广播指令读取设备地址(总线上设备收到指令后,同时通过总线返回地址信息,造成数据紊乱),在无法单独片选设备以及事先未知设备地址的基础上,如何快速、准确的通过广播指令读取总线上所有设备的地址信息,请提供你的方法。

嵌入式工程师笔试题目

嵌入式工程师笔试题目

嵌入式工程师笔试题目
嵌入式工程师是一个涉及硬件、软件和系统集成的综合性职业,他们负责设计、开发和维护各种嵌入式设备,如智能手机、数码相机、汽车电子系统等。

嵌入式工程师的工作内容十分丰富,下面是一些嵌入式工程师笔试题目,让我们来一起看一看。

1. 请简述你对嵌入式系统的理解,并描述其中的主要应用领域。

2. 请解释一下“中断”的概念和作用,并说明在嵌入式系统中中断的优点和缺点。

3. 请述说并解释以下几种常见总线的工作原理:SPI、I2C、RS232、USB。

4. 请问在嵌入式系统开发中,如何提高系统的可靠性和稳定性?
5. 请列举出你熟悉的嵌入式操作系统,并简单描述它们的特点和应用场景。

6. 请问在开发一个嵌入式系统过程中,会遇到哪些常见的问题,并具体介绍一下如何解决这些问题?
7. 请阐述一下你对嵌入式系统开发中调试和测试的认识,并举例说明你在之前项目中遇到的一个测试问题以及你是如何解决的。

8. 请简述一下关于微控制器和单片机的区别,并说明它们的主要优缺点。

以上就是一些常见的嵌入式工程师笔试题目,通过这些问题的解答,我们可以更好地了解嵌入式工程师的职业特点和工作流程,为我们未来的职业规划提供了一定的参考。

嵌入式工程师笔试题

嵌入式工程师笔试题

嵌入式工程师笔试题姓名:日期:20200421 1、全局变量可不可以定义在被多个.c文件包含的头文件中?为什么?不可以2、头文件中的ifndef/define/endif 的作用?如果变量没有被定义,那么定义此变量,防止重复定义变量3、看门狗有什么作用?防止程序跑飞4、关键字static的作用是什么?类似隐藏1.修饰全局变量,修饰函数,其他文件不可见;静态数据存储区特性2.变量初始化赋值零;3.内存不释放;5、编写程序,统计输入的一行字符串中字母,数字,空格,和其他的字符的数目。

int question9()//题9,自动统计用户输入的空格数、大小写字母数和其他字符数{int ch;int blank=0;int alphabet=0;int other=0;int sum=0;printf("输入信息,统计字符数,当输入完成后按Ctrl+D\n");while(1){ch=getchar();//如果输入没有回车,需按两次Ctrl+Dif(ch == EOF){break;}switch(ch){case ' ':blank++;sum+=1;break;case 'A'...'Z':case 'a'...'z':alphabet++;sum+=1;break;default:other++;sum+=1;}}printf("\n统计输入字符数:%d\n空格数:%d;\n大小写字母数:\%d;\n其他字符数(包括回车和Ctrl+D):%d;\n",sum,blank,alphabet,other); }以前写个就没必要再重写了吧.6、3个变量相互交换数据,a->b,b->c,c->a使用c语言来写实际代码;void swap(int* a,int* b,int* c);int question19()//题19,调用函数交换3个变量的值,简单指针{int a=1;int b=2;int c=3;printf("交换3个值值,简单指针");printf("交换前:a=%d,b=%d,c=%d\n",a,b,c);swap(&a,&b,&c);//&:取址符printf("交换后:a=%d,b=%d,c=%d\n",a,b,c);return 0;}void swap(int* a,int* b,int* c)//交换两个值{int tmp;tmp=*a;//*a 取a的目标*a=*b;*b=*c;*c=tmp;}以前写个就没必要再重写了吧。

嵌入式工程师笔试题目

嵌入式工程师笔试题目

嵌入式工程师笔试题目嵌入式工程师是指具有C/C++语言、汇编语言等基础,熟悉模拟电子技术等硬件知识,了解处理器体系结构,做嵌入式系统设计和开发,包括硬件系统的建立和相关软件开发、移植、调试等工作的人,下面就是小编整理的嵌入式工程师笔试题目,请看:嵌入式工程师笔试题目【1】1、一根金条长31厘米,如果把它切成数段,使其中的一段或几段能够接成长为1到31中任何整数的金条,请问要切几次?A.4B.5C.6D.7参考答案:A2、运行在多核处理器上的Linux环境中,若临界区非常短,且不允许线程上下文切换的情况下,使用下列哪种机制满足上述需求并且性能最好?A.SpinLockB.MutexC.SemaphoreD.Condition variable参考答案:A3、以下程序输出的结果是()#includeint main(){int x=10,y=10;printf("%d %d",x--,--y);}A.10 10B.9 9C.9 10D.10 9参考答案:D4、下面所述步骤中,不是创建进程所必须的步骤是?A.由调度程序为进程分配CPUB.建立一个进程控制块C.为进程分配内存D.将进程控制块链入就绪队列参考答案:A5、下面描述中,表达正确的有()A.公有继承是基类中的public成员在派生类中仍是public的B.公有继承是基类中的private成员在派生类中仍是private的C.公有继承是基类中的protected成员在派生类中仍是protected的D.私有继承是基类中的public成员在派生类中仍是private的参考答案:ACD6、int listen(SOCKET s, int backlog);该函数中第二个参数的含义是?A.是否打开log信息B.是否打开后台log信息C.后台等待连接队列的最大限制值D.后台等待连接队列的最小限制值参考答案:C7、Java程序中的类名称必须与存放该类的文件名相同。

嵌入式工程师笔试题

嵌入式工程师笔试题

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、将一个字符串逆序2、将一个链表逆序3、计算一个字节里(byte)里面有多少bit被置14、搜索给定的字节(byte)5、在一个字符串中找到可能的最长的子字符串6、字符串转换为整数7、整数转换为字符串1、c51单片机的串口异步通信和同步通信的区别,说说他们的优缺点。

2、C51单片机的数据总线和地址总线是如何复用的,说明原理。

3、C51单片机的绝对寻址范围是多少k?4、说明下面的寻址方式(1)MOV A , #30H (2)MOV A,@R0(3)ADD A , R4 (4)MOV A+@DPTR 5、写出下面分别是什么指针?(1)int *a[10]; (2)int (*a)[10];(3)int (*P)(int) ; (4)int (*a[10])(int);6、void swap(int a,int b){int temp;temp = a;a=b;b=temp;}main(void){int x="3",y=4;swap(x,y);}问上面程序执行完后x= ?,y=?7、typedef struct test{int i;short s;char c;union{int a;short b;}}example ;int y ;y = sizeof(example);请问在TC环境下,y=?8、编程实现数组的逆置,例如,“hello,world!”逆置后为“!dlrow,olleh”。

9、你认为嵌入式操作系统包括哪些部分?说说实时操作系统有哪些特点。

10、冯诺依曼结构的计算机由哪几部分组成?11、说说程序,进程,线程的区别。

12、说说你怎样理解程序= 数据+ 结构+ 算法13、根据函数原型编程实现一个数组,按从大到小的冒泡排序。

void tibbule(int a[],int n);//a[]为数组,n为数组长度14、OSI有哪几层?tcp/ip包括哪几层?15、编程实现一个双链表的节点插入和删除。

嵌入式软件 笔试题

嵌入式软件 笔试题

嵌入式软件工程师笔试题姓名:得分:一、常识理论题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、请指出下面代码是什么意思,指出其中的错误。

嵌入式工程师笔试题带答案

嵌入式工程师笔试题带答案

嵌入式工程师笔试题带答案1、将一个字符串逆序2、将一个链表逆序3、计算一个字节里(byte)里面有多少bit被置14、搜索给定的字节(byte)5、在一个字符串中找到可能的最长的子字符串6、字符串转换为整数7、整数转换为字符串/*题目:将一个字符串逆序*/#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] = '\0';int i;for (i=0; i<="" p="">{*(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);< bdsfid="96" p=""></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;}这样增加个辅助的指针就行乐。

嵌入式软件笔试题(含答案)

嵌入式软件笔试题(含答案)
例子:当N =5,打印出下面的图形:
X X X X X
X Y Y Y X
X Y 0 Y X
X Y Y Y X
X X X X X
22:谈谈COM的线程模型。然后讨论进程内/外组件的差别。
23:多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?
参考答案:
虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.
A.15
B.31
C.3
D.1
参考答案:C
7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型
A.void
B.char
C.float
DHale Waihona Puke int 参考答案:D 8:若main()函数带参数,参数个数最多是
A.0
B.1
C.2
D.3
参考答案:C 只知道有定义形式main(int argc,char* argv[]))
#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);语句的输出结果是
(3)将栈B的栈顶元素pop出;这样实现的队列入队和出队的平摊复杂度都还是O(1),
26:写一语句实现x是否为2的若干次幂的判断。

嵌入式工程师笔试题目

嵌入式工程师笔试题目

嵌入式工程师笔试题目嵌入式工程师笔试题目嵌入式工程师是指具有C/C++语言、汇编语言等基础,熟悉模拟电子技术等硬件知识,了解处理器体系结构,做嵌入式系统设计和开发,包括硬件系统的建立和相关软件开发、移植、调试等工作的人,下面就是整理的嵌入式工程师笔试题目,请看:嵌入式工程师笔试题目【1】1、一根金条长31厘米,如果把它切成数段,使其中的一段或几段能够接成长为1到31中任何整数的金条,请问要切几次?A.4B.5C.6D.7参考答案:A2、运行在多核处理器上的Linux环境中,若临界区非常短,且不允许线程上下文切换的情况下,使用下列哪种机制满足上述需求并且性能最好?A.SpinLockB.MutexC.SemaphoreD.Condition variable参考答案:A3、以下程序输出的结果是()#includeint main(){int x=10,y=10;printf("%d %d",x--,--y);}A.10 10B.9 9C.9 10D.10 9参考答案:D4、下面所述步骤中,不是创建进程所必须的步骤是?A.由调度程序为进程分配CPUB.建立一个进程控制块C.为进程分配内存D.将进程控制块链入就绪队列参考答案:A5、下面描述中,表达正确的有()A.公有继承是基类中的public成员在派生类中仍是public的B.公有继承是基类中的'private成员在派生类中仍是private的C.公有继承是基类中的protected成员在派生类中仍是protected的D.私有继承是基类中的public成员在派生类中仍是private的参考答案:ACD6、int listen(SOCKET s, int backlog);该函数中第二个参数的含义是?A.是否打开log信息B.是否打开后台log信息C.后台等待连接队列的最大限制值D.后台等待连接队列的最小限制值参考答案:C7、Java程序中的类名称必须与存放该类的文件名相同。

嵌入式软件工程师笔试题(含答案)

嵌入式软件工程师笔试题(含答案)

嵌入式软件工程师笔试题(含答案)嵌入式软件工程师笔试题(含答案) (2019-09-09 22:23)分类:面试题选择题1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是A.(a+b)*c/2B.(1/2)*(a+b)*cC.(a+b)*c*1/2D.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+″参考答案:D3:下述程序执行后的输出结果是#includemain(){int x='f';printf("%c\n",'a'+(x-'a'+1));}A.gB.hC.iD.j参考答案:A4:C语言中,下列运算符优先级最高的是A.!B.%C.>>D.==参考答案:A5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。

A.*aB.a [ 0 ]C.aD.a++参考答案:D6:执行语句“ k=7>>1; ”后,变量 k 的当前值是A.15B.31C.3D.1参考答案:C7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型 A.voidB.charC.floatD.int参考答案:D8:若main()函数带参数,参数个数最多是A.0B.1C.2D.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.5B.7C.9D.11参考答案:B10:下列各个错误中,哪一个不属于编译错误A.改变 x 原值 3 为 5 ,写作“ x==5 ;”B.花括号不配对C.复合语句中的最后一条语句后未加分号D.变量有引用、无定义参考答案:A11:下列程序段运行后, x 的值是( )a=1;b=2;x=0;if(!( -- a))x -- ;if(!b)x=7;else ++x;A.0B.3C.6D.7参考答案:A12:设#define N 3#define Y(n) ((N+1)*n)则表达式2*(N+Y(5+1))的值是A.42B.48C.54D.出错参考答案:B Y(5+1) 传递过去的应该是6,而不是简单的把5+1给替换掉13:若定义了char ch[]={″abc\0def″},*p=ch;则执行printf(″%c″,*p+4);语句的输出结果是A.defB.dC.eD.0参考答案:C14:下列转义字符中错误的是A.′\000′B.′\14′C.′\x111′D.′\2′参考答案:C error C2022: '273' : too big for character15:算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为A.算术运算、赋值运算、关系运算B.算术运算、关系运算、赋值运算C.关系运算、赋值运算、算术运算D.关系运算、算术运算、赋值运算参考答案:B16:设#define N 3#define Y(n) ((N+1)*n)则表达式2*(N+Y(5+1))的值是A.42B.48C.54D.出错参考答案:B17:表达式strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一个A.非零整数B.浮点数C.0D.字符参考答案: A18:设struct{ short a;char b;float c;}cs;则sizeof(cs)的值是A.4B.5C.6D.7参考答案: D 字节对齐的话应该是819:若变量已正确定义,表达式( j=3 , j++ )的值是A.3B.4C.5D.0参考答案:A20:C 语言中运算对象必须是整型的运算符是A.%B./C.!D.**参考答案:A简答题21:打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,...例子:当N =5,打印出下面的图形:X X X X XX Y Y Y XX Y 0 Y XX Y Y Y XX X X X X22:谈谈COM的线程模型。

嵌入式软件工程师 经典笔试题

嵌入式软件工程师 经典笔试题
(一) 1 什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种 情况下,可以将所有包含文件预编译为一个预编译头。
2 char * const p
char const * p
const char *p 上述三个有什么
6 main() {
int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); } 答案:2 5 分析:*(a+1)就是 a[1],*(ptr-1)就是 a[4],执行结果是 2,5 。&a+1 不是首地址+1, 系统会认为加一个 a 数组的偏移,是偏移了一个数组的大小(本例是 5 个 int) int *ptr=(int *)(&a+1); 则 ptr 实际是&(a[5]),也就是 a+5 原因如下: &a 是数组指针, 其类型为 int (*)[5]; 而指针加 1 要根据指针类型加上一定的值,不同类型的指针+1 之 后增加的大小不同 a 是长度为 5 的 int 数组指针,所以要加 5*sizeof(int) 所以 ptr 实际是 a[5] 但是 prt 与(&a+1)类型是不一样的(这点很重要) 所以 prt-1 只会减去 sizeof(int*)。 a,&a 的地址是一样的,但意思不一样,a 是数组首地址,也就是 a[0] 的地址,&a 是对象(数组)首地址,a+1 是数组下一元素的地址,即 a[1],&a+1 是下一个 对象的地址,即 a[5].

嵌入式软件工程师笔试题(含答案)

嵌入式软件工程师笔试题(含答案)

选择题1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是A.(a+b)*c/2B.(1/2)*(a+b)*cC.(a+b)*c*1/2D.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+″参考答案:D3:下述程序执行后的输出结果是#includemain(){int x='f';printf("%c\n",'a'+(x-'a'+1));}A.gB.hC.iD.j参考答案:A4:C语言中,下列运算符优先级最高的是A.!B.%C.>>D.==参考答案:A5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。

A.*aB.a [ 0 ]C.aD.a++参考答案:D6:执行语句“ k=7>>1; ”后,变量 k 的当前值是A.15B.31C.3D.1参考答案:C7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型A.voidB.charC.floatD.int参考答案:D8:若main()函数带参数,参数个数最多是A.0B.1C.2D.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.5B.7C.9D.11参考答案:B10:下列各个错误中,哪一个不属于编译错误A.改变 x 原值 3 为 5 ,写作“ x==5 ;”B.花括号不配对C.复合语句中的最后一条语句后未加分号D.变量有引用、无定义参考答案:A11:下列程序段运行后, x 的值是( )a=1;b=2;x=0;if(!( -- a))x -- ;if(!b)x=7;else ++x;A.0B.3C.6D.7参考答案:A12:设#define N 3#define Y(n) ((N+1)*n)则表达式2*(N+Y(5+1))的值是A.42B.48C.54D.出错参考答案:B Y(5+1) 传递过去的应该是6,而不是简单的把5+1给替换掉13:若定义了char ch[]={″abc\0def″},*p=ch;则执行printf(″%c″,*p+4);语句的输出结果是A.defB.dC.eD.0参考答案:C14:下列转义字符中错误的是A.′\000′B.′\14′C.′\x111′D.′\2′参考答案:C error C2022: '273' : too big for character15:算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为A.算术运算、赋值运算、关系运算B.算术运算、关系运算、赋值运算C.关系运算、赋值运算、算术运算D.关系运算、算术运算、赋值运算参考答案:B16:设#define N 3#define Y(n) ((N+1)*n)则表达式2*(N+Y(5+1))的值是A.42B.48C.54D.出错参考答案:B17:表达式 strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一个A.非零整数B.浮点数C.0D.字符参考答案: A18:设struct{ short a;char b;float c;}cs;则sizeof(cs)的值是A.4B.5C.6D.7参考答案: D 字节对齐的话应该是819:若变量已正确定义,表达式( j=3 , j++ )的值是A.3B.4C.5D.0参考答案:A20:C 语言中运算对象必须是整型的运算符是A.%B./C.!D.**参考答案:A简答题21:打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,...例子:当N =5,打印出下面的图形:X X X X XX Y Y Y XX Y 0 Y XX Y Y Y XX X X X X22:谈谈的线程模型。

嵌入式笔试题

嵌入式笔试题

嵌入式笔试题嵌入式笔试题第一部分:选择题(每题2分,共10题)1. 以下哪个不是嵌入式系统常用的操作系统?a) Windowsb) Linuxc) FreeRTOSd) VxWorks2. 嵌入式系统中常用的接口类型是?a) Ethernetb) USBc) GSMd) I2C3. 以下选项中,哪个不是嵌入式系统的特点?a) 多任务处理b) 实时处理c) 大内存容量d) 低功耗4. 嵌入式系统的开发过程中,通常使用的编程语言是:a) C/C++b) Javac) Pythond) HTML5. 下列选项中,哪种存储器类型适合用于嵌入式系统?a) 硬盘b) 四层堆栈存储器c) U盘d) 光盘6. 下面哪个选项不是典型的嵌入式系统应用场景?a) 智能手机b) 电视机c) 电饭煲d) 卫星导航系统7. 嵌入式系统中常用的传感器类型是?a) 加速度传感器b) 摄像头c) 雷达d) 扬声器8. 嵌入式系统的调试和测试通常使用的工具是:a) 逻辑分析仪b) 电池测试仪c) 声卡测试仪d) 滤波器9. 嵌入式系统的时钟频率通常是多少?a) 1GHzb) 10MHzc) 100KHzd) 1KHz10. 以下选项中,哪个不是嵌入式系统的开发平台?a) Arduinob) Raspberry Pic) Androidd) STM32第二部分:填空题(每题5分,共5题)1. 嵌入式系统最常用的通信总线是____________。

2. 嵌入式系统中的内存分为____________和____________两类。

3. ____________是一种常用的实时操作系统。

4. I2C总线是一种____________传输协议。

5. 嵌入式系统的主频表示____________。

第三部分:问答题1. 什么是嵌入式系统?请简要描述其特点和应用场景。

嵌入式系统是一种特殊的计算机系统,它被嵌入在其他设备或系统中,用于控制和操作设备的具体功能,而不是提供通用计算能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、C语言中,修饰符volatile含义就是什么?其应用场合有哪些?
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取与存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。
数据链路层:SDLC、HDLC、PPP、STP(Spanning Tree Protocol)、帧中继
物理层:EIA/TIA RS-232、EIA/TIA RS-449、V、35、RJ-45
3、在网络应用中,函数htons,htonl,ntohs,ntohl的作用就是什么?
uint32_t htonl(uint32_t hostlong);//32位的主机字节序转换到网络字节序
<2>静态函数不能被其她文件所用。
局部静态变量
在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。
1)内存中的位置:静态存储区
2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值就是任意的,除非她被显示初始化)
3)作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束。
{
if(dest==NULL || src==NULL)
{
return dest;
}
void *temp = dest;
while(*(char *)src;
dest = (char *)dest + 1;
src = (char *)src + 1;
}
uint16_t htons(uint16_t hostshort);//16位的主机字节序转换到网络字节序
uint32_t ntohl(uint32_t netlong);//32位的网络字节序转换到主机字节序
uint16_t ntohs(uint16_t netshort);//16位的网络字节序转换到主机字节序
10、什么就是MMU,MMU的作用
MMU就是Memory Management Unit(内存管理单元)
1)虚拟内存。有了虚拟内存,可以在处理器上运行比实际物理内存大的应用程序。为了使用虚拟内存,操作系统通常要设置一个交换分区(通常就是硬盘),通过将不活跃的内存中的数据放入交换分区,操作系统可以腾出其空间来为其它的程序服务。虚拟内存就是通过虚拟地址来实现的。
return temp;
}
6、进程间通信的方式有
管道(pipe),流管道(s_pipe)与有名管道(FIFO)
信号(signal)
消息队列
共享内存
信号量
套接字(socket)
7、IPv4把所有的IP地址分为A、B、C、D、E五类。请写出B类地址与C类地址的范围与掩码,D类地址的用途就是什么?
A类IP地址范围:0、0、0、0到127、255、255、255
(皆为大小端的改变)
4、C语言中static函数与普通函数的区别就是什么?
静态函数
在函数的返回类型前加上关键字static,函数就被定义成为静态函数。
函数的定义与声明默认情况下就是extern的,但静态函数只就是在声明她的文件当中可见,不能被其她文件所用。
定义静态函数的好处:
<1>其她文件中可以定义相同名字的函数,不会发生冲突
好处:
定义全局静态变量的好处:
<1>不会被其她文件所访问,修改
<2>其她文件中可以使用相同名字的变量,不会发生冲突
5、请实现内存复制函数void memcpy(void *dst const void *src,int size)
void *memcpy(void *dest, const void *src, unsigned int size)
B类IP地址范围:128、0、0、0到191、255、255、255
C类IP地址范围:192、0、0、0到223、255、255、255
D类IP地址范围:224、0、0、0到239、255、255、255
E类IP地址范围:224、0、0、0到254、255、255、255
D类地址用于多点播送
E类地址保留,仅作实验与开发用
全局静态变量
在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。
1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)
2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值就是任意的,除非她被显示初始化)
3)作用域:全局静态变量在声明她的文件之外就是不可见的。准确地讲从定义之处开始到文件结尾。
2、请问TCP/IP协议分为哪几层?FTP协议在哪一层?
ISO/OSI的参考模型共有7层,由低层至高层分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
物理层:在物理媒体上传输原始的数据比特流。
数据链路层:将数据分成一个个数据帧,以数据帧为单位传输。有应有答,遇错重发。
网络层:将数据分成一定长度的分组,将分组穿过通信子网。
全零(“0.0.0.0”)地址指任意网络。
全“1”的IP地址(“255.255.255.255”)就是当前子网的广播地址。
8、请简述在linux中多进程程序与多线程程序的区别。
9、写一个标准的宏MINX,这个宏输入两个参数并返回较小的一个?
#define MIN(A, B) ((A)>(B)? (B) : (A))
传输层:提供不具体网络的高效、经济、透明的端到端数据传输服务。
会话层:进程间的对话也称为会话,会话层管理不同主机上各进程间的对话。
表示层:为应用层进程提供格式化的表示与转换数据服务。
应用层:提供应用程序访问OSI环境的手段。
应用层:TELNET、、SMTP、SNMP、HTTP、BOOTP、DHCP、DNS
表示层:
文本:ASCII,EBCDIC
图形:TIFF,JPEG,GIF,PICT
声音:MIDI,MPEG,QUICKTIME
会话层:NFS、SQL、RPC、X-WINDOWS、ASP(APPTALK会话协议)、SCP
传输层:TCP、UDP、SPX
网络层:IP、IPX、ICMP、RIP、OSPF(Open Shortest Path First开放式最短路径优先)
相关文档
最新文档