嵌入式软件工程师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;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语言软件工程师笔试题大全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语言笔试面试题求职:嵌入式程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 成对出现的原则,即" 谁申请,就由谁释放"原则。

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

软件笔试题(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。

相关文档
最新文档