嵌入式软件工程师笔试题华为优选稿

合集下载

硬件工程师面试笔试之嵌入式篇(华为、威盛等)

硬件工程师面试笔试之嵌入式篇(华为、威盛等)

1、请用方框图描述一个你熟悉的实用数字信号处理系统,并做简要的分析;如果没有,也可以自己设计一个简单的数字信号处理系统,并描述其功能及用途。

(仕兰微面试题目)2、数字滤波器的分类和结构特点。

(仕兰微面试题目)3、IIR,FIR滤波器的异同。

(新太硬件面题)4、拉氏变换与Z变换公式等类似东西,随便翻翻书把如.h(n)=-a*h(n-1)+b*δ(n) a.求h (n)的z变换;b.问该系统是否为稳定系统;c.写出FIR数字滤波器的差分方程;(未知)5、DSP和通用处理器在结构上有什么不同,请简要画出你熟悉的一种DSP结构图。

(信威dsp软件面试题)6、说说定点DSP和浮点DSP的定义(或者说出他们的区别)(信威dsp软件面试题)7、说说你对循环寻址和位反序寻址的理解.(信威dsp软件面试题)8、请写出【-8,7】的二进制补码,和二进制偏置码。

用Q15表示出0.5和-0.5.(信威dsp软件面试题)9、DSP的结构(哈佛结构);(未知)10、嵌入式处理器类型(如ARM),操作系统种类(Vxworks,ucos,winCE,linux),操作系统方面偏CS方向了,在CS篇里面讲了;(未知)11、有一个LDO芯片将用于对手机供电,需要你对他进行评估,你将如何设计你的测试项目?12、某程序在一个嵌入式系统(200M CPU,50M SDRAM)中已经最优化了,换到零一个系统(300M CPU,50M SDRAM)中是否还需要优化?(Intel)13、请简要描述HUFFMAN编码的基本原理及其基本的实现方法。

(仕兰微面试题目)14、说出OSI七层网络协议中的四层(任意四层)。

(仕兰微面试题目)15、A)(仕兰微面试题目)#i ncludevoid testf(int*p){*p+=1;}main(){int *n,m[2];n=m;m[0]=1;m[1]=8;testf(n);printf("Data value is %d ",*n);}------------------------------B)#i ncludevoid testf(int**p){*p+=1;}main(){int *n,m[2];n=m;m[0]=1;m[1]=8;testf(&n);printf(Data value is %d",*n);}下面的结果是程序A还是程序B的?Data value is 8那么另一段程序的结果是什么?16、那种排序方法最快? (华为面试题)17、写出两个排序算法,问哪个好?(威盛)18、编一个简单的求n!的程序。

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

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

嵌入式软件工程师笔试题(含答案).txt26选择自信,就是选择豁达坦然,就是选择在名利面前岿然不动,就是选择在势力面前昂首挺胸,撑开自信的帆破流向前,展示搏击的风采。

选择题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. 解释什么是嵌入式系统?嵌入式系统是指那些被嵌入到其他设备或系统中的计算机系统。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

嵌入式软件开发笔试题目

嵌入式软件开发笔试题目

嵌入式软件开发笔试题目
嵌入式软件开发笔试题目主要考察以下几个方面:
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、将一个字符串逆序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. 请解释一下“中断”的概念和作用,并说明在嵌入式系统中中断的优点和缺点。

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

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

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

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

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

嵌入式工程师笔试试卷及答案

嵌入式工程师笔试试卷及答案

嵌入式工程师笔试试卷及答案在嵌入式系统领域,嵌入式工程师是一种非常重要的职业。

他们需要掌握硬件和软件技能,以及在资源受限的环境下进行开发的技能。

本试卷旨在测试嵌入式工程师的专业知识和技能。

第一部分:选择题这一部分包括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个编程题,需要在规定的环境下编写代码。

嵌入式软件工程师笔试题华为

嵌入式软件工程师笔试题华为

嵌入式软件工程师笔试题华为IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】(一)1什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。

2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。

在这种情况下,可以将所有包含文件预编译为一个预编译头。

2char*constpcharconst*pconstchar*p上述三个有什么区别答案:char*constp;7请问以下代码有什么问题:int?main(){chara;char*str=&a;strcpy(str,"hello");printf(str);return0;}答案:没有为str分配内存空间,将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。

虽然可以正确输出结果,但因为越界进行内存读写而导致程序崩溃。

8Char*s="AAA";printf("%s",s);s[0]='B';printf("%s",s);有什么错?答案:"AAA"是字符串常量。

s是指针,指向这个字符串常量,所以声明s的时候就有问题。

cosntchar*s="AAA";然后又因为是常量,所以对是s[0]的赋值操作是不合法的。

9写一个“标准”宏,这个宏输入两个参数并返回较小的一个。

答案:.#defineMin(X,Y)((X)>(Y)(Y):(X))b=a^b;a=a^b;ora^=b^=a;17c和c++中的struct有什么不同?答案:c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。

c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private18.#include<>?#include<>?voidgetmemory(char*p){p=(char*)malloc(100);strcpy(p,"helloworld");}intmain(){char*str=NULL;getmemory(str);printf("%s/n",str);free(str);return0;}答案:程序崩溃,getmemory中的malloc不能返回动态内存,free()对str操作很危险19charszstr[10];产生什么结果为什么答案:长度不一样,会造成非法的OS20列举几种进程的同步机制,并比较其优缺点答案:原子操作信号量机制自旋锁管程,会合,分布式系统21.进程之间通信的途径答案:共享存储系统消息传递系统管道:以文件系统为基础22.进程死锁的原因答案:资源竞争及进程推进顺序非法23.死锁的4个必要条件答案:互斥、请求保持、不可剥夺、环路24.死锁的处理答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁25.操作系统中进程调度策略有哪几种答案:FCFS(先来先服务),优先级,时间片轮转,多级反馈26.类的静态成员和非静态成员有何区别?答案:类的静态成员每个类只有一个,非静态成员每个对象一个27.纯虚函数如何定义使用时应注意什么答案:virtualvoidf()=0;是接口,子类必须要实现28.数组和链表的区别答案:数组:数据顺序存储,固定大小;链表:数据可以随机存储,大小可动态改变的七层模型是什么?tcp/udp是属于哪一层tcp/udp有何优缺点答案:应用层表示层会话层传输层网络层链路层物理层;tcp/udp属于传输层;TCP服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。

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

嵌入式软件工程师笔试题华为集团公司文件内部编码:(TTT-UUTT-MMYB-URTTY-ITTLTY-(一)1什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。

2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。

在这种情况下,可以将所有包含文件预编译为一个预编译头。

2char*constpcharconst*pconstchar*p上述三个有什么区别答案:char*constp;//常量指针,p的值不可以修改charconst*p;//指向常量的指针,指向的常量值不可以改constchar*p;//和charconst*p3charstr1[]="abc";charstr2[]="abc";constcharstr3[]="abc";constcharstr4[]="abc";constchar*str5="abc";constchar*str6="abc";char*str7="abc";char*str8="abc";cout<<(str1==str2)<<endl;cout<<(str3==str4)<<endl;cout<<(str5==str6)<<endl;out<<(str7==str8)<<endl;结果是:0011str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。

4以下代码中的两个sizeof用法有问题吗?[C易]voidUpperCase(charstr[])//将str中的小写字母转换成大写字母{for(size_ti=0;i<sizeof(str)/sizeof(str[0]);++i)if('a'<=str[i]&&str[i]<='z')str[i]-=('a'-'A');}charstr[]="aBcDe";cout<<"str字符长度为:"<<sizeof(str)/sizeof(str[0])<<endl; UpperCase(str);cout<<str<<endl;答案:函数内的sizeof有问题。

根据语法,sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。

函数外的str 是一个静态定义的数组,因此其大小为6,因为还有'\0',函数内的str 实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4。

5一个32位的机器,该机器的指针是多少位答案:指针是多少位只要看地址总线的位数就行了。

80386以后的机子都是32的数据总线。

所以指针的位数就是4个字节了。

6main(){inta[5]={1,2,3,4,5};int*ptr=(int*)(&a+1);printf("%d,%d",*(a+1),*(ptr-1));}答案:25分析:*(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].7请问以下代码有什么问题:int?main(){chara;char*str=&a;strcpy(str,"hello");printf(str);return0;}答案:没有为str分配内存空间,将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。

虽然可以正确输出结果,但因为越界进行内存读写而导致程序崩溃。

8Char*s="AAA";printf("%s",s);s[0]='B';printf("%s",s);有什么错?答案:"AAA"是字符串常量。

s是指针,指向这个字符串常量,所以声明s的时候就有问题。

cosntchar*s="AAA";然后又因为是常量,所以对是s[0]的赋值操作是不合法的。

9写一个“标准”宏,这个宏输入两个参数并返回较小的一个。

答案:.#defineMin(X,Y)((X)>(Y)(Y):(X))//结尾没有‘;’10嵌入式系统中经常要用到无限循环,你怎么用C编写死循环答案:while(1){}或者for(;;)11关键字static的作用是什么?答案:定义静态变量或静态函数12关键字const有什么含意?答案:表示常量不可以修改的变量。

13关键字volatile有什么含意并举出三个不同的例子答案:提示编译器对象的值可能在编译器未监测到的情况下改变。

(1)并行设备的硬件寄存器(如状态寄存器)(2)中断函数中会访问到的非自动变量(3)多线程应用中被几个任务共享的变量14int(*s[10])(int)表示的是什么啊?答案:int(*s[10])(int)函数指针数组,每个指针指向一个intfunc(intparam)的函数。

15有以下表达式:inta=248,b=4;intconstc=21;constint*d=&a;int*conste=&b;intconst*fconst=&a;请问下列表达式哪些会被编译器禁止为什么答案:*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;*c这是个什么东东,禁止*d说了是const,禁止e=&a说了是const禁止const*fconst=&a;禁止16交换两个变量的值,不使用第三个变量。

即a=3,b=5,交换之后a=5,b=3;答案:有两种解法,一种用算术算法,一种用^(异或)。

a=a+b;b=a-b;a=a-b;或者a=a^b;//只能对int,char..b=a^b;a=a^b;ora^=b^=a;17c和c++中的struct有什么不同?答案:c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。

c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private 18.#include<stdio.h>?#include<stdlib.h>?voidgetmemory(char*p){p=(char*)malloc(100);strcpy(p,"helloworld");}intmain(){char*str=NULL;getmemory(str);printf("%s/n",str);free(str);return0;}答案:程序崩溃,getmemory中的malloc不能返回动态内存,free()对str操作很危险19charszstr[10];产生什么结果为什么答案:长度不一样,会造成非法的OS20列举几种进程的同步机制,并比较其优缺点答案:原子操作信号量机制自旋锁管程,会合,分布式系统21.进程之间通信的途径答案:共享存储系统消息传递系统管道:以文件系统为基础22.进程死锁的原因答案:资源竞争及进程推进顺序非法23.死锁的4个必要条件答案:互斥、请求保持、不可剥夺、环路24.死锁的处理答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁25.操作系统中进程调度策略有哪几种答案:FCFS(先来先服务),优先级,时间片轮转,多级反馈26.类的静态成员和非静态成员有何区别?答案:类的静态成员每个类只有一个,非静态成员每个对象一个27.纯虚函数如何定义使用时应注意什么答案:virtualvoidf()=0;是接口,子类必须要实现28.数组和链表的区别答案:数组:数据顺序存储,固定大小;链表:数据可以随机存储,大小可动态改变29.ISO的七层模型是什么?tcp/udp是属于哪一层tcp/udp有何优缺点答案:应用层表示层会话层传输层网络层链路层物理层;tcp/udp属于传输层;TCP服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。

与TCP不同,UDP并不提供对IP协议的可靠机制、流控制以及错误恢复功能等。

由于UDP比较简单,UDP头包含很少的字节,比TCP 负载消耗少。

tcp:提供稳定的传输服务,有流量控制,缺点是包头大,冗余性不好udp:不提供稳定的服务,包头小,开销小?30:(void*)ptr和(*(void**))ptr的结果是否相同?其中ptr为同一个指针答案:.(void*)ptr和(*(void**))ptr值是相同的31:intmain(){intx=3;printf("%d",x);return1;}问函数既然不会被其它函数调用,为什么要返回1?答案:mian中,c标准认为0表示成功,非0表示错误。

具体的值是某中具体出错信息32要对绝对地址0x100000赋值,我们可以用(unsignedint*)0x100000=1234;那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?答案:*((void(*)())0x100000)();首先要将0x100000强制转换成函数指针,即:(void(*)())0x100000然后再调用它:*((void(*)())0x100000)();用typedef可以看得更直观些:typedefvoid(*)()voidFuncPtr;*((voidFuncPtr)0x100000)();33,已知一个数组table,用一个宏定义,求出数据的元素个数答案:#defineNTBL(table)(sizeof(table)/sizeof(table[0]))34。

相关文档
最新文档