华为C++面试题、笔试题及答案经典复习过程.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《华为C++面试题、笔试题及答案经典复习过程.doc》由会员分享,可在线阅读,更多相关《华为C++面试题、笔试题及答案经典复习过程.doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。华为C+面试题、笔试题及答案经典-(一)初级题1.什么是预编译,何时需要预编译:答:(1)总是使用不经常改动的大型代码体(2)程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头2.char*constpcharconst*pconstchar*p上述三个有什么区别?答:char*constp;/常量指针,p的值不可以修改charconst*p;/指向常量的指针,指向的常量值不可以改constchar*p;/和charconst*p3
2、.charstr1=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;cout(str7=str8)endl;结果是:0011str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。4.以下代码中的两个s
3、izeof用法有问题吗?voidUpperCase(charstr)/将str中的小写字母转换成大写字母for(size_ti=0;isizeof(str)/sizeof(str0);+i)if(a=stri&stri=z)stri-=(a-A);charstr=aBcDe;coutstr字符长度为:sizeof(str)/sizeof(str0)endl;UpperCase(str);coutstr(Y)?(Y):(X)/结尾没有;10.嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。答:while(1)或者for(;)11.关键字static的作用是什么?答:定义静态变量12.关键字
4、const有什么含意?答:表示常量不可以修改的变量。13.关键字volatile有什么含意?并举出三个不同的例子?答:提示编译器对象的值可能在编译器未监测到的情况下改变。14.int(*s10)(int)表示的是什么啊?答:int(*s10)(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=0x3
5、21f;16.交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3;答:有两种解法,一种用算术算法,一种用(异或)a=a+b;b=a-b;a=a-b;ora=ab;/只能对int,char.b=ab;a=ab;ora=b=a;17.#include#includevoidgetmemory(char*p)p=(char*)malloc(100);strcpy(p,helloworld);intmain()char*str=NULL;getmemory(str);printf(%s/n,str);free(str);return0;答:程序崩溃,getmemory中的ma
6、lloc不能返回动态内存,free()对str操作很危险18.列举几种进程的同步机制,并比较其优缺点。答:原子操作、信号量机制、自旋锁、管程、会合、分布式系统19.进程之间通信的途径答:共享存储系统、消息传递系统、管道:以文件系统为基础20.进程死锁的原因和4个必要条件答:资源竞争及进程推进顺序非法;互斥、请求保持、不可剥夺、环路21.死锁的处理答:鸵鸟策略、预防策略、避免策略、检测与解除死锁22.操作系统中进程调度策略有哪几种?答:FCFS(先来先服务),优先级,时间片轮转,多级反馈23.类的静态成员和非静态成员有何区别?答:类的静态成员每个类只有一个,非静态成员每个对象一个24.纯虚函数如
7、何定义?使用时应注意什么?答:virtualvoidf()=0;是接口,子类必须要实现25.数组和链表的区别答:数组:数据顺序存储,固定大小链表:数据可以随机存储,大小可动态改变26.ISO的七层模型是什么?tcp/udp是属于哪一层?tcp/udp有何优缺点?答:应用层、表示层、会话层、运输层、网络层、物理链路层、物理层tcp/udp属于运输层TCP服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。与TCP不同,UDP并不提供对IP协议的可靠机制、流控制以及错误恢复功能等。由于UDP比较简单,UDP头包含很少的字节,比TCP负载消耗少tcp:提供稳定的传输服务,有流量控制
8、,缺点是包头大,冗余性不好udp:不提供稳定的服务,包头小,开销小27.(void*)ptr和(*(void*)ptr的结果是否相同?其中ptr为同一个指针答:(void*)ptr和(*(void*)ptr值是相同的28.intmain()intx=3;printf(%d,x);return1;问函数既然不会被其它函数调用,为什么要返回1?答:main中,c标准认为0表示成功,非0表示错误。具体的值是某中具体出错信息29.要对绝对地址0x100000赋值,我们可以用(unsignedint*)0x100000=1234;那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?答:*
9、(void(*)()0x100000)();首先要将0x100000强制转换成函数指针,即:(void(*)()0x100000。然后再调用它:*(void(*)()0x100000)();用typedef可以看得更直观些:typedefvoid(*)()voidFuncPtr;*(voidFuncPtr)0x100000)();30.已知一个数组table,用一个宏定义,求出数据的元素个数答:#defineNTBL#defineNTBL(sizeof(table)/sizeof(table0)31.线程与进程的区别和联系?线程是否具有相同的堆栈?dll是否有独立的堆栈?答:进程是死的,只是一
10、些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。每个线程有自己的堆栈。DLL中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中的代码是EXE中的线程所调用,那么这个时候是不是说这个DLL没有自己独立的堆栈?如果DLL中的代码是由DLL自己创建的线程所执行,那么是不是说DLL有独立的堆栈?以上讲的是堆栈,如果对于堆来说,每个DLL有自己的堆,所以如果是从DLL中动态分配的内存,最好是从DLL中删除,如果你从DLL中分配内存,然后在EXE中,或者另外一个DLL中删除,很
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为 C+ 试题 笔试 答案 经典 复习 过程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内