上海贝尔面试题.doc 19页

  • 44.00 KB
  • 2022-06-16 12:32:29 发布

上海贝尔面试题.doc

  • 19页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
1#include“filename.h”和#include的区别?答:对于#include编译器从标准库开始搜索filename.h      对于#include“filename.h”编译器从用户工作路径开始搜索filename.h2   头文件的作用是什么?答:一、通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。二、头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。3    C++函数中值的传递方式有哪几种?答:C++函数的三种传递方式为:值传递、指针传递和引用传递。4    内存的分配方式的分配方式有几种?答:一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量。二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。三、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。5    实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数;答:双向链表删除一个节点Ptemplatevoidlist::delnode(intp){intk=1;listnode*ptr,*t;ptr=first;while(ptr->next!=NULL&&k!=p){    ptr=ptr->next;       k++;}      t=ptr->next;cout<<"你已经将数据项 "<data<<"删除"<next=ptr->next->next;length--;deletet;}在节点P后插入一个节点:templateboollist::insert(typet,intp){listnode*ptr;ptr=first;intk=1;while(ptr!=NULL&&knext;    k++;}if(ptr==NULL&&k!=p)    returnfalse;else{     listnode*tp;     tp=newlistnode;     tp->data=t;     tp->next=ptr->next;     ptr->next=tp;     length++;        returntrue;}}6    写一个函数,将其中的t都转换成4个空格。     voidchange(char*pstr)     {        while(*pstr++!="")        {           if(*pstr=="t")                                }      } 7    Windows程序的入口是哪里?写出Windows消息机制的流程.8    如何定义和实现一个类的成员函数为回调函数?9    C++里面是不是所有的动作都是main()引起的?如果不是,请举例.答:在运行c++程序时,通常从main()函数开始执行。因此如果没有main(),程序将不完整,编译器将指出未定义main()函数。     例外情况:如,在windows编程中,可以编写一个动态连接库(dll)模块,这是其他windows程序可以使用的代码。由于     DLL模块不是独立的程序,因此不需要main().用于专用环境的程序--如机器人中的控制器芯片--可能不需要main().但常规的独立程序都需要main().10C++里面如何声明constvoidf(void)函数为C程序中的库函数?11下列哪两个是等同的intb;Aconstint*a=&b;Bconst*inta=&b;Cconstint*consta=&b;Dintconst*consta=&b; 12内联函数在编译时是否做参数类型检查13三个float:a,b,c问值(a+b)+c==(b+a)+c(a+b)+c==(a+c)+b14把一个链表反向填空    voidreverse(test*head)    {       test*pe=head;       test*ps=head->next;       while(ps)        {             pe->next=ps->next;          ps->next=head;          head=ps;          ps=pe->next;       }     }        15设计一个重采样系统,说明如何anti-alias16某个程序在一个嵌入式系统(200M的CPU,50M的SDRAM)中已经最化了,换到另一个系统(300M的CPU,50M的SDRAM)中运行,还需要优化吗?17.下面哪种排序法对12354最快aquicksortb.bublesortc.mergesort18.哪种结构,平均来讲,获取一个值最快a.binarytreeb.hashtablec.stack19请问C++的类和C里面的struct有什么区别?答:c++的类的成员默认情况下是私有的,c的struct的成员默认情况下是公共的.20请讲一讲析构函数和虚函数的用法和作用?答:析构函数的作用是当对象生命期结束时释放对象所占用的资源。析构函数用法:析构函数是特殊的类成员函数它的名字和类名相同,没有返回值,没有参数不能随意调用也没有重载。只是在类对象生命期结束时有系统自动调用。     虚函数用在继承中,当在派生类中需要重新定义基类的函数时需要在基类中将该函数声明为虚函数,作用为使程序支持动态联遍。21全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?答:一些变量整个程序中都是可见的,它们称为全局变量,一些变量在函数内部定义且只在函数中可知,则称为局部变量。全局变量由编译器建立且存放在内存的全局数据区,局部变量存放在栈区22一些寄存器的题目,主要是寻址和内存管理等一些知识。238086是多少尉的系统?在数据总线上是怎么实现的? 24多态。overload和override的区别。答:重载在相同范围(同一个类中),函数名字相同,参数不同,virtual关键字可有可无。覆盖是指派生类函数覆盖基类函数,不同的范围,函数名字相同,参数相同,基类函数必须有virtual关键字。25.完成下列程序**.*.*..*..*..*...*...*...*...*....*....*....*....*....*.....*.....*.....*.....*.....*.....*......*......*......*......*......*......*......*.......*.......*.......*.......*.......*.......*.......*.......#includeusingnamespacestd;constintn=8;main(){     inti;     intj;     intk;     for(i=n;i>=1;i--)     {        for(j=0;jusingnamespacestd;voidsort(int*arr,intn);intmain(){     intarray[]={45,56,76,234,1,34,23,2,3};     sort(array,9);     for(inti=0;i<=8;i++)//曾经在这儿出界        cout<usingnamespacestd;intPheponatch(intn);main(){     intPh=Pheponatch(10);     cout<usingnamespacestd;intPheponatch(intn);main(){     intn;     cin>>n;     intph= Pheponatch(n);     cout<#include typedefstruct{     TNode*left;     TNode*right;     intvalue;}TNode; TNode*root=NULL; voidappend(intN); intmain() {     append(63);     append(45);     append(32);     append(77);     append(96);     append(21);     append(17);//Again,数字任意给出} voidappend(intN){TNode*NewNode=(TNode*)malloc(sizeof(TNode));NewNode->value=N; if(root==NULL){     root=NewNode;     return;}else{     TNode*temp;     temp=root;      while((N>=temp.value&&temp.left!=NULL)||(N=temp.value&&temp.left!=NULL)                   temp=temp.left;        while(N=temp.value)            temp.left=NewNode;     else            temp.right=NewNode;     return;        }}29.AclassBnetworkontheinternethasasubnetmaskof255.255.240.0,whatisthemaximumnumberofhostspersubnet         .a.240                    b.255                    c.4094                  d.6553430.Whatisthedifference:betweeno(logn)ando(logn^2),wherebothlogarithemshavebase.a.o(logn^2)isbigger                    b.o(logn)isbigger     c.nodifference31.Foraclasswhatwouldhappenifwecallaclass’sconstructorfromwiththesameclass’sconstructor         . a.compilationerror               b.linkingerrorc.stackoverflow                            d.noneoftheabove32.“new”inc++isa:         .a.libraryfunctionlikemallocincb.keyword                                      c.operatord.noneoftheabove33.Whichofthefollowinginformationisnotcontainedinaninode         .a.fileowner                                     b.filesizec.filename                                       d.diskaddress34.What’sthenumberofcomparisonsintheworstcasetomergetwosortedlistscontainingnelementseach         .a.2n             b.2n-1                   c.2n+1                  d.2n-235.TimecomplexityofnalgorithmT(n),wherenistheinputsize,isT(n)=T(n-1)+1/nifn>1otherwise1theorderofthisalgorithmis         .a.log(n)     b.n                       c.n^2                    d.n^n37.设计函数intatoi(char*s)。38.inti=(j=4,k=8,l=16,m=32);printf(“%d”,i);输出是多少?39.解释局部变量、全局变量和静态变量的含义。40.解释堆和栈的区别。栈区(stack)—     由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表.41.论述含参数的宏与函数的优缺点。42.以下三条输出语句分别输出什么?[C易]charstr1[]         = "abc";charstr2[]         ="abc";constcharstr3[]="abc";constcharstr4[]="abc";constchar*str5    ="abc";constchar*str6    ="abc";cout<"9")ch+=("A"-"9"-1);      charcl=c%0x10+"0";if(cl>"9")cl+=("A"-"9"-1);      cout<>temp;unsignedintconstsize2=temp;charstr2[size2];48.以下代码中的输出语句输出0吗,为什么?[C++易]structCLS{      intm_i;      CLS(inti):m_i(i){}      CLS()      {          CLS(0);      }};CLSobj;cout<=0;--i)//反向遍历array数组{      cout<(dest);      constchar*psrc=static_cast(src);      if(pdest>psrc&&pdest