嵌入式软件工程师C语言笔试题
- 格式:docx
- 大小:32.32 KB
- 文档页数:7
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;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语言软件工程师笔试题大全1. 基础知识题1.1 变量和数据类型1.请描述int和float这两种数据类型分别在内存中所占的字节数以及其取值范围。
2.什么是变量,变量的命名规则有哪些限制?3.请简要介绍C语言中的整型常量、浮点型常量和字符常量。
1.2 运算符和表达式1.C语言中的逻辑运算符有哪些?它们的运算规则是什么?2.请解释C语言中的前缀递增和后缀递增运算符的区别。
3.下面的表达式的结果是多少?int x = 5; int y = x++;1.3 控制结构1.请解释C语言中的if-else语句的用法和语法。
2.请解释C语言中的for循环语句的用法和语法。
3.请解释C语言中的switch语句的用法和语法。
2. 中级知识题2.1 数组和字符串1.请解释C语言中的一维数组和多维数组的定义和使用方法。
2.请编写一个程序,实现对一个整型数组的冒泡排序。
3.请编写一个程序,实现两个字符串的拼接。
2.2 指针和内存管理1.请解释C语言中的指针的概念和作用,并说明指针的运算规则。
2.请编写一个程序,交换两个变量的值,使用指针作为函数的参数。
3.请解释C语言中的动态内存分配和释放的方法,并编写一个例子。
2.3 结构体和联合体1.请解释C语言中的结构体的概念和用法,并编写一个例子。
2.请解释C语言中的联合体的概念和用法,并编写一个例子。
3.请解释C语言中的位字段的概念和用法,并编写一个例子。
3. 高级知识题3.1 函数和库1.请解释C语言中的函数指针的概念和用法,并编写一个例子。
2.请解释C语言中的标准库和自定义库的区别,并说明如何使用自定义库。
3.请解释C语言中的递归函数的概念和用法,并编写一个例子。
3.2 文件操作1.请解释C语言中的文件指针的概念和用法,并说明如何打开、读取和关闭文件。
2.请编写一个程序,实现对一个文本文件的读取和统计某个字符出现的次数。
3.请编写一个程序,实现对一个文本文件的写入操作,将一个字符串写入文件。
求职:嵌入式程C语言笔试面试题求职:嵌入式程C语言笔试(面试)题C语言测试是招聘嵌入式系统程序员以及电子控制类专业求职过程中必须面临的。
从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。
这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII值。
这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不是在嵌入式系统上。
如果上述任何问题的答案是"是"的话,那么我知道我得认真考虑我是否应该去做这份工作。
从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,你能了解应试者C语言的水平。
不管怎么样,看一下这人如何回答他不会的问题也是满有趣。
应试者是以好的直觉做出明智的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口呢,还是表现出对问题的真正的好奇心,把这看成学习的机会呢?我发现这些信息与他们的测试成绩一样有用。
下面这些令人头痛的考题能给正在找工作的人一点帮助。
其中有些题很难,但它们应该都能给你一点启迪。
这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。
为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意思分配分数。
预处理器(preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_pER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,2)懂得预处理器将为你计算常数表达式的'值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
嵌入式软件工程师笔试题[小编推荐]第一篇:嵌入式软件工程师笔试题[小编推荐]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。
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;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。
嵌入式开发工程师笔试题1. 题目:简述嵌入式系统的定义,并举例说明。
- 答案:嵌入式系统是一种嵌入到对象体系中的专用计算机系统。
它以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
例如,智能手环就是一个嵌入式系统,它内部有专门的芯片(硬件),运行着特定的程序(软件),这个程序主要是为了实现健康监测(如心率检测、运动步数统计等)功能,并且它的体积很小,功耗也非常低,是为了满足佩戴在手腕上长时间使用的需求。
- 解析:首先呢,嵌入式系统这个概念就是专门为了特定应用而存在的计算机系统。
就像我们说的智能手环,它不是像普通电脑那样什么功能都有,它只专注于健康监测这些功能,这就是以应用为中心。
而且它的硬件和软件都是根据这个需求定制的,就像定制一件合身的衣服一样,不能太大(体积小)也不能太耗电(功耗低),这样才能很好地戴在手腕上,所以这就是嵌入式系统的一个很好的例子呀。
2. 题目:在嵌入式开发中,什么是中断?请举例说明其应用场景。
- 答案:中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
例如,在温度控制系统中,当温度传感器检测到温度过高时,它就会产生一个中断信号。
这个信号会让嵌入式系统暂停当前的一些不太紧急的任务,比如显示当前状态之类的,然后马上执行温度过高的处理程序,比如启动降温设备(风扇等),等温度降下来后,再回到之前的任务继续执行。
- 解析:中断就像是你正在做一件事,突然有更紧急的事情来了,你得先去处理这个紧急的事,处理完再回来接着做原来的事。
就像在温度控制系统这个例子里,正常情况下嵌入式系统在做自己的常规工作,但是温度过高这个情况很紧急啊,就像家里着火了一样,这时候就得中断其他事先处理温度过高的问题,等温度降下来安全了,再回到日常的工作状态呀。
嵌入式软件开发笔试题目
嵌入式软件开发笔试题目主要考察以下几个方面:
1.嵌入式系统基础:包括嵌入式系统的概念、特点、结构、组成、开发流程等。
2.嵌入式软件设计:包括嵌入式软件的设计方法、设计原则、设计规范等。
3.嵌入式软件开发语言:包括C、C++、Java等嵌入式软件开发语言的语法、关
键字、库函数等。
4.嵌入式软件开发工具:包括编译器、调试器、仿真器等嵌入式软件开发工具
的使用方法。
5.嵌入式软件开发常见问题:包括内存管理、中断处理、多任务处理等嵌入式
软件开发常见问题的解决方法。
以下是一些常见的嵌入式软件开发笔试题目:
嵌入式系统基础
1.什么是嵌入式系统?
2.嵌入式系统的特点是什么?
3.嵌入式系统的结构是什么?
4.嵌入式系统的组成是什么?
5.嵌入式系统的开发流程是什么?
嵌入式软件设计
1.嵌入式软件的设计方法有哪些?
2.嵌入式软件的设计原则有哪些?
3.嵌入式软件的设计规范有哪些?
嵌入式软件开发语言
1.C语言的关键字有哪些?
2.C++语言的关键字有哪些?
3.Java语言的关键字有哪些?
嵌入式软件开发工具
1.编译器的功能是什么?
2.调试器的功能是什么?
3.仿真器的功能是什么?
嵌入式软件开发常见问题
1.内存管理的策略有哪些?
2.中断处理的流程是什么?
3.多任务处理的策略有哪些?。
1. 编写一个函数,判断处理器是使用Big_endian 模式(返回0)还是Little_endian 模式(返回1)存储数据[cpp] view plaincopyprint?1. int 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. bool 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. int 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. char * 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 成对出现的原则,即" 谁申请,就由谁释放"原则。
嵌入式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的本质是数组,然后数组的中存放的数据成员是指针,数据成员指向的是整型数据。
校招嵌入式/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.请给出下面程序的执行结果。
综合测试试题第一部分:C语言一、请填写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 语句:二、以下为Windows NT下的32位C++程序,请计算sizeof的值char str[] = “Hello” ; char *p = str ;int n = 10;请计算sizeof (str ) =sizeof ( p ) =sizeof ( n ) = void Func ( char str[100]) {请计算sizeof( str ) =}void *p = malloc( 100 ); 请计算sizeof ( p ) =三、简答题1、头文件中的ifndef/define/endif 干什么用?2、#include <filename.h> 和#include “filename.h” 有什么区别?3、const 有什么用途?(请至少说明两种)4、在C++ 程序中调用被C编译器编译后的函数,为什么要加extern “C”声明?5、请简述以下两个for循环的优缺点// 第一个for (i=0; i<N; i++) {if (condition)DoSomething();elseDoOtherthing(); } // 第二个if (condition){for (i=0; i<N; i++) DoSomething();}else{for (i=0; i<N; i++) DoOtherthing(); }优点:缺点:优点:缺点:四、有关内存的思考题void GetMemory(char *p){p = (char *)malloc(100);}void Test(void){char *str = NULL;GetMemory(str);strcpy(str, "hello world"); printf(str);}请问运行Test函数会有什么样的结果?答:char *GetMemory(void){char p[] = "hello world";return p;}void Test(void){char *str = NULL;str = GetMemory();printf(str);}请问运行Test函数会有什么样的结果?答:Void GetMemory2(char **p, int num) {*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);}请问运行Test函数会有什么样的结果?答:void Test(void){char *str = (char *) malloc(100);strcpy(str, “hello”);free(str);if(str != NULL){strcpy(str, “world”);printf(str);}}请问运行Test函数会有什么样的结果?答:五、编写strcpy函数已知strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest是目的字符串,strSrc是源字符串。
[DOC]-嵌入式软件开发面试C语言笔试题答案嵌入式软件开发面试C语言笔试题答案嵌入式软件笔试**/**********************/***********************Chapter1语法类***********************/1.volatile作用,应用场合举3例volatile修饰的变量表示这个变量可能会被意想不到的改变,对该变量的操作将不作优化,用到该变量时都从这个变量的原始地址读取,而不是用保存在寄存器里的备份。
Volatile常用在:1).硬件寄存器(如:状态寄存器)。
2).中断程序中会访问到的非自动变量(Non-automaticvariables)。
3).多线程应用中几个任务共享的变量2.一个参数既可以是const还可以是volatile吗,解释为什么。
是的。
比如只读的状态寄存器。
它是volatile因为它可能被意想不到地改变。
它是const因为程序不应该试图去修改它。
3.一个指针可以是volatile吗,解释为什么。
是的。
比如一个中断服务子程序修该一个指向一个buffer的指针时。
苏金塔4.用变量a给出下面的定义 a)一个整型数 b)一个指向整型数的指针 c)一个指向指针的指针,它指向的指针是指向一个整型数 d)一个有10个整型数的数组 e)一个有10个指针的数组,该指针是指向一个整型数的 f)一个指向有10个整型数数组的指针 g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数 h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数a)intb)inta;//Aninteger*a;//Apointertoanintegerc)int**a;//Apointertoapointertoanintegerd)inte)intf)intg)inta[10];//Anarrayof10integers*(a[10]);//Anarrayof10pointerstointegers(*a)[10];//Apointertoanarrayof10integers(*a)(int);//Apoint ertoafunctionathattakesanintegerargumentandreturnsanintegerh)int(*a[10])(int);//Anarrayof10pointerstofunctionsthattakeanintegerargumentandreturnaninteger5.什么是存储机制里的大、小端模式,试举例说明大端模式(big-edian):MSB存放在最低端的地址上。
嵌入式软件工程师笔试题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、编程实现一个双链表的节点插入和删除。
c语言笔试题和答案C语言是计算机编程领域中的基础语言之一,广泛应用于系统编程、嵌入式开发等领域。
以下是一套C语言的笔试题和答案,旨在帮助考生复习和测试自己的C语言知识。
C语言笔试题一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的合法变量名?A. 2variableB. variable-nameC. variable_nameD. variable-name22. C语言中,哪个关键字用于定义一个函数?A. defineB. functionC. voidD. int3. 在C语言中,以下哪个表达式的结果为真?A. 5 > 3 && 3 < 2B. 5 > 3 || 3 < 4C. 5 > 3 && 3 < 4D. 5 == 5 || 3 < 24. 下列哪个语句用于在C语言中进行循环控制?A. ifB. switchC. forD. while5. 在C语言中,数组的索引是从哪个数字开始的?A. 0B. 1C. -1D. 根据数组类型而定6. 下列哪个函数可以用于计算两个数的最大值?A. max()B. min()C. abs()D. pow()7. C语言中,哪个预处理指令用于文件包含?A. #includeB. #importC. #defineD. #require8. 下列哪个选项是C语言中的一个标准库函数?A. printf()B. print()C. display()D. show()9. 在C语言中,哪个关键字用于声明一个指针变量?A. varB. pointerC. ptrD. int*10. 下列哪个语句可以用于在C语言中定义一个结构体?A. structB. defineC. typeD. class二、简答题(每题5分,共30分)1. 解释C语言中数组和指针的区别。
2. 描述C语言中函数的调用过程。
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。
这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。
从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。
这个测试只是出题者为显示其对ANSI 标准细节的知识而不是技术技巧而设计吗?这个愚蠢的问题吗?如要你答出某个字符的ASCII值。
这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不上在嵌入式系统上。
如果上述任何问题的答案是"是"的话,那么我知道我得认真考虑我是否应该去做这份工作。
从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,你能了解应试者C语言的水平。
不管怎么样,看一下这人如何回答他不会的问题也是满有趣。
应试者是以好的直觉做出明智的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口呢,还是表现出对问题的真正的好奇心,把这看成学习的机会呢?我发现这些信息与他们的测试成绩一样有用。
有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令人头痛的考题能给正在找工作的人一点帮住。
这些问题都是我这些年实际碰到的。
其中有些题很难,但它们应该都能给你一点启迪。
这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。
为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意思分配分数。
预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:•; #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)•; 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
嵌入式软件工程师笔试题
作为嵌入式软件工程师,笔试题通常涵盖了多个方面的知识和
技能。
以下是一些可能涉及的题目和相关知识点:
1. C/C++编程能力,笔试题可能包括编写简单的嵌入式C/C++
代码,包括数据结构、指针、内存管理等方面的题目。
例如,可能
会要求你编写一个简单的嵌入式设备驱动程序或者实现一个特定功
能的嵌入式应用程序。
2. 嵌入式系统架构和硬件知识,可能会涉及到嵌入式系统的架
构设计、硬件接口、外设驱动等方面的知识。
例如,可能会要求你
解释嵌入式系统中各个硬件模块的作用,以及它们之间的通信方式。
3. 实时操作系统(RTOS)和多线程编程,嵌入式系统通常需要
处理实时性要求,因此可能会涉及到实时操作系统(如FreeRTOS、uC/OS等)的知识,以及多线程编程技巧。
4. 嵌入式软件调试和优化,可能会涉及到嵌入式软件调试工具
的使用,以及代码优化的相关知识。
例如,可能会要求你解释如何
利用调试工具定位嵌入式系统中的软件问题,并提出优化建议。
5. 通信协议和接口,可能会涉及到串口通信、SPI、I2C、CAN 等通信协议的应用,以及各种传感器、执行器等外设的接口应用。
6. 嵌入式软件开发流程和标准,可能会涉及到软件开发流程(如需求分析、设计、编码、测试等),以及软件开发标准(如MISRA-C、DO-178B/C等)的相关知识。
以上仅是一些可能涉及的知识点和题目类型,实际的笔试题目可能会根据具体岗位要求和公司需求有所不同。
希望这些信息对你有所帮助。
嵌入式软件工程师经典笔试题嵌入式软件工程师经典笔试题为关怀大家稳固嵌入式工程是根底学问,yjbys 我为大家整理最新嵌入式工程师考试题如下:1、将一个链表逆序LinkList *reverse(LinkList *head){LinkList *p1,*p2 = NULL,*p3 = NULL;if(head == NULL || head-next == NULL)return head;p1 = head-next;while(p1!=NULL){ p3 = p1-next;p1-next = p2;p2 = p1;p1 = p3;}head-next = p2;// head = p2;return head;}2、计算一个字节里(byte)里面有多少bit被置1 #includeint comb(const int c){int count = 0;int i = 0;int cc = c; while(i++8) {if((cc1)==1) {count++;}cc = cc1;}return count; }int main(){ const int c = 0xcf;printf(%d\n,comb(c));return 1;}3、在一个字符串中找到可能的`最长的子字符串#include#include#includechar *commanstring(char shortstring[],char longstring[]) {int i,j;char *substring = malloc(256);if(strstr(longstring,shortstring)!=NULL)return shortstring;for(i=strlen(shortstring)-1;i0;i--){for(j=0;j=strlen(shortstring)-i;j++) {memcpy(substring,shortstring[j],i);substring[i]=\0;if(strstr(longstring,substring)!=NULL) return substring;}}return NULL;}void main(void){ char *str1 = aocdfe;char *str2 = pmcdfa;char *comman = NULL;if(strlen(str1)strlen(str2))comman= commanstring(str2,str1);elsecomman = commanstring(str1,str2);printf(the longest comman string is:%s\n,comman); }4、字符串转换为整数#include#includevoid reverse(char s[]){ //字符串反转int c, i=0, j;for(j=strlen(s)-1;i{ c=s[i];s[i]=s[j];s[j]=c;i++;}}void IntegerToString(char s[],int n){ int i=0,sign;if((sign=n)0)//假设是负数,先转成正数n=-n;do //从个位开头变成字符,直到最高位,最终应当反转 { s[i++]=n%10+0; }while((n=n/10)0);//假设是负数,补上负号if(sign0)s[i++]=-;s[i]=\0;//字符串完毕reverse(s);}void main(){ int m;char c[100];m =215;IntegerToString(c,m);printf(integer = %d string = %s\n, m, c); }5、整数转换为字符串#include#includeint Atoi(char str[]){int i;int weight = 1; // 权重int rtn = 0; // 用作返回for(i = strlen(str) - 1; i = 0; i--) {rtn += (str[i] - 0)* weight; //weight *= 10; // 增重}return rtn; }void main(){char str[32];printf(Input a string :); gets(str);printf(%d\n, Atoi(str)); }6、将一个字符串逆序#include#includechar *strconv(char *p){int length = strlen(p);char *ptr = p;char *ptr_1 = p + length -1; while(ptr ptr_1){char c = *ptr;*ptr = *ptr_1;*ptr_1 = c;++ptr;--ptr_1;}return p;}int main(){ char str[]=abcdef1234; char *p;p = strconv(str);printf(%s,p);return 1;}。
嵌入式c语言笔试题及答案2017年嵌入式c语言笔试题及答案1 读程序段,回答问题int main(int argc,char *argv[]){int c=9,d=0;c=c++%5;d=c;printf("d=%d\n",d);return 0;}a) 写出程序输出b) 在一个可移植的系统中这种表达式是否存在风险?why? #include "stdio.h"int a=0;int b;static char c;int main(int argc,char *argv[]){char d=4;static short e;a++;b=100;c=(char)++a;e=(++d)++;printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e); return 0;}a) 写出程序输出b) 编译器如果安排各个变量(a,b,c,d)在内存中的布局(eg. stack,heap,data section,bss section),最好用图形方式描述。
2 中断是嵌入式系统中重要的组成部分,这导致了许多编译开发商提供一种扩展:让标准C支持中断,产生了一个新的关键字__interrupt。
下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论以下这段代码。
__interrupt double compute_area(double radius){double area = PI * radius *radius;printf("nArea = %f", area);return area;}3 C/C++基础知识问题a) 关键字volatile在编译时有什么含义?并给出三个不同使用场景的例子(可以伪代码或者文字描述)。
b) C语言中static关键字的具体作用有哪些 ?c) 请问下面三种变量声明有何区别?请给出具体含义int const *p;int* const p;int const* const p;4 嵌入式系统相关问题a) 对于整形变量A=0x12345678,请画出在little endian及big endian的方式下在内存中是如何存储的。
软件笔试题(A)
姓名:___________________________________ 学校:_____________________________________
专业:___________________________________ 电话:_____________________________________
(如无特殊说明,以下所有测试内容都是基于32位嵌入式系统)
1)程序的局部变量存在于 _______________ 中,全局变量存在于_________________ 中,动态申请数据存在于_________________ 中。
2)如何用if来做零值比较
int a : if(a==O)
bool a : _________________________
float a : _________________________
void * a :
3)
void func( char str[1OO])
{
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)
un sig ned char *p1;
un sig ned 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_COUNT _____________________________________________________
8) 简要说明,为什么标准头文件都有类似以下的结构。
#ifndef __INC_Ho neywell_Debug
#defi ne __INC_Ho neywell_Debug
#ifdef __cplusplus
extern "C" {
#en dif
/*•••*/
#ifdef __cplusplus
}
#en dif
#e ndif /*__INC_Hon eywell_Debug */
Honeywell
9) 给定结构
struct toke n_t
{
char digit:4;
char in dex:4;
un sig ned short data:8;
un sig ned long tick;
};
问sizeof(token_t) = ________
10) 在空白处填写完整强制类型转换
short (*day_p)[16];
day_p = ( ____________ ) malloc ( ______ );
11)简述:TCP/UDP有何区别?TCP/IP通信建立的过程怎样?端口有什么作用?
12) 找出下列嵌入式系统中断处理函数中的错误:
__in terrupt double compute_area (double radius) {
double area = PI * radius * radius;
prin tf(" Area = %f", area);
return area;
13)请写一个宏,若处理器是Big_endian的,则返回0;若是Little_endian 的,则返回1
3 / 7
14) 数组a[N] ,存放了1 至N-1 个自然数,其中某个自然数重复一次。
写一个函数,重复的数字。
找出被要求:(时间复杂度为0(N),可用一种或一种以上方法) 函数原型:int do_dup(int a[],int N)
Honeywell
5 / 7
15)基于如下数据结构,实现环形缓冲区的读写函数
实现其读写函数:
// -------------------------------------------------------------------------------------------- BOOL write_fifo(i nt n ew_data) /* write one item into ring buffer */
#defi ne BUF_SIZE (100)
typedef struct { un sig ned char un sig
ned char BOOL str_data_buf write_ in dex; read_ in dex; full_flag; empty_flag; int data_buf[BUF_SIZE];
}data_buf_t, *p_data_buf; static data_buf_t
rin g_buf;
读 用 区 空 域
item 21 使
BOOL read_item (int* data) /* read one item from ring buffer */
Honeywell 选做部分(C++)
1)类的静态成员和非静态成员有何区别?
2)定义并实现String类,要求有构造函数、析构函数和赋值函数,
7 / 7。