您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 牛叉公司面试题集之C和C++版本
C/C++版本编辑:蓦然回首监制:杭州电大2010-04-102试题1:C语言面试题一——华为篇1.static有什么用途?(请至少说明两种)1)限制变量的作用域2)设置变量的存储域(堆,主动分配内存也是堆)2.引用与指针有什么区别?1)引用必须被初始化,指针不必。2)引用初始化以后不能被改变,指针可以改变所指的对象。3)不存在指向空值的引用,但是存在指向空值的指针。3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在栈5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于16.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源7.什么函数不能声明为虚函数?constructor(构造函数)8.冒泡排序算法的时间复杂度是什么?(其它排序算法的时间复杂度)O(n^2)9.写出floatx与“零值”比较的if语句。if(x0.000001&&x-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?tcp/ip应用层/传输层/网络层/数据链路层/物理层11.Internet物理地址和IP地址转换采用什么协议?ARP(AddressResolutionProtocol)(地址解析協議)18.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。19.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。循环链表,用取余操作做#includestdio.h#defineNULL0#defineTYPEstructstu#defineLENsizeof(structstu)structstu3{intdata;structstu*next;};TYPE*line(intn){intsum=1;structstu*head,*pf,*pb;inti;for(i=0;in;i++){pb=(TYPE*)malloc(LEN);pb-data=sum;if(i==0)pf=head=pb;elsepf-next=pb;if(i==(n-1))pb-next=head;elsepb-next=NULL;pf=pb;sum++;}return(head);}main(){intM,N,x,i;structstu*p,*q;printf(pleasescanfMandN(MN));scanf(%d%d,&M,&N);p=line(N);x=N;while(x){for(i=1;iM-1;i++){p=p-next;}q=p-next;printf(%d\n,q-data);4p-next=p-next-next;p=p-next;free(q);x--;}getch();}20.不能做switch()的参数类型是:switch的参数不能为实型。(只能是intchar)试题2: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)答案:632.用两个栈实现一个队列的功能?要求给出算法和思路!设2个栈为A,B,一开始均为空.入队:将新元素push入栈A;出队:(1)判断栈B是否为空;(2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;(3)将栈B的栈顶元素pop出;这样实现的队列入队和出队的平摊复杂度都还是O(1),比上面的几种方法要好。3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?函数名:atol功能:把字符串转换成长整型数用法:longatol(constchar*nptr);程序例:#includestdlib.h#includestdio.hintmain(void){longl;char*str=98765432;l=atol(lstr);5printf(string=%sinteger=%ld\n,str,l);return(0);}4.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?c用宏定义,c++用inline5.直接链接两个信令点的一组链路称作什么?PPP点到点连接6.接入网用的是什么接口?TCP/IP7.voip都用了那些协议?RTCP8.软件测试都有那些种类?黑盒:针对系统功能的测试白合:测试函数功能,各函数接口9.确定模块的功能和模块的接口是在软件设计的那个队段完成的?概要设计阶段11.unsignedchar*p1;unsignedlong*p2;p1=(unsignedchar*)0x801000;p2=(unsignedlong*)0x810000;请问p1+5=?;p2+5=?;答:p1+5=0x801005;p2+5=0x810020;二.选择题:1.Ethternet链接到Internet用到以下那个协议?DA.HDLC;B.ARP;C.UDP;D.TCP;E.ID2.属于网络层协议的是:BCA.TCP;B.IP;C.ICMP;D.X.253.Windows消息调度机制是:cA.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;4.unsignedshorthash(unsignedshortkey){return(key4)%256}请问hash(16),hash(256)的值分别是:A6A.1.16;B.8.32;C.4.16;D.1.32三.找错题:1.请问下面程序有什么错误?inta[60][250][1000],i,j,k;for(k=0;k1000;k++)for(j=0;j250;j++)for(i=0;i60;i++)a[i][j][k]=0;把循环语句内外换一下2.#defineMax_CB500voidLmiQueryCSmd(StructMSgCB*pmsg){unsignedcharucCmdNum;......for(ucCmdNum=0;ucCmdNumMax_CB;ucCmdNum++){......;}死循环(unsignedchar0到255)3.以下是求一个数的平方的程序,请找出错误:#defineSQUARE(a)((a)*(a))inta=5;intb;b=SQUARE(a++);4.typedefunsignedcharBYTEintexamply_fun(BYTEgt_len;BYTE*gt_code){BYTE*gt_buf;gt_buf=(BYTE*)MALLOC(Max_GT_Length);......if(gt_lenMax_GT_Length){returnGT_Length_ERROR;}.......}7试题3:华为全套完整试题高级题1、已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此结点,然后删除。slnodetype*Delete(slnodetype*Head,intkey){}中if(Head-number==key){Head=Pointer-next;free(Pointer);break;}Back=Pointer;Pointer=Pointer-next;if(Pointer-number==key){Back-next=Pointer-next;free(Pointer);break;}voiddelete(Node*p){if(Head=Node)while(p)}2、有一个16位的整数,每4位为一个数,写函数求他们的和。解释:整数1101010110110111和1101+0101+1011+0111感觉应该不难,当时对题理解的不是很清楚,所以写了一个函数,也不知道对不对。疑问:既然是16位的整数,1101010110110111是2进制的,那么函数参数怎么定义呢,请大虾指教。答案:用十进制做参数,计算时按二进制考虑。/*n就是16位的数,函数返回它的四个部分之和*/charSumOfQuaters(unsignedshortn){charc=0;inti=4;do{c+=n&15;n=n4;}while(--i);8returnc;}3、有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),使用交换,而且一次只能交换两个数.(华为)#includeiostream.hintmain(){inta[]={10,6,9,5,2,8,4,7,1,3};intlen=sizeof(a)/sizeof(int);inttemp;for(inti=0;ilen;){temp=a[a[i]-1];a[a[i]-1]=a[i];a[i]=temp;if(a[i]==i+1)i++;}for(intj=0;jlen;j++)couta[j],;return0;}试题4:(慧通)1、写出程序把一个链表中的接点顺序倒排typedefstructlinknode{intdata;structlinknode*next;}node;//将一个链表逆置node*reverse(node*head){node*p,*q,*r;p=head;q=p-next;while(q!=NULL){r=q-next;q-next=p;p=q;q=r;}9head-next=NULL;head=p;returnhead;}2、写出程序删除链表中的所有接点voiddel_all(node*head){node*p;while(head!=NULL){p=head-next;free(head);head=p;}cout释放空间成功!endl;}3、两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串voidinsert(char*s,char*t,inti){char*q=t;char*p=s;if(q==NULL)return;while(*p!='\0'){p++;}while(*q!=0){*p=*q;p++;q++;}*p='\0';}4、分析下面的代码:char*a=hello;char*b=hello;if(a==b)printf(YES);elseprintf(NO);10这个简单的面试题目,我选输出no(对比的应该是指针地址吧),可在VC是YES在C是NOlz的呢,是一个常量字符串。位于静态存储区,它在程序生命期内恒定不变。如果编译器优化的话,会有可能a和b同时指向同一个hello的。则地址相同。如果编译器没有优化,那么就是两个不同的地址,则不同。试题5:华为软件研发面试题21、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。要用全局变量,需要使用::;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。2、如何引用一个已经定义过的全局变量?答:extern可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错.4、请写出下列代码的输出内容#includestd
本文标题:牛叉公司面试题集之C和C++版本
链接地址:https://www.777doc.com/doc-4237907 .html