校招嵌入式C++工程师笔试题

合集下载

嵌入式工程师笔试题

嵌入式工程师笔试题

嵌入式工程师笔试题嵌入式工程师是近年来备受关注的职业之一,他们专注于设计和开发嵌入式系统,这些系统被嵌入到各种设备和机器中,以实现特定的功能。

如果你对嵌入式系统的设计和开发感兴趣,并希望成为一名嵌入式工程师,本篇文章将为你提供一些常见的笔试题。

通过解答这些问题,你可以检验自己的嵌入式工程师知识和技能,为日后的面试做好准备。

1. 解释什么是嵌入式系统?嵌入式系统是指那些被嵌入到其他设备或系统中的计算机系统。

它们通常通过输入和输出设备与外部世界进行通信,并运行预先编写好的软件,以完成特定的任务。

嵌入式系统广泛应用于各个领域,例如消费电子产品、汽车、航空航天、医疗设备等。

2. 嵌入式系统和计算机系统有什么区别?嵌入式系统和计算机系统都是由计算机硬件和软件组成的,但二者有一些重要区别。

首先,嵌入式系统通常是定制化的,专门用于特定的应用领域,而计算机系统则更加通用。

其次,嵌入式系统通常需要满足一些特殊的需求,例如功耗低、体积小、实时性等。

最后,嵌入式系统通常是作为其他设备或系统的一部分,而计算机系统则是独立存在的。

3. 列举几个常见的嵌入式系统应用领域。

嵌入式系统应用广泛,下面列举几个常见的应用领域:- 汽车行业:嵌入式系统用于汽车的引擎控制、车载娱乐系统、安全系统等。

- 消费电子产品:嵌入式系统用于智能手机、平板电脑、音频设备等。

- 医疗设备:嵌入式系统用于医疗影像设备、心脏起搏器、血糖仪等。

- 工业自动化:嵌入式系统用于工厂设备的控制和监测。

- 物联网:嵌入式系统用于各种物联网设备,如智能家居、智能城市等。

4. 解释一下嵌入式系统的开发流程。

嵌入式系统的开发流程通常包括以下几个步骤:- 需求分析:明确系统的功能需求、性能需求、接口需求等。

- 系统设计:设计系统的整体结构,包括硬件设计和软件设计。

- 硬件设计:选择合适的硬件平台,并进行电路设计、原理图设计、PCB设计等。

- 软件设计:编写嵌入式软件的算法和代码,并进行模块设计和接口设计。

嵌入式软件开发面试C语言笔试题+答案

嵌入式软件开发面试C语言笔试题+答案
/************************
Chapter2 系统类
***********************/
1. Linux 和 Uc/os 是如何实现任务调度的?
2. Bootloader 移植过程要注意的事项,要做哪些工作 3. Emacs 用过没有?
/************************
h) int (*a[10]) (int); // An array of 10 pointers to functions that take an in teger argument and return an integer
5. 什么是存储机制里的大、小端模式?试举例说明 大端模式(big-edian):MSB 存放在最低端的地址上。举例,双字节数0x1234以 big-endian 的方式存在起始地
7. 定义一个返回值是指向函数的指针且有一个指向函数的指针作参数的函数。
通用形式如下:
typedef int (*P)( );
// 定义一个函数指针 P 类型
P function( int (*p)( ) );
// 定义一个函数返回值 P 类型,且定义一个指向函数的指针 p 作参数
8. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365) UL // UL 怎么个用法?你暂不要加
SLNode *p,*q; int j; p=head; j=-1; while( (p->next!=NULL) && (j<(i-1)) ) {
int a = 5, b = 7, c;

嵌入式软件工程师笔试题[小编推荐]

嵌入式软件工程师笔试题[小编推荐]

嵌入式软件工程师笔试题[小编推荐]第一篇:嵌入式软件工程师笔试题[小编推荐]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。

嵌入式c语言笔试题

嵌入式c语言笔试题

嵌入式c语言笔试题●为什么嵌入式行业注重C语言的考察?●首先我们需要知道为什么嵌入式开发用c语言开发,在这么多种编程语言中为什么单单c语言在嵌入式行业中这么受用呢?●在编译器的帮助下,c语言开发出来的代码能在多种不同体系结构的软/硬平台上运行,具有出色的可移植性。

●能够直接访问硬件。

其实能够直接访问硬件的语言有汇编和C语言,但是汇编语言属于低级语言,难以完成一些复杂的功能,此外汇编语言和CPU的架构紧密相关,X86架构和ARM架构的汇编代码是不同的,这就违背了嵌入式开发中可以执行的原则。

然而汇编比C语言访问硬件的效率更高,所以,一般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。

●那面向对象的编程语言受到无法直接操作硬件的限制,使得c语言在嵌入式开发中有不可取代的地位。

●常见嵌入式C语言笔试题的几个专题●数据类型●用变量a定义如下类型的变量●一个整形数int a;●一个指向整形数的指针int *a;●一个指向指针的指针,被指向的指针指向一个整形数int **a;●一个有十个整形数的数组int a[10];●一个又是个指针的数组,数组元素指向一个整形数int *a[10];●一个指向有十个整形数数组的指针int (*a)[10];●一个指向函数的指针,该函数有一个整形参数并返回一个整形数int (*a)(int );●一个有十个指针的数组,该数组指向一个函数,该函数有一个整型参数并返回一个整形数int (*a[10])(int );●解析●这道题有两种考法,一是给出要求,自己写出定义语句,二是给出定义语句,自己写出变量a的含义。

●解决办法掌握几个原则就好●这里首先提供给大家一个图片●然后看这个变量的本质是什么,越靠近本质的定义其优先级越高●举个栗子●一个有10个指针的数组,数组元素指向一个整形数int *a[10];●一个指向有10个整形数数组的指针int (*a)[10];●我们辨析一下上面两个变量●通过上面运算符优先级的图片可以知道 [] 的优先级是高于 * 的,所以int*a[10];中,a的本质是数组,然后数组的中存放的数据成员是指针,数据成员指向的是整型数据。

嵌入式软件开发岗位招聘笔试题及解答(某大型国企)

嵌入式软件开发岗位招聘笔试题及解答(某大型国企)

招聘嵌入式软件开发岗位笔试题及解答(某大型国企)(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、在C语言中,volatile关键字的主要作用是什么?A. 使变量成为全局变量B. 告诉编译器该变量可能会被外部因素改变,从而阻止优化C. 使变量成为常量D. 加快变量访问速度2、关于ARM架构处理器,以下哪个描述是正确的?A. ARM架构处理器仅支持32位指令集B. 所有的ARM处理器都支持Thumb-2技术C. ARM处理器采用的是RISC设计理念D. ARM处理器不能运行Linux操作系统3、嵌入式软件开发岗位笔试题及解答(某大型国企)一、单项选择题(每题2分,共20分)3、以下哪个不是嵌入式系统设计中常用的实时操作系统(RTOS)?A. VxWorksB. LinuxC. FreeRTOSD. Windows CE4、在嵌入式软件开发中,以下哪个概念不是用于描述硬件和软件之间接口的标准?A. 总线协议B. 寄存器映射C. 驱动程序D. API5、在ARM架构中,哪个寄存器通常被用作链接寄存器来保存子程序返回地址?A. R0B. R13 (SP)C. R14 (LR)D. R15 (PC)6、关于嵌入式系统的实时性,下列说法正确的是:A. 实时系统必须保证所有任务都能在指定的时间内完成B. 实时系统仅关注任务的平均响应时间C. 软实时系统对响应时间的要求比硬实时系统更加严格D. 实时系统中,任务的优先级可以根据任务的紧迫程度动态调整7、以下哪个协议不属于嵌入式系统中常用的网络通信协议?A. TCP/IPB. CAN(Controller Area Network)C. BluetoothD. SPI(Serial Peripheral Interface)8、在嵌入式软件开发中,以下哪个概念通常用来描述硬件和软件之间的接口?A. 驱动程序B. 硬件抽象层(HAL)C. 用户界面(UI)D. 操作系统内核9、在嵌入式系统开发过程中,以下哪种编程语言通常被认为最适合用于硬件抽象层(HAL)的开发?A. JavaB. C++C. CD. Python 10、以下关于ARM架构的描述,哪一项是正确的?A. ARM架构是一种RISC(精简指令集计算机)架构。

嵌入式软件开发岗位招聘笔试题及解答(某大型国企)2025年

嵌入式软件开发岗位招聘笔试题及解答(某大型国企)2025年

2025年招聘嵌入式软件开发岗位笔试题及解答(某大型国企)(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、在嵌入式软件开发中,以下哪个不是常见的硬件接口?A. SPI接口B. USB接口C. UART接口D. I2C接口2、嵌入式系统中,下列哪种编程语言最适合用于开发实时操作系统?A. JavaB. PythonC. C++D. JavaScript3、嵌入式系统中,以下关于ARM架构描述错误的是:A. ARM架构低功耗、高性能B. ARM架构主要用于移动计算和嵌入式领域C. ARM架构不支持多媒体和DSP功能D. ARM架构具有灵活的技术授权模式4、在嵌入式软件开发中,关于实时操作系统的描述错误的是:A. 实时操作系统具有高度的响应性和确定性B. 实时操作系统主要应用于实时性要求不高的场景C. 实时操作系统可以确保任务的及时完成和响应需求D. 实时操作系统常用于工业控制、医疗设备等领域5、在嵌入式软件开发中,以下哪种编程语言因其高性能和对低级硬件的控制能力而被广泛使用?A. PythonB. JavaC. CD. JavaScript6、嵌入式系统的核心特点是:A. 计算机视觉B. 无线通信C. 实时响应D. 数据存储7、在嵌入式软件开发中,以下哪个选项是实时操作系统的特点?A. 具有固定的时间表B. 可以根据需要动态调整任务优先级C. 仅适用于单处理器系统D. 不支持多任务处理8、在嵌入式系统中,通常使用哪种类型的存储器?A. 硬盘驱动器C. 光盘D. 闪存9、嵌入式软件开发中,关于内存管理的说法错误的是:A. 动态内存分配是指在程序运行时动态地分配或释放内存。

B. 静态内存分配在程序开始运行时进行,并在程序结束时释放。

C. 内存泄漏是指分配给程序的内存没有得到及时回收,导致内存占用持续增长。

D. 为了避免内存溢出,应该尽可能多地分配内存空间。

10、关于嵌入式系统的说法,错误的是:A. 嵌入式系统通常运行在特定硬件平台上,并对硬件环境有较强依赖性。

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

嵌入式工程师笔试题带答案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;}这样增加个辅助的指针就行乐。

嵌入式C笔试题

考查一个初级嵌入式系统开发人员的C基本功,附有答案题目由资深嵌入式系统专家拟定,目的是考查入门级的嵌入式软件开发人员Gavin Shaw提供详细解答编者按:非常基本关于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) 以上均不是第1题: (b)volatile字面意思是易于挥发的。

这个关键字来描述一个变量时,意味着给该变量赋值(写入)之后,马上再读取,写入的值与读取的值可能不一样,所以说它"容易挥发"的。

这是因为这个变量可能一个寄存器,直接与外部设备相连,你写入之后,该寄存器也有可能被外部设备的写操作所改变;或者,该变量被一个中断程序,或另一个进程改变了.volatile 不会被编译器优化影响,在longjump 后,它的值是后面假定的变量值,b最后的值是5,所以5被打印出来.setjmp : 设置非局部跳转/* setjmp.h*/Stores context information such as register values so that the lomgjmp function can return control to the statement following the one calling setjmp.Returns 0 when it is initially called.Lonjjmp: 执行一个非局部跳转/* setjmp.h*/第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第2题: (a)结构题的成员在内存中的地址是按照他们定义的位置顺序依次增长的。

个人整理的嵌入式C与C++笔试题

有关指针的经典面试题C语言为何如此长寿并实用?C++为什么有那么多精彩?指针可以说是C/C++中的灵魂所在,虽然早期中pascal也有指针,但是和C/C++比起来不是一个级别的.今天为大家深入浅出的解析一下指针的有关笔试,面试题.所有题目来源网络,分析是我写的...0.预备知识,最基础的指针其实最基础的指针也就应该如下面代码:int a;int* p=&a;也就是说,声明了一个int变量a,然后声明一个int 的指针,*p指向a的地址,&也就是取地址符号,而*是指针中取内容的符号,仅仅在声明的时候标记这个变量是指针.可能有点绕口,但是看代码来的容易的多...2.忽悠人的陷阱,str[]和*str的区别先告诉你哦,下面的题目可是陷阱啊....说说程序结果...char str1*+ = “abc”;char str2*+ = “abc”;const char str3*+ = “abc”;const char str4[+ = “abc”;const char *str5 = “abc”;const char *str6 = “abc”;char *str7 = “abc”;char *str8 = “abc”;cout << ( str1 == str2 ) << endl;cout << ( str3 == str4 ) << endl;cout << ( str5 == str6 ) << endl;cout << ( str7 == str8 ) << endl;解答:s tr1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。

怎么样?都输出true?那显然你中标了...而且cout输出bool值的时候,就算全是真也应该都输出1啊...4个1?那也不对...答案是0011,不信你试试...为什么呢?其实都说了这题是个大陷阱,因为这题根本不是比较字符串内容!而是比较字符串的地址.哦...恍然大悟...那为什么前两个是假呢?因为这可是说是一个深拷贝/浅拷贝的问题.当字符串是数组形式声明并初始化,编译器认为是新数组,分配新空间,但不是深拷贝,因为根本就不算拷贝.而如果是相同的字符串,用指针声明,那就是比较如果有一样的字符串,就直接把新指针指过去,这是正宗的浅拷贝.哇哈...你就中计了...3.str[]用sizeof判断会出错么?应该说我们常常用指针有很多时候是解决字符串的问题,一般我们用strlen,这当然没有问题,但是要你编一个呢?看看下面这个MyStrlen有问题么?int MyStrlen(char str[]){return (int)(sizeof(str)-1);}呵呵...咱们上当过一次..这个当然也是不对的...不错...这个函数是错的...为什么呢?首先,可以告诉你,无论何时,返回的总是3...额...是不是很奇怪,为什么不是数组长度呢?str不是char数组指针么?不错...确实是数组的指针,但是,当用函数传递的数组指针的时候就自动退化为指针了,而指针的长度是4,你减去1了自然就是3了.但是如果按照下面代码就可以得到正常的值.char str[]="hello world";int len=sizeof(str)-1; //记得减1哦,最后有'\0'结尾cout<<len;这样输出的是正常值,也就是你所希望的11;4.注意数组指针和指针继续上面的话题,刚刚提到了数组指针和指针,现在看看下面这端程序代码:int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);cout<<*(a+1)<<*(ptr-1);呵呵...BaihowFF总是给陷阱..肯定不是想当然的说就是21...确实...答案是25...额...奇怪吧..为什么呢?首先,a是一个数组,所以编译器解释&a就是a的全部长度,就是说(&a+1)也就是说移动了一个数组,指向了并不存在的a[5],所以ptr-1才会指向a数组的最后一个元素a[4],而a+1和a[1]是一样的...所以答案是25,如果你去掉了(&a+1)的括号,那么答案就是想当然的21了...呵呵...很微妙吧....5.注意指针要分配给足够的空间新手在刚刚接触指针的时候经常会忘记给指针分配空间,直接用肯定是有问题的,那么下面的程序呢?char a;char *str=&a;strcpy(str,”hello”);cout<<str;BaihowFF是坏蛋..总会下套...呵呵..确实是圈套...这段程序能够输出hello,但是输出后就崩溃了...原因就在你分配str指针的时候仅仅给了1字节的空间,但是你拷贝了6字节过去(不要忘记了最后的'\0'结束).运行输出后程序因为访问了没有分配的呵呵空间,当然崩溃了.如果你只strcpy(str,"");那程序是可以正常运行的.6.小心编译器的指针字符串初始化经常我们想自己处理字符串,但是像下面的初始化是很危险的!!!char* s="AAA";cout<<s<<endl;s[0]='B';cout<<s<<endl;你可以拿这段程序去编译...没错!编译器报告正常!...这是最要命的...其实程序不能运行的...输出AAA后就崩溃了..为什么?因为当你在第一句初始化的时候,编译器就认为这是个字符串常量了...再做数组操作的时候肯定错了罗...最好的习惯是声明一个指针,用new分配空间,然后用库函数操作,比如strcpy,strcat等等...7.让人一眼看上去迷糊的函数指针看看这句代表什么意思?int (*s[10])(int);咦...这是什么?其实这是一个函数指针数组,指向了一组int fun(int)的函数,第一眼确实让人有点迷糊...但是请习惯这样...8.注意函数传递指针的时候是副本副本?又下副本?...汗...老兄...不是这个意思...别沉浸在WOW里了啊...看看下面程序的问题: void GetMemory(char *p){p=new char[100];strcpy(p,"hello world");}void main(void){char *str=NULL;GetMemory(str);cout<<str;delete []str;str=NULL;}当然了..喜欢下套的BaihowFF又给了错程序....错在哪呢?看上去是对的,而且编译器编译也正确啊..怎么就是不能通过呢?而且还崩溃了...好费解吧...其实原因很简单...GetMemory这个函数出问题了!函数参数是不能传递分配空间的...因为传递过去实际上是一个副本p...不能返回的...而且你在delete那就是件很危险的事情..因为压根没有内容...那我实在想这样用函数分配怎么办呢?像下面这样改一下就ok了:void GetMemory(char **p) // 改成晦涩难懂的指针的指针{*p=new char[100]; //给*p的分配地址strcpy(*p,"hello world"); // 拷贝内容到*p}void main(void){char *str=NULL;GetMemory(&str); //这地方取地址cout<<str;delete []str;str=NULL;}这样就能正常工作了,但是看起来好别扭啊...嗯..确实...但是还可以用其他方法哦....你想想...肯定有办法的...9.请时刻记住要初始化字符串嗯...这点大家都知道...那你猜猜下面的程序结果是多少?char a[10];cout<<strlen(a)<<endl;答案应该让你以外...竟然是15...没道理吧?!其实strlen函数的结果和是否初始化有关的...虽然你分配了空间..但是没有初始化..库函数会出错的..sizeof不受影响...切忌初始化哦....10.小括号,大区别看看这两端声明,有什么不同?我直接在注释里告诉你答案吧...这样好看点...char (*str)[20]; //str是一个数组指针,即指向数组的指针,C语言里专用来指向二维数组.char *str[20]; //str是一个指针数组,其元素为指针型数据.千万别小看括号哦...区别大了吧....一些笔试题目:预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。

嵌入式软件工程师C语言笔试题

软件笔试题(A)姓名:学校:专业:电话:(如无特殊说明,以下所有测试内容都是基于32位嵌入式系统)1)程序的局部变量存在于中,全局变量存在于中,动态申请数据存在于中。

2)如何用if来做零值比较int a : if(a==0)bool a :float a :void * a :3)void func( char str[100]){printf(“%d”,sizeof( str ) );}输出结果是:有下列定义:char str[] = “Hello World”;char *p = str;int n = 10;void *ptr = malloc( 100 );请写出如下表达式的值:sizeof (str ) = ;sizeof ( p ) = ;sizeof ( n ) = ;sizeof ( ptr )= ;4)unsigned char *p1;unsigned long *p2;p1=(unsigned char *)0x87000000;p2=(unsigned long *)0x80010000;请问p1+5 = ;p2+5 = ;5)char str[10];strcpy(str,"0123456789");产生什么结果?为什么?6)用C语句,让程序跳转到绝对地址0xFFFF0去执行7)已知一个数组array,用一个宏定义,求出数组的元素个数#define ARRAY_COUNT8)简要说明,为什么标准头文件都有类似以下的结构。

#ifndef __INC_Honeywell_Debug#define __INC_Honeywell_Debug#ifdef __cplusplusextern "C" {#endif/*...*/#ifdef __cplusplus}#endif#endif /*__INC_Honeywell_Debug */9)给定结构struct token_t{char digit:4;char index:4;unsigned short data:8;unsigned long tick;};问sizeof(token_t) =10)在空白处填写完整强制类型转换short (*day_p)[16];day_p = ( ) malloc ( );11)简述:TCP/UDP有何区别?TCP/IP通信建立的过程怎样?端口有什么作用?12)找出下列嵌入式系统中断处理函数中的错误:__interrupt double compute_area (double radius){double area = PI * radius * radius;printf(" Area = %f", area);return area;}13)请写一个宏,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回13 / 714)数组a[N],存放了1至N-1个自然数,其中某个自然数重复一次。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

校招嵌入式/C++工程师笔试题
请在40-50分钟内完成测试题,题目较多,注意控制时间。

基本信息:[矩阵文本题] *
1.在C/C++中,关键字static和const的作用各是什么? [填空题]
_________________________________
2.在C/C++中,sizeof和strlen的作用及区别是什么? [填空题]
_________________________________
3.C++的lambda表达式中,值捕获和引用捕获的区别是什么? [填空题] _________________________________
4.struct 和 class 的区别是什么? [填空题]
_________________________________
5.“大端模式”和“小端模式”的区别是什么? [填空题]
_________________________________
6.请列举你熟知的单片机型号及所具备的外设。

[填空题]
_________________________________
7.请列举你熟知的硬件通信方式及特点。

[填空题]
_________________________________
8.定义一个常量,表示一天有多少秒() [填空题]
_________________________________
9.使用宏定义实现输入两个整数,返回最大值() [填空题]
_________________________________
10.#define DOUBLE(x) x+x。

表达式(5*DOUBLE(5))=() [填空题] * _________________________________
11.请给出下面程序输出情况。

int a = 0;
int b= 1;
int c = 2;
int d = 3;
c=a,b;
d=(a,b);
printf("c=%d" ,c);
printf("d=%d" ,d); [填空题] *
_________________________________
12.请给出下面程序的执行结果。

int i=3, j =4;
i ? i++ : ++j;
i=()j=() [填空题] *
_________________________________
[填空题] *
_________________________________
14.请填写BOOL,float指针变量与“零值”比较的if语句。

提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。

例如 int 变量 n 与“零值”比较的 if 语句为:
if ( n == 0 )
if ( n != 0 )
以此类推。

请写出 BOOL flag与“零值”比较的 if 语句:()
请写出 float x与“零值”比较的 if 语句:()
请写出 char *p与“零值”比较的 if 语句:() [填空题] *
_________________________________
15.以下为linux下的32位C程序。

char str[] = “Hello” ;
char *p = str ;
int n = 10;
请计算:
sizeof (str ) =()
sizeof ( p ) =()
sizeof ( n ) =()
strlen(str) =()
strlen(p)=() [填空题] *
_________________________________
16.typedef在C语言中频繁用以声明一个已经存在的数据类型的同义字。

也可以用预处理器做类似的事。

例如,思考一下下面的例子:
#define dPS struct s *
typedef struct s * tPS;
以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。

哪种方法更好呢?为什么? [填空题] *
_________________________________
17.给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。

在以上两个操作中,要保持其它位不变。

[填空题]
_________________________________
[填空题] *
_________________________________
[填空题] * _________________________________
[填空题] *
_________________________________。

相关文档
最新文档