《2022201-华为面试心得点滴总结大全.docx》由会员分享,可在线阅读,更多相关《2022201-华为面试心得点滴总结大全.docx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022201*华为面试心得点滴总结大全 201*华为面试心得点滴总结大全华为面试点滴总结这段时间全部的事情告一段落,正好有点时间写些最近自己面试心得,包括昨天刚结束的华为面试。自己不常去写东西的,更不会做一些无用的感慨,以前(包括现在)我始终觉得诗人就是软弱的抒情汉,犹如任何一个动物都会有发情期,我从不认为诗人会对人类历史的科学进步有任何的贡献可言。但令人讽刺的是,你会发觉你身边会有许多诗人,从qq空间再到微博微信可略见一斑(无非都是想向他人证明自己存在感,更多的都是无病呻吟),当然我认同这是每个人的权利,而我在此只是表达自己看法而已,敬重但不提倡。所以有什么不同看法,我会悉心接受,但暂且姑
2、妄听之。Okay,言归正传,网上有许多大牛都会共享一些自己的面试心得,自己算不上大牛,小牛都不算的,并非虚心,实则诚恳,也未曾想过哗众取宠,记得Prisonbreak里面MichaelScofield刚进监狱第一天被狱友戏称为fish,自己也许也如此吧,只不过自认为是只咸鱼,期盼有咸鱼翻身当家作主的那么一天。希望有缘人看到,或多或少能够得到些许帮助,便是我的初衷。最初是听同学说的华为最近在聘请实习生,华为对于学it的并不生疏,自己也满怀向往,因之前未在官网注册所以也没收到参与机试的短信邀请,便和同学一同前往,心想着应当会给机试机会吧,去了之后,一个HR说必需注册才能参与考试,只能回去注册下午再
3、来,真是悲伤,大热天的从中南铁道校区到中南本部校区并非易事,有始有终,下午就去了,一批一批的进去上机考试,一道编程题,时间为30分钟,可以选择编程语言(C,C+,JAVA)都可以,自己对java比较熟识(C+之前学的,忘了许多),便选择了JAVA的试题,题目是,请输入一个随意长度的17进制的字符串(如GG,12A),然后转化成10进制的输出。题目并不是很难,但醇厚说,你要是一起先思路方向找错了,那就完了,因为只有30min,所以,本人认为还是有肯定难度的。下面是我写的程序,和我不同批次的同学抽的题目是不同的,他也许给我说了一下题目,我回来之后也试图解答了一下,题目是一个加密算法,输入四位整数,
4、每位数字加9并与10取余,得出的结果让个位与百位相替换,十位与千位相替换,并输出。我觉得我的方法不是很好,但能实现,也未去细细探讨优化,若有大神可提出更好的解决方法。程序如下:机试完后就回学校了,当天晚上收到短信邀请,说是其次天下午3点30参与在湖南高校的面试。其次天,自己提前半个多小时就到了湖大的一个大厅里,百十来号人吧,进去之后让拿出身份证(验明正身),然后交了简历,就去等待区,8个HR,每个HR对一个面试者,第一轮是技术面试,其次轮是综合面试,技术面试不通过干脆pass,技术面试每人也许40min左右,一对一,看上去挺正式的,其实也的确有料。过了以后,考官念到我的名字,屁颠屁颠的就跟着他
5、过去了,其实之前参与这种类似的面试笔试,可是如今还是有点小惊慌。先简洁的自我介绍了一下,然后就直入主题,问问做过什么开发之类的,自己本人做过学生管理系统(C/S架构)和企业邮箱登录系统(B/S)架构,虽然程序并不大,但都是自己完成的,然后HR问的比较深化,问详细怎么实现的,用到那些技术,自己这些还真不是虚的,所以没难到我(本人建议,简历上所写的项目阅历千万别吹嘘,肯定实打实的,做学问,不行有半点虚假,否则,你会死的很尴尬的),又问了一些数据库之类的东西,主要是ORACLE的PL/SQL编程,问我是否编写过过程,函数,触发器等,幸好之前很深化的自学过,所以说了一些这部分内容,又问我自己编写的过程
6、比较得意的是实现了什么功能,想想就用PL/SQL编写过分页技术,便照实回答。还问了一些自己过去编写的程序中比较得意的是什么项目或程序。之前看着视频编写过坦克大战,他又问我坦克对象的接口都有哪些,坐标,坦克方向等等。最终,给了我一张纸和笔,让我编写一个strcpy函数。这个估计大家都会,蛮简洁的,便不再列出程序。写完之后,HR说挺好的,让我去综合面试等待区。这就是第一轮技术面试。过了2个小时,因为还有人在一面,HR说,其他人先去吃饭,吃完发接着回来其次轮面试,唉这是要打长久战了,买了瓶水吃了些饼干就过来等着了。也许到晚上8点时,叫到我的名字起先其次轮综合面试,这次是通过技术面试的人,六人为一组起
7、先群面,是一个项目经理吧,我也不确定。首先让每个人轮番用中文自我介绍。并问了一些基本状况。面试官看的挺和善的,总是面带微笑,但却往往是这种人杀人不见血,假如你被pass了,你都不知道怎么死的,呵呵,这或许才是真正的高手,杀人于无形之中。然后又让我们进行英文自我介绍,并用英文介绍一下家庭状况,自己英语还不是很差,感觉还蛮ok的,然后又问了问五年之后自己希望的生活状态以及自己对将来工作的规划,以及自己最大的幻想是什么,还问我愿不情愿去欧洲工作(当然情愿咯嘿嘿),综合面试也持续了也许30分钟吧。然后出来之后等结果,面试完后都感觉不错,过了一会结果出来了,六个人刷了三个人(那三个人一脸茫然),自己侥幸
8、通过。写到此,也差不多了,自己也就是想到哪就写到哪,写的不好,更谈不上文笔,但真实,童叟无欺,呵呵,希望能或多或少帮助到后来人面试华为,自己感觉华为真不是吹的,很公允也很正规,okay,就这样吧,写的不好,希望更多大神补充更正,共同进步。201*/6/1622:33记扩展阅读:华为面试总结这篇文章是写给201*届的毕业生的,我想我这些日子的经验应当能给201*届的师弟和师妹们将来的校内聘请供应点帮助。一、打算阶段:在华为面试之前,我把软件设计师教程也许的复习了一遍,时间实在太紧迫了,有些概念我也只是很粗糙地拂过去。10号下午还到图书馆借了一本程序员面试攻略,11号下午就差不多把那本书也许地啃完
9、。二、笔试:11号,收到短信通知当晚7:00在E栋笔试(只要是注册了电子简历的同学都有资格),考试种类分两种:硬件和软件,共四类题:填空,选择,改错,程序设计。基本上都是一些C/C+语言题,数据结构的树的前序、中序及后序排列,计算机网络里的IP报文中的TTL(Timetolive),数据库的操作等等;程序题有两道,一道题是关于数据结构的,另外有一道是“字符串A插入字符串B中”。虽然都基础,但题量太大,考试时间太短。大家都在喊没信念。三、面试:其次天就有人接到通知去面试了,我们班一位同学去了,他很牛B,从第一轮到第四轮始终很顺当。我是第三天才和我们寝室另外的一位同学才接到面试通知的(不过我听说我
10、们这一批接到通知的笔试分数普遍都很高),当然在前三天的等待时间里,我心情很郁闷,我还以为我没有慧通的面试资格了,所以始终在玩,希望有时真的是期而不遇,遇而不期阿。(其实笔试这一轮刷的人不多,大家以后没必要像我这样子提前就爆弃了)我下午4:00准时到凯莱大酒店,一进去就感觉一股热气,大厅里或许是因为太热或者太惊慌的原因,每个人的脸都很红,很红。也许等了半个小时,我的心也跳得好厉害,我就到门口舒缓下心情,很快一位帅哥就领我去第一轮面试了,他问我会什么,*,这问题该怎么答阿,然后我说我是电子科学与技术专业的,计算机基本上是靠自学的,也许他体会到自学的不易,他给我出了5道编程题,虽然许多,但基本上都不
11、很难。(我一同专业的哥们虽然只有一道题,但却是用C语言编桌球的运动轨迹,妈啊,对于C语言的图像功能我都没接触到过阿),我的题目是:1、1到100之间的全部素数之和;2、队列的实现;3、选首领(有一群人围在一圈,从第一个人起先数1、2、3,数到3者退出,用循环链表实现)4、字符串匹配问题(intcountABC(*s)输入任何一串字符串,计算机其中有连续ABC子字符串的个数)5、用数组存储超大数的问题。6、询问我操作系统的进程和线程的区分幸好这些题目在笔试前我就都已经见过了,虽然第四个题目,面试老师说我执行效率不高,但可以过得去了。哈哈,他干脆通知我去进行其次轮面试了。其次轮是资格面试,没多大问
12、题,就聊聊家乡,聊聊自己的状况,这一关只要说话有分寸,一般都可以通过。其次轮面试完,就快到了晚饭的时间了,晚饭当然是慧通免费供应的,晚饭一过后,我就被一被称作是部长的面试官叫了进去,这一关一进去他干脆拿了我软件设计书提问我:1、ping吩咐运用的是哪种报文?2、OSI分哪几个层,IP是在哪个层?3、哈希表的问题4、为什么要实行二叉树这种数据结构?(折半查找)5、两台计算机中的进程怎么相互通信,我说通过IP呗,他说除了IP呢?我卡住了,他说你听说过五元组吗?我只好老醇厚实的回答说不知道,然后他在那里给我说明一通,但我还是没搞明白,回来翻潘爱民老师的计算机网络书也没有。这一轮虽然第5个问题我有点卡
13、壳,但老师说我终归是自学,还表扬了我,说我已经很不错了。面试完已经好晚了,华为的MM通知我其次天接着去进行第四轮的面试。其次天,我按时到了考试地点,这一天,明显感觉气氛没有第一天的好,没精打采的好多。很快就通知我去面试了,这一轮面试的老师明显看法比前几轮差多了,问的问题都有点让我透不过气来,但最终挺了过去,最终他干脆点到桌子上的一个题目:voidmain()char*p;*p=-130;printf(%d,*p);正确的答案是126,缘由:-130在计算机里面存储形式是11111111-01111110(取反码的形式),因为C里面的CHAR是8位的,所以,最高位1去掉,剩下01111110。四
14、、些许体会面试,就是面试,不是学习,考试。你现在会多少东西当然重要,但更重要的是你得让面试官知道,所以面试时把你的学问表达出来是最重要的。切记!面试表达是关键,你可以先把自己熟识的整理一下,不至于面试的时候磕磕碰碰的。面试,好比下棋。把握局面,驾驭主动权是关键。一旦你把面试官胜利引入你的领地,让他把留意力关注在你熟识的领域,无暇自顾,那就尽情发挥吧,已经胜利了一大半。所以从面试官拿到你的简历起,就主动出击,别给他机会.另外,在大肆开学初,肯定要把各位的专业课翻出来看看,考软件的特殊要多多看看基础的C语言,想找到好工作肯定要从骨子里面重视起来。篇中提及的问题的解答:1、1到100之间的全部素数之
15、和;inti=1;intj=0;boolchange=1;intsum=0;for(i=1;iif(j=0)num+;5、用数组存储超大数的问题。这是数组得一个应用,思想是我们定义一个数组,让每一个元素得值都是从后到前以十进制得方式存贮得,如过到了9下一位就要让前一个元素进位为1,9变为0同时。下面这个例子是要求一个40位的n!的值intdata40;/存储40位书的整数数组intdigit;/数据位数变量inti,j,r,k;intn;/用户输入值for(i=1;i6、询问我操作系统的进程和线程的区分进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性
16、。进程和线程的区分,简而言之:一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。1、ping吩咐运用的是哪种报文?PING吩咐运用ICMP的哪种code类型:Echoreply(回显恳求报文)2、OSI分哪几个层,IP是在哪个层?osi:物理层、链路层、网络层、传输层、会话层、管理层、应用层。tcp/ip:主机网络层、互联层、传输层、应用层。ip是在互联层3、哈希表的问题主要用于快速查找检索方面4、为什么要实行二叉树这种数据结构?他折半查找,可以削减查找
17、比较次数5、五元组二元组的定义:三元组的定义:五元组的定义:V是值的集合,O是操作的集合,G是构成名字的文法,M是存储的集合,S是从G能构成的名字几个到M的映射.iP报文中的五元组(即源IP地址,源端口号,目的IP地址,目的端口,协议)。半相关综上所述,网络中用一个三元组可以在全局唯一标记一个进程:(协议,本地地址,本地端口号)这样一个三元组,叫做一个半相关(half-association),它指定连接的每半部分。全相关一个完整的网间进程通信须要由两个进程组成,并且只能运用同一种高层协议。也就是说,不行能通信的一端用TCP协议,而另一端用UDP协议。因此一个完整的网间通信须要一个五元组来标识
18、:(协议,本地地址,本地端口号,远地地址,远地端口号)这样一个五元组,叫做一个相关(association),即两个协议相同的半相关才能组合成一个合适的相关,或完全指定组成一连接。1随意入的字符串行判是否相等.不运用库函数,编写函数intstrcmp(char*source,char*dest)相等返回0,不等返回-1;2、写一函数intfun(char*p)推断一字符串是否为回文,是返回1,不是返回0,出错返回-11、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。要用全局变量,须要运用:局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有
19、些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。2、如何引用一个已经定义过的全局变量?答:extern可以用引用头文件的方式,也可以用extern关键字,假如用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,假如你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。3、全局变量可不行以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名
20、的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错4、语句for(;1;)有什么问题?它是什么意思?答:和while(1)相同。5、dowhile和whiledo有什么区分?答:前一个循环一遍再推断,后一个推断以后再循环6、请写出下列代码的输出内容#includemain()inta,b,c,d;a=10;b=a+;c=+a;d=10*a+;printf(b,c,d:%d,%d,%d,b,c,d);return0;答:10,12,1207、static全局变量与一般的全局变量有什么区分?static局部变量和一般局部变量有什么区分?static函数与一般函数有什么区分?全
21、局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区分虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能运用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避开在其它源文件中引起错误。从以上分析可以看出,把局部变量变更为静态变量后是变更了它的存储方式即变更了它的生存期。把全局变量变更
22、为静态变量后是变更了它的作用域,限制了它的运用范围。static函数与一般函数作用域不同。仅在本文件。只在当前源文件中运用的函数应当说明为内部函数(static),内部函数应当在当前源文件中说明和定义。对于可在当前源文件以外运用的函数,应当在一个头文件中说明,要运用这些函数的源文件要包含这个头文件static全局变量与一般的全局变量有什么区分:static全局变量只初使化一次,防止在其他文件单元中被引用;static局部变量和一般局部变量有什么区分:static局部变量只被初始化一次,下一次依据上一次结果值;static函数与一般函数有什么区分:static函数在内存中只有一份,一般函数在每个
23、被调用中维持一份拷贝8、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。9、设有以下说明和定义:typedefunionlongi;intk5;charc;DATE;structdataintcat;DATEcow;doubledog;too;DATEmax;则语句printf(%d,sizeof(structdate)+sizeof(max);的执行结果是:_52_答:DATE是一个union,变量公用空间.里面最大的变量类型是int5,占用20个字节.所以它的大小是20data是一个struct,每个变量分开占用空间.依次为int4+DATE20+d
24、ouble8=32.所以结果是20+32=52.当然.在某些16位编辑器下,int可能是2字节,那么结果是int2+DATE10+double8=2010、队列和栈有什么区分?队列先进先出,栈后进先出11、写出下列代码的输出内容#includeintinc(inta)return(+a);intmulti(int*a,int*b,int*c)return(*c=*a*b);typedefint(FUNC1)(intin);typedefint(FUNC2)(int*,int*,int*);voidshow(FUNC2fun,intarg1,int*arg2)INCp=&inc;inttemp=
25、p(arg1);fun(&temp,&arg1,arg2);printf(%dn,*arg2);main()inta;show(multi,10,&a);return0;答:11012、请找出下面代码中的所以错误说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”1、#includestring.h2、main()3、4、char*src=hello,world;5、char*dest=NULL;6、intlen=strlen(src);7、dest=(char*)malloc(len);8、char*d=dest;9、char*s=srclen;10、while(len-!
26、=0)11、d+=s-;12、printf(%s,dest);13、return0;14、答:方法1:intmain()char*src=hello,world;intlen=strlen(src);char*dest=(char*)malloc(len+1);/要为0安排一个空间char*d=dest;char*s=&srclen-1;/指向最终一个字符while(len-!=0)*d+=*s-;*d=0;/尾部要加0printf(%sn,dest);free(dest);/运用完,应当释放空间,以免造成内存汇泄露return0;方法2:#include#includemain()chars
27、tr=hello,world;intlen=strlen(str);chart;for(inti=0;it=stri;stri=strlen-i-1;strlen-i-1=t;printf(%s,str);return0;1.-1,2,7,28,126请问28和126中间那个数是什么?为什么?第一题的答案应当是43-1=63规律是n3-1(当n为偶数0,2,4)n3+1(当n为奇数1,3,5)答案:632.用两个栈实现一个队列的功能?要求给出算法和思路!设2个栈为A,B,一起先均为空.入队:将新元素push入栈A;出队:(1)推断栈B是否为空;(2)假如不为空,则将栈A中全部元素依次pop出并
28、push到栈B;(3)将栈B的栈顶元素pop出;这样实现的队列入队和出队的平摊困难度都还是O(1),比上面的几种方法要好。3.在c语言库函数中将一个字符转换成整型的函数是atool()吗,这个函数的原型是什么?函数名:atol功能:把字符串转换成长整型数用法:longatol(constchar*nptr);程序例:#include#includeintmain(void)longl;char*str=98765432;l=atol(lstr);printf(string=%sinteger=%ldn,str,l);return(0);13.对于一个频繁运用的短小函数,在C语言中应用什么实现,
29、在C+中应用什么实现?c用宏定义,c+用inline14.干脆链接两个信令点的一组链路称作什么?PPP点到点连接15.接入网用的是什么接口?16.voip都用了那些协议?17.软件测试都有那些种类?黑盒:针对系统功能的测试白合:测试函数功能,各函数接口18.确定模块的功能和模块的接口是在软件设计的那个队段完成的?概要设计阶段19.enumstringx1,x2,x3=10,x4,x5,x;问x=0x801005,0x8010f4;20.unsignedchar*p1;unsignedlong*p2;p1=(unsignedchar*)0x801000;p2=(unsignedlong*)0x8
30、10000;请问p1+5=;p2+5=;选择题:21.Ethternet链接到Internet用到以下那个协议?A.HDLC;B.ARP;C.UDP;D.TCP;E.ID22.属于网络层协议的是:A.TCP;B.IP;C.ICMP;D.X.2523.Windows消息调度机制是:A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;24.unsignedshorthash(unsignedshortkey)return(key)%256请问hash(16),hash(256)的值分别是:A.1.16;B.8.32;C.4.16;D.1.32找错题:25.请问下面程序有什么错误?inta602
31、501000,i,j,k;for(k=0;k26.#defineMax_CB500voidLmiQueryCSmd(StructMSgCB*pmsg)unsignedcharucCmdNum;.for(ucCmdNum=0;ucCmdNum.;死循环27.以下是求一个数的平方的程序,请找出错误:#defineSQUARE(a)(a)*(a)inta=5;intb;b=SQUARE(a+);28.typedefunsignedcharBYTEintexamply_fun(BYTEgt_len;BYTE*gt_code)BYTE*gt_buf;gt_buf=(BYTE*)MALLOC(Max_GT
32、_Length);.if(gt_lenMax_GT_Length)returnGT_Length_ERROR;.问答题:29.IPPhone的原理是什么?IPV630.TCP/IP通信建立的过程怎样,端口有什么作用?三次握手,确定是哪个应用程序运用该协议31.1号信令和7号信令有什么区分,我国某前广泛运用的是那一种?32.列举5种以上的电话新业务?Q1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?:Q2:请你具体的说明一下IP协议的定义,在哪个层上面,主要有什么作用?:TCP与UDP呢?:Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实:现的?请问C+的类
33、和C里面的struct有什么区分?:Q5:请讲一讲析构函数和虚函数的用法和作用?:Q6:全局变量和局部变量有什么区分?实怎么实现的?操作系统和编译器:是怎么知道的?:Q7:一些寄存器的题目,我遗忘了详细实什么题目,主要似乎是寻址和内:存管理等一些学问,不记得了。:Q8:8086是多少尉的系统?在数据总线上是怎么实现的?还有一些硬件方:面的学问我既不清晰了。题目:一个黑暗的房间有三盏灯,房间外有三个开关.你只能进入房间一次,看你怎么来推断哪个开关限制哪个灯泡.老题目了,先打开一盏灯,分钟后把灯关掉,开另外一个灯,然后进去,亮着的就是,摸一摸灯泡,暗的灯假如有热度,那就是,剩下的就是了华为聘请-C
34、语言笔试试题一、推断题(对的写T,错的写F并说明缘由,每小题4分,共20分)1、有数组定义inta22=1,2,3;则a01的值为0。(T)2、int(*ptr)(),则ptr是一维数组的名字。(T)注明:一个数组,其元素均为指针类型数据,称为指针数组.Int*p4Int(*p)()定义p是一个指向函数的指针变量.Int(*p)4这个是指向一维数组的指针变量.3、指针在任何状况下都可进行,=,charstr=Hello;char*p=str;intn=10;sizeof(str)=()sizeof(p)=()sizeof(n)=()voidfunc(charstr100)sizeof(str)
35、=()2、voidsetmemory(char*p,intnum)*p=(char*)malloc(num);voidtest(void)char*str=NULL;getmemory(&str,100);strcpy(str,hello);printf(str);运行test函数有什么结果?()10分3、设intarr=6,7,8,9,10;int*ptr=arr;*(ptr+)+=123;printf(%d,%d,*ptr,*(+ptr);()10分二、编程题(第一小题20,其次小题30分)1、不运用库函数,编写函数intstrcmp(char*source,char*dest)相等返回0
36、,不等返回-1;2、写一函数intfun(char*p)推断一字符串是否为回文,是返回1,不是返回0,出错返回-1五、阅读程序题(每个小题5分,共20分)1阅读以下程序,概括地写出程序的功能。includedoubleExp(doublex)doublesum=1.0;doubleterm=x;doublei=1;while(term=1.0E-8)sum+=term;i+;term=term*x/i;returnsum;voidmain()doubles;s=Exp(1.0)+Exp(2.0);cout.precision(8);coutcoutTdatebday(10);Tdatecday
37、(2,12);Tdatedday(1,2,1998);运行结果:4阅读程序,写出程序运行时输出结果。includeincludeclassshapepublic:shape(doublex,doubley):xCoord(x),yCoord(y)virtualdoubleArea()constreturn0.0;protected:doublexCoord,yCoord;classAA:publicshapepublic:AA(doublex,doubley,doubler):shape(x,y),rad(r)virtualdoubleArea()constreturn3.0*rad*rad;
38、protected:doublerad;classBB:publicshapepublic:BB(doublex1,doubley1,doublex2,doubley2):shape(x1,y1),x2Coord(x2),y2Coord(y2)virtualdoubleArea()const;protected:doublex2Coord,y2Coord;doubleBB:Area()constreturnfabs(xCoord-x2Coord)*(yCoord-y2Coord);/库函数fabs(doublet)求得t的肯定值voidfun(constshape&sp)cout六、编写程序题
39、(每小题10分,共20分)1.编写一个函数intJudge(int*pArray,intn),推断一个nn二维整数数组pArray是否为“魔方阵”,若是返回1,否则返回0。所谓魔方阵就是将1到n2的各个数字组成的方阵,它的每一行、每一列以及两个对角线上数字之和均相等。例如,33的中,A是魔方阵,而B不是魔方阵。然后在主程序中调用Judge函数推断数组A是否为魔方阵。参考程序includeintJudge(int*pArray,intn)ints1,s2,s3,s4,sum=0;int*p=pArray;for(inti=1;ivoidmain()intArray33=8,1,6,3,5,7,4
40、,9,2;当x输入值为9999时,函数返回值为多少?intfun(unsignedintx)intcount=0;while(x)x=x&(x-1);count+;returncount;答案:此函数是在计算x中含有1的个数,所以返回值为8。if(Judge(int*)Array,3)coutci=ci%10;/*打印出来*/for(i=0;ivoid*p=malloc(100);请计算sizeof(p)=?(5)答:(1)17(2)4(3)4(4)4(5)43.回答下面的问题.(4分)(1).头文件中的ifndef/define/endif干什么用?预处理答:防止头文件被重复引用(2).#i
41、nclude和#include“filename.h”有什么区分?答:前者用来包含开发环境供应的库头文件,后者用来包含自己编写的头文件。(3).在C+程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?答:函数和变量被C+编译后在符号库中的名字与C语言的不同,被externC修饰的变量和函数是根据C语言方式编译和连接的。由于编译后的名字不同,C+程序不能干脆调用C函数。C+供应了一个C连接交换指定符号extern“C”来解决这个问题。(4).switch()中不允许的数据类型是?答:实型4.回答下面的问题(6分)(1).VoidGetMemory(char*p,intnum)*
42、p=(char*)malloc(num);voidTest(void)char*str=NULL;GetMemory(&str,100);strcpy(str,hello);printf(str);请问运行Test函数会有什么样的结果?答:输出“hello”(2).voidTest(void)char*str=(char*)malloc(100);strcpy(str,“hello”);free(str);if(str!=NULL)strcpy(str,“world”);printf(str);请问运行Test函数会有什么样的结果?答:输出“world”,因为free(str)后并未变更str
43、所指的内存内容。(3).char*GetMemory(void)charp=helloworld;returnp;voidTest(void)char*str=NULL;str=GetMemory();printf(str);请问运行Test函数会有什么样的结果?答:无效的指针,输出不确定5.编写strcat函数(6分)已知strcat函数的原型是char*strcat(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串。(1)不调用C+/C的字符串库函数,请编写函数strcat答:VC源码:char*_cdeclstrcat(
44、char*dst,constchar*src)char*cp=dst;while(*cp)cp+;/*findendofdst*/while(*cp+=*src+);/*Copysrctoendofdst*/return(dst);/*returndst*/(2)strcat能把strSrc的内容连接到strDest,为什么还要char*类型的返回值?答:便利赋值给其他变量6.MFC中CString是类型平安类么?答:不是,其它数据类型转换到CString可以运用CString的成员函数Format来转换7.C+中为什么用模板类。答:(1)可用来创建动态增长和减小的数据结构(2)它是类型无关的
45、,因此具有很高的可复用性。(3)它在编译时而不是运行时检查数据类型,保证了类型平安(4)它是平台无关的,可移植性(5)可用于基本数据类型8.CSingleLock是干什么的。答:同步多个线程对一个数据类的同时访问9.NEWTEXTMETRIC是什么。答:物理字体结构,用来设置字体的高宽大小10.程序什么时候应当运用线程,什么时候单线程效率高。答:1耗时的操作运用线程,提高应用程序响应2并行操作时运用线程,如C/S架构的服务器端并发线程响应用户的恳求。3多CPU系统中,运用线程提高CPU利用率4改善程序结构。一个既长又困难的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利
46、于理解和修改。其他状况都运用单线程。11.Windows是内核级线程么。答:见下一题12.Linux有内核级线程么。答:线程通常被定义为一个进程中代码的不同执行路途。从实现方式上划分,线程有两种类型:“用户级线程”和“内核级线程”。用户线程指不须要内核支持而在用户程序中实现的线程,其不依靠于操作系统核心,应用进程利用线程库供应创建、同步、调度和管理线程的函数来限制用户线程。这种线程甚至在象DOS这样的操作系统中也可实现,但线程的调度须要用户程序完成,这有些类似Windows3.x的协作式多任务。另外一种则须要内核的参加,由内核完成线程的调度。其依靠于操作系统核心,由内核的内部需求进行创建和撤销,这两种模型各有其好处和缺点。用户线程不须要额外的内核开支,并且用户态线程的实现方式可以被定制或修改以适应特别应用的要求,但是当一个线程因I/O而处于等待状态时,整个进程就会被调度程序切换为等待状态,其他线程得不到运行的机会;而内核线程则没有各个限制,有利于发挥多处理器的并发优势,但却占用了更多的系统开支。WindowsNT和OS/2支持内核线程。Linux支持内核级的多线程13.C+中什么数据