公文素材库 首页

201*华为面试心得点滴总结大全

时间:2019-05-28 18:00:58 网站:公文素材库

201*华为面试心得点滴总结大全

华为面试点滴总结这段时间所有的事情告一段落,正好有点时间写些最近自己面试心得,包括昨天刚结束的华为面试。自己不常去写东西的,更不会做一些无用的感慨,以前(包括现在)我一直觉得诗人就是懦弱的抒情汉,如同任何一个动物都会有发情期,我从不认为诗人会对人类历史的科学进步有任何的贡献可言。但令人讽刺的是,你会发现你身边会有很多诗人,从qq空间再到微博微信可略见一斑(无非都是想向他人证明自己存在感,更多的都是无病呻吟),当然我认同这是每个人的权利,而我在此只是表达自己态度而已,尊重但不提倡。所以有什么不同意见,我会悉心接受,但暂且姑妄听之。Okay,言归正传,网上有很多大牛都会分享一些自己的面试心得,自己算不上大牛,小牛都不算的,并非谦虚,实则诚实,也未曾想过哗众取宠,记得《Prisonbreak》里面MichaelScofield刚进监狱第一天被狱友戏称为fish,自己大概也如此吧,只不过自认为是只咸鱼,期待有咸鱼翻身当家作主的那么一天。希望有缘人看到,或多或少能够得到些许帮助,便是我的初衷。

最初是听同学说的华为最近在招聘实习生,华为对于学it的并不陌生,自己也满怀憧憬,因之前未在官网注册所以也没收到参加机试的短信邀请,便和同学一同前往,心想着应该会给机试机会吧,去了之后,一个HR说必须注册才能参加考试,只能回去注册下午再来,真是悲哀,大热天的从中南铁道校区到中南本部校区并非易事,有始有终,下午就去了,一批一批的进去上机考试,一道编程题,时间为30分钟,可以选择编程语言(C,C++,JAVA)都可以,自己对java比较熟悉(C++之前学的,忘了很多),便选择了JAVA的试题,题目是,请输入一个任意长度的17进制的字符串(如GG,12A),然后转化成10进制的输出。题目并不是很难,但老实说,你要是一开始思路方向找错了,那就完了,因为只有30min,所以,本人认为还是有一定难度的。下面是我写的程序,

和我不同批次的同学抽的题目是不同的,他大概给我说了一下题目,我回来之后也试图解答了一下,题目是一个加密算法,输入四位整数,每位数字加9并与10取余,得出的结果让个位与百位相替换,十位与千位相替换,并输出。我觉得我的方法不是很好,但能实现,也未去细细研究优化,若有大神可提出更好的解决方法。程序如下:

机试完后就回学校了,当天晚上收到短信邀请,说是第二天下午3点30参加在湖南大学的面试。第二天,自己提前半个多小时就到了湖大的一个大厅里,百十来号人吧,进去之后让拿出身份证(验明正身),然后交了简历,就去等待区,8个HR,每个HR对一个面试者,第一轮是技术面试,第二轮是综合面试,技术面试不通过直接pass,技术面试每人大概40min左右,一对一,看上去挺正式的,其实也确实有料。过了以后,考官念到我的名字,屁颠屁颠的就跟着他过去了,其实之前参加这种类似的面试笔试,可是如今还是有点小紧张。先简单的自我介绍了一下,然后就直入主题,问问做过什么开发之类的,自己本人做过学生管理系统(C/S架构)和企业邮箱登录系统(B/S)架构,虽然程序并不大,但都是自己完成的,然后HR问的比较深入,问具体怎么实现的,用到那些技术,自己这些还真不是虚的,所以没难到我(本人建议,简历上所写的项目经验千万别吹嘘,一定实打实的,做学问,不可有半点虚假,否则,你会死的很难堪的),又问了一些数据库之类的东西,主要是ORACLE的PL/SQL编程,问我是否编写过过程,函数,触发器等,幸好之前很深入的自学过,所以说了一些这部分内容,又问我自己编写的过程比较得意的是实现了什么功能,想想就用PL/SQL编写过分页技术,便如实回答。还问了一些自己过去编写的程序中比较得意的是什么项目或程序。之前看着视频编写过坦克大战,他又问我坦克对象的接口都有哪些,坐标,坦克方向等等。最后,给了我一张纸和笔,让我编写一个strcpy函数。这个估计大家都会,蛮简单的,便不再列出程序。写完之后,HR说挺好的,让我去综合面试等待区。这就是第一轮技术面试。

过了2个小时,因为还有人在一面,HR说,其他人先去吃饭,吃完发接着回来第二轮面试,唉这是要打持久战了,买了瓶水吃了些饼干就过来等着了。大概到晚上8点时,叫到我的名字开始第二轮综合面试,这次是通过技术面试的人,六人为一组开始群面,是一个项目经理吧,我也不确定。首先让每个人轮流用中文自我介绍。并问了一些基本情况。面试官看的挺和善的,总是面带微笑,但却往往是这种人杀人不见血,如果你被pass了,你都不知道怎么死的,呵呵,这或许才是真正的高手,杀人于无形之中。然后又让我们进行英文自我介绍,并用英文介绍一下家庭情况,自己英语还不是很差,感觉还蛮ok的,然后又问了问五年之后自己希望的生活状态以及自己对未来工作的规划,以及自己最大的梦想是什么,还问我愿不愿意去欧洲工作(当然愿意咯嘿嘿),综合面试也持续了大概30分钟吧。然后出来之后等结果,面试完后都感觉不错,过了一会结果出来了,六个人刷了三个人(那三个人一脸茫然),自己侥幸通过。

写到此,也差不多了,自己也就是想到哪就写到哪,写的不好,更谈不上文笔,但真实,童叟无欺,呵呵,希望能或多或少帮助到后来人面试华为,自己感觉华为真不是吹的,很公平也很正规,okay,就这样吧,写的不好,希望更多大神补充更正,共同进步。

201*/6/1622:33记

扩展阅读:【华为系列】华为面试总结

这篇文章是写给201*届的毕业生的,我想我这些日子的经历应该能给201*届的师弟和师妹们将来的校园招聘提供点帮助。一、准备阶段:

在华为面试之前,我把《软件设计师教程》大概的复习了一遍,时间实在太紧迫了,有些概念我也只是很粗糙地掠过去。10号下午还到图书馆借了一本《程序员面试攻略》,11号下午就差不多把那本书大概地啃完。二、笔试:

11号,收到短信通知当晚7:00在E栋笔试(只要是注册了电子简历的同学都有资格),考试种类分两种:硬件和软件,共四类题:填空,选择,改错,程序设计。基本上都是一些C/C++语言题,数据结构的树的前序、中序及后序排列,计算机网络里的IP报文中的TTL(Timetolive),数据库的操作等等;程序题有两道,一道题是关于数据结构的,另外有一道是“字符串A插入字符串B中”。虽然都基础,但题量太大,考试时间太短。大家都在喊没信心。三、面试:

第二天就有人接到通知去面试了,我们班一位同学去了,他很牛B,从第一轮到第四轮一直很顺利。我是第三天才和我们寝室另外的一位同学才接到面试通知的(不过我听说我们这一批接到通知的笔试分数普遍都很高),当然在前三天的等待时间里,我心情很郁闷,我还以为我没有慧通的面试资格了,所以一直在玩,希望有时真的是期而不遇,遇而不期阿。(其实笔试这一轮刷的人不多,大家以后没必要像我这样子提前就爆弃了)

我下午4:00准时到凯莱大酒店,一进去就感觉一股热气,大厅里也许是因为太热或者太紧张的缘故,每个人的脸都很红,很红。大概等了半个小时,我的心也跳得好厉害,我就到门口舒缓下情绪,很快一位帅哥就领我去第一轮面试了,他问我会什么,**,这问题该怎么答阿,然后我说我是电子科学与技术专业的,计算机基本上是靠自学的,大概他体会到自学的不易,他给我出了5道编程题,虽然很多,但基本上都不很难。(我一同专业的哥们虽然只有一道题,但却是用C语言编桌球的运动轨迹,妈啊,对于C语言的图像功能我都没接触到过阿),我的题目是:

1、1到100之间的所有素数之和;2、队列的实现;

3、选首领(有一群人围在一圈,从第一个人开始数1、2、3,数到3者退出,用循环链表实现)

4、字符串匹配问题(intcountABC(*s)输入任何一串字符串,计算机其中有连续ABC子字符串的个数)5、用数组存储超大数的问题。

6、询问我操作系统的进程和线程的区别

幸好这些题目在笔试前我就都已经见过了,虽然第四个题目,面试老师说我执行效率不高,但可以过得去了。哈哈,他直接通知我去进行第二轮面试了。

第二轮是资格面试,没多大问题,就聊聊家乡,聊聊自己的情况,这一关只要说话有分寸,一般都可以通过。第二轮面试完,就快到了晚饭的时间了,晚饭当然是慧通免费提供的,晚饭一过后,我就被一被称作是部长的面试官叫了进去,这一关一进去他直接拿了我《软件设计书》提问我:1、ping命令使用的是哪种报文?2、OSI分哪几个层,IP是在哪个层?3、哈希表的问题

4、为什么要采取二叉树这种数据结构?(折半查找)

5、两台计算机中的进程怎么互相通信,我说通过IP呗,他说除了IP呢?我卡住了,他说你听说过五元组吗?我只好老老实实的回答说不知道,然后他在那里给我解释一通,但我还是没搞明白,回来翻潘爱民老师的《计算机网络书》也没有。这一轮虽然第5个问题我有点卡壳,但老师说我毕竟是自学,还表扬了我,说我已经很不错了。面试完已经好晚了,华为的MM通知我第二天继续去进行第四轮的面试。

第二天,我按时到了考试地点,这一天,明显感觉气氛没有第一天的好,垂头丧气的好多。很快就通知我去面试了,这一轮面试的老师明显态度比前几轮差多了,问的问题都有点让我透不过气来,但终于挺了过去,最后他直接点到桌子上的一个题目:voidmain(){

char*p;*p=-130;

printf("%d",*p);}

正确的答案是126,原因:-130在计算机里面存储形式是

11111111-01111110(取反码的形式),因为C里面的CHAR是8位的,所以,最高位1去掉,剩下01111110。四、些许体会

面试,就是面试,不是学习,考试。你现在会多少东西固然重要,但更重要的是你得

让面试官知道,所以面试时把你的知识表达出来是最重要的。切记!面试表达是关键,你

可以先把自己熟悉的整理一下,不至于面试的时候磕磕碰碰的。面试,好比下棋。把握局

面,掌握主动权是关键。一旦你把面试官成功引入你的领地,让他把注意力关注在你熟悉

的领域,无暇自顾,那就尽情发挥吧,已经成功了一大半。所以从面试官拿到你的简历起

,就主动出击,别给他机会.

另外,在大肆开学初,一定要把各位的专业课翻出来看看,考软件的特别要多多看看基础的C语言,想找到好工作一定要从骨子里面重视起来。

=====================================

篇中提及的问题的解答:

1、1到100之间的所有素数之和;inti=1;intj=0;

boolchange=1;intsum=0;

for(i=1;iif(j==0)num++;}

}

5、用数组存储超大数的问题。这是数组得一个应用,思想是我们定义一个数组,让每一个元素得值都是从后到前以十进制得方式存贮得,如过到了9下一位就要让前一个元素进位为1,9变为0同时。

下面这个例子是要求一个40位的n!的值intdata[40];//存储40位书的整数数组intdigit;//数据位数变量inti,j,r,k;

intn;//用户输入值

for(i=1;i}

6、询问我操作系统的进程和线程的区别

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别,简而言之:一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。

另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

=========================================

1、ping命令使用的是哪种报文?

PING命令使用ICMP的哪种code类型:Echoreply(回显请求报文)

2、OSI分哪几个层,IP是在哪个层?

osi:物理层、链路层、网络层、传输层、会话层、管理层、应用层。tcp/ip:主机网络层、互联层、传输层、应用层。ip是在互联层3、哈希表的问题

主要用于快速查找检索方面

4、为什么要采取二叉树这种数据结构?他折半查找,可以减少查找比较次数5、五元组

二元组的定义:三元组的定义:

五元组的定义:

V是值的集合,O是操作的集合,G是构成名字的文法,M是存储的集合,S是从G能构成的名字几个到M的映射.

iP报文中的五元组(即源IP地址,源端口号,目的IP地址,目的端口,协议)。半相关

综上所述,网络中用一个三元组可以在全局唯一标志一个进程:(协议,本地地址,本地端口号)

这样一个三元组,叫做一个半相关(half-association),它指定连接的每半部分。

全相关

一个完整的网间进程通信需要由两个进程组成,并且只能使用同一种高层协议。也就是说,不可能通信的一端用TCP协议,而另一端用UDP协议。因此一个完整的网间通信需要一个五元组来标识:

(协议,本地地址,本地端口号,远地地址,远地端口号)

这样一个五元组,叫做一个相关(association),即两个协议相同的半相关才能组合成一个合适的相关,或完全指定组成一连接。

1任意入的字符串行判是否相等.不使用库函数,编写函数intstrcmp(char*source,char*dest)相等返回0,不等返回-1;

2、写一函数intfun(char*p)判断一字符串是否为回文,是返回1,不是返回0,出错返回

-1

1、局部变量能否和全局变量重名?

答:能,局部会屏蔽全局。要用全局变量,需要使用"::"

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

2、如何引用一个已经定义过的全局变量?

答:extern

可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

答:可以,在不同的C文件中以static形式来声明同名全局变量。

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个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,120

7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。

static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

8、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。

9、设有以下说明和定义:typedefunion{longi;intk[5];charc;}DATE;structdata{intcat;DATEcow;doubledog;}too;DATEmax;

则语句printf("%d",sizeof(structdate)+sizeof(max));的执行结果是:___52____

答:DATE是一个union,变量公用空间.里面最大的变量类型是int[5],占用20个字节.所以它的大小是20

data是一个struct,每个变量分开占用空间.依次为int4+DATE20+double8=32.所以结果是20+32=52.

当然...在某些16位编辑器下,int可能是2字节,那么结果是int2+DATE10+double8=20

10、队列和栈有什么区别?

队列先进先出,栈后进先出

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=p(arg1);

fun(&temp,&arg1,arg2);printf("%d\\n",*arg2);}

main(){

inta;

show(multi,10,&a);

return0;}答:110

12、请找出下面代码中的所以错误

说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

1、#include"string.h"2、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=src[len];10、while(len--!=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=&src[len-1];//指向最后一个字符while(len--!=0)*d++=*s--;

*d=0;//尾部要加\\0printf("%s\\n",dest);

free(dest);//使用完,应当释放空间,以免造成内存汇泄露return0;}

方法2:

#include#includemain(){

charstr[]="hello,world";intlen=strlen(str);chart;

for(inti=0;i{

t=str[i];

str[i]=str[len-i-1];str[len-i-1]=t;}

printf("%s",str);return0;}

1.-1,2,7,28,,126请问28和126中间那个数是什么?为什么?

第一题的答案应该是4^3-1=63

规律是n^3-1(当n为偶数0,2,4)n^3+1(当n为奇数1,3,5)

答案:63

2.用两个栈实现一个队列的功能?要求给出算法和思路!

设2个栈为A,B,一开始均为空.

入队:

将新元素push入栈A;

出队:

(1)判断栈B是否为空;

(2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;(3)将栈B的栈顶元素pop出;

这样实现的队列入队和出队的平摊复杂度都还是O(1),比上面的几种方法要好。3.在c语言库函数中将一个字符转换成整型的函数是atool()吗,这个函数的原型是什么?

函数名:atol

功能:把字符串转换成长整型数用法:longatol(constchar*nptr);程序例:#include#include

intmain(void){

longl;

char*str="98765432";l=atol(lstr);

printf("string=%sinteger=%ld\\n",str,l);return(0);}

13.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

c用宏定义,c++用inline

14.直接链接两个信令点的一组链路称作什么?

PPP点到点连接

15.接入网用的是什么接口?

16.voip都用了那些协议?

17.软件测试都有那些种类?

黑盒:针对系统功能的测试

白合:测试函数功能,各函数接口

18.确定模块的功能和模块的接口是在软件设计的那个队段完成的?

概要设计阶段

19.

enumstring{

x1,x2,x3=10,x4,x5,}x;

问x=0x801005,0x8010f4;

20.

unsignedchar*p1;unsignedlong*p2;

p1=(unsignedchar*)0x801000;p2=(unsignedlong*)0x810000;

请问p1+5=;p2+5=;选择题:

21.Ethternet链接到Internet用到以下那个协议?A.HDLC;B.ARP;C.UDP;D.TCP;E.ID

22.属于网络层协议的是:

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.请问下面程序有什么错误?

inta[60][250][1000],i,j,k;for(k=0;k

26.

#defineMax_CB500

voidLmiQueryCSmd(StructMSgCB*pmsg){

unsignedcharucCmdNum;......

for(ucCmdNum=0;ucCmdNum{......;}

死循环

27.以下是求一个数的平方的程序,请找出错误:

#defineSQUARE(a)((a)*(a))inta=5;intb;

b=SQUARE(a++);

28.

typedefunsignedcharBYTE

intexamply_fun(BYTEgt_len;BYTE*gt_code){

BYTE*gt_buf;

gt_buf=(BYTE*)MALLOC(Max_GT_Length);......

if(gt_len>Max_GT_Length){

returnGT_Length_ERROR;}.......}

问答题:

29.IPPhone的原理是什么?IPV6

30.TCP/IP通信建立的过程怎样,端口有什么作用?三次握手,确定是哪个应用程序使用该协议31.1号信令和7号信令有什么区别,我国某前广泛使用的是那一种?

32.列举5种以上的电话新业务?

Q1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?

:Q2:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用?:TCP与UDP呢?

:Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实:现的?

请问C++的类和C里面的struct有什么区别?

:Q5:请讲一讲析构函数和虚函数的用法和作用?

:Q6:全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器:是怎么知道的?

:Q7:一些寄存器的题目,我忘记了具体实什么题目,主要好像是寻址和内:存管理等一些知识,不记得了。

:Q8:8086是多少尉的系统?在数据总线上是怎么实现的?还有一些硬件方:面的知识我既不清楚了。

题目:一个黑暗的房间有三盏灯,房间外有三个开关.你只能进入房间一次,看你怎么来判断哪个开关控制哪个灯泡.

老题目了,先打开一盏灯A,5分钟后把灯关掉,开另外一个灯B,然后进去,亮着的就是B,摸一摸灯泡,暗的灯如果有热度,那就是A,剩下的就是C了

华为招聘--C语言笔试试题

一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)1、有数组定义inta[2][2]={{1},{2,3}};则a[0][1]的值为0。(T)2、int(*ptr)(),则ptr是一维数组的名字。(T)

注明:一个数组,其元素均为指针类型数据,称为指针数组.Int*p[4]Int(*p)()定义p是一个指向函数的指针变量.Int(*p)[4]这个是指向一维数组的指针变量.

3、指针在任何情况下都可进行>,=,charstr[]="Hello";char*p=str;intn=10;

sizeof(str)=()sizeof(p)=()sizeof(n)=()voidfunc(charstr[100]){}

sizeof(str)=()

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,不等返回-1;

2、写一函数intfun(char*p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1五、阅读程序题(每个小题5分,共20分)1.阅读以下程序,概括地写出程序的功能。#include

doubleExp(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(2,12);Tdatedday(1,2,1998);}运行结果:

4.阅读程序,写出程序运行时输出结果。#include#includeclassshape{public:

shape(doublex,doubley):xCoord(x),yCoord(y){}virtualdoubleArea()const{return0.0;}protected:

doublexCoord,yCoord;};

classAA:publicshape{public:

AA(doublex,doubley,doubler):shape(x,y),rad(r){}virtualdoubleArea()const{return3.0*rad*rad;}protected:doublerad;};

classBB:publicshape{public:

BB(doublex1,doubley1,doublex2,doubley2):shape(x1,y1),x2Coord(x2),y2Coord(y2){}virtualdoubleArea()const;protected:

doublex2Coord,y2Coord;};

doubleBB:Area()const

{returnfabs((xCoord-x2Coord)*(yCoord-y2Coord));//库函数fabs(doublet)求得t的绝对值}

voidfun(constshape&sp){cout六、编写程序题(每小题10分,共20分)

1.编写一个函数intJudge(int*pArray,intn),判断一个n×n二维整数数组pArray是否为“魔方阵”,若是返回1,否则返回0。所谓魔方阵就是将1到n2的各个数字组成的方阵,它的每一行、每一列以及两个对角线上数字之和均相等。例如,3×3的中,A是魔方阵,而B不是魔方阵。然后在主程序中调用Judge函数判断数组A是否为魔方阵。

参考程序#include

intJudge(int*pArray,intn){ints1,s2,s3,s4,sum=0;int*p=pArray;

for(inti=1;ivoidmain()

{intArray[3][3]={{8,1,6},{3,5,7},{4,9,2}};当x输入值为9999时,函数返回值为多少?intfun(unsignedintx){intcount=0;while(x){

x=x&(x-1);count++;}

returncount;}

答案:此函数是在计算x中含有1的个数,所以返回值为8。if(Judge((int*)Array,3))coutc[i]=c[i]%10;}

/*打印出来*/for(i=0;i}

void*p=malloc(100);请计算

sizeof(p)=?(5)

答:(1)17(2)4(3)4(4)4(5)4

3.回答下面的问题.(4分)

(1).头文件中的ifndef/define/endif干什么用?预处理答:防止头文件被重复引用

(2).#include和#include“filename.h”有什么区别?

答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。(3).在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?

答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern"C"修饰的变量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调用C函数。C++提供了一个C连接交换指定符号extern“C”来解决这个问题。

(4).switch()中不允许的数据类型是?答:实型

4.回答下面的问题(6分)(1).

VoidGetMemory(char**p,intnum){*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所指的内存内容。(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(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)它是类型无关的,因此具有很高的可复用性。

(3)它在编译时而不是运行时检查数据类型,保证了类型安全(4)它是平台无关的,可移植性(5)可用于基本数据类型

8.CSingleLock是干什么的。答:同步多个线程对一个数据类的同时访问

9.NEWTEXTMETRIC是什么。

答:物理字体结构,用来设置字体的高宽大小

10.程序什么时候应该使用线程,什么时候单线程效率高。答:1.耗时的操作使用线程,提高应用程序响应

2.并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。3.多CPU系统中,使用线程提高CPU利用率

4.改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。

其他情况都使用单线程。

11.Windows是内核级线程么。答:见下一题

12.Linux有内核级线程么。

答:线程通常被定义为一个进程中代码的不同执行路线。从实现方式上划分,线程有两种类型:“用户级线程”和“内核级线程”。用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。这种线程甚至在象DOS这样的操作系统中也可实现,但线程的调度需要用户程序完成,这有些类似Windows3.x的协作式多任务。另外一种则需要内核的参与,由内核完成线程的调度。其依赖于操作系统核心,由内核的内部需求进行创建和撤销,这两种模型各有其好处和缺点。用户线程不需要额外的内核开支,并且用户态线程的实现方式可以被定制或修改以适应特殊应用的要求,但是当一个线程因I/O而处于等待状态时,整个进程就会被调度程序切换为等待状态,其他线程得不到运行的机会;而内核线程则没有各个限制,有利于发挥多处理器的并发优势,但却占用了更多的系统开支。

WindowsNT和OS/2支持内核线程。Linux支持内核级的多线程

13.C++中什么数据分配在栈或堆中,New分配数据是在近堆还是远堆中?答:栈:存放局部变量,函数调用参数,函数返回值,函数返回地址。由系统管理堆:程序运行时动态申请,new和malloc申请的内存就在堆上近堆还是远堆不是很清楚。

14.使用线程是如何防止出现大的波峰。

答:意思是如何防止同时产生大量的线程,方法是使用线程池,线程池具有可以同时提高调度效率和限制资源使用的好处,线程池中的线程达到最大数时,其他线程就会排队等候。

15函数模板与类模板有什么区别?

答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。

16一般数据库若出现日志满了,会出现什么情况,是否还能使用?答:只能执行查询等读操作,不能执行更改,备份等写操作,原因是任何写操作都要记录日志。也就是说基本上处于不能使用的状态。

17SQLServer是否支持行级锁,有什么好处?

答:支持,设立封锁机制主要是为了对并发操作进行控制,对干扰进行封锁,保证数据的一致性和准确性,行级封锁确保在用户取得被更新的行到该行进行更新这段时间内不被其它用户所修改。因而行级锁即可保证数据的一致性又能提高数据操作的迸发性。

18如果数据库满了会出现什么情况,是否还能使用?答:见16

19关于内存对齐的问题以及sizof()的输出

答:编译器自动对齐的原因:为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;然而,对齐的内存访问仅需要一次访问。

20inti=10,j=10,k=3;k*=i+j;k最后的值是?

答:60,此题考察优先级,实际写成:k*=(i+j);,赋值运算符优先级最低

21.对数据库的一张表进行操作,同时要对另一张表进行操作,如何实现?答:将操作多个表的操作放入到事务中进行处理

22.TCP/IP建立连接的过程?(3-wayshake)

答:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

23.ICMP是什么协议,处于哪一层?

答:Internet控制报文协议,处于网络层(IP层)

24.触发器怎么工作的?

答:触发器主要是通过事件进行触发而被执行的,当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,数据库就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规则。

25.winsock建立连接的主要实现步骤?

答:服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。客户端:socker()建立套接字,连接(connect)服务器,连接上后使用send()和recv(),在套接字上写读数据,直至数据交换完毕,closesocket()关闭套接字。

服务器端:accept()发现有客户端连接,建立一个新的套接字,自身重新开始等待连接。该新产生的套接字使用send()和recv()写读数据,直至数据交换完毕,closesocket()关闭套接字。

26.动态连接库的两种方式?

答:调用一个DLL中的函数有两种方法:

1.载入时动态链接(load-timedynamiclinking),模块非常明确调用某个导出函数,使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向系统提供了载入DLL时所需的信息及DLL函数定位。

2.运行时动态链接(run-timedynamiclinking),运行时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProcAddress获取DLL函数的出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了。

27.IP组播有那些好处?答:Internet上产生的许多新的应用,特别是高带宽的多媒体应用,带来了带宽的急剧消耗和网络拥挤问题。组播是一种允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。组播可以大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。所以说组播技术的核心就是针对如何节约网络资源的前提下保证服务质量。

友情提示:本文中关于《201*华为面试心得点滴总结大全》给出的范例仅供您参考拓展思维使用,201*华为面试心得点滴总结大全:该篇文章建议您自主创作。

  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


201*华为面试心得点滴总结大全
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/604301.html
相关阅读
最近更新
推荐专题