CC++语言程序设计笔试面试题17.docx
- 文档编号:29730984
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:17
- 大小:21.16KB
CC++语言程序设计笔试面试题17.docx
《CC++语言程序设计笔试面试题17.docx》由会员分享,可在线阅读,更多相关《CC++语言程序设计笔试面试题17.docx(17页珍藏版)》请在冰豆网上搜索。
CC++语言程序设计笔试面试题17
44.以下代码中的两个sizeof用法有问题吗?
[C易]
voidUpperCase(charstr[])//将str中的小写字母转换成大写字母
{
for(size_ti=0;iif('a'<=str[i]&&str[i]<='z')
str[i]-=('a'-'A');
}
charstr[]="aBcDe";
cout<<"str字符长度为:
"< UpperCase(str); cout< 45.以下代码有什么问题? [C难] voidchar2Hex(charc)//将字符以16进制表示 { charch=c/0x10+'0';if(ch>'9')ch+=('A'-'9'-1); charcl=c%0x10+'0';if(cl>'9')cl+=('A'-'9'-1); cout< } charstr[]="Ilove中国"; for(size_ti=0;ichar2Hex(str[i]); cout< 46.以下代码有什么问题? [C++易] structTest { Test(int){} Test(){} voidfun(){} }; voidmain(void) { Testa (1); a.fun(); Testb(); b.fun(); } ***Testb();//定义了一个函数 47.以下代码有什么问题? [C++易] cout<<(true? 1: "1")< 8.以下代码能够编译通过吗,为什么? [C++易] unsignedintconstsize1=2; charstr1[size1]; unsignedinttemp=0; cin>>temp; unsignedintconstsize2=temp; charstr2[size2]; 48.以下代码中的输出语句输出0吗,为什么? [C++易] structCLS { intm_i; CLS(inti): m_i(i){} CLS() { CLS(0); } }; CLSobj; cout< 49.C++中的空类,默认产生哪些类成员函数? [C++易] 答: classEmpty { public: Empty();//缺省构造函数 Empty(constEmpty&);//拷贝构造函数 ~Empty();//析构函数 Empty&operator=(constEmpty&);//赋值运算符 Empty*operator&();//取址运算符 constEmpty*operator&()const;//取址运算符const }; 50.以下两条输出语句分别输出什么? [C++难] floata=1.0f; cout<<(int)a< cout<<(int&)a< cout< floatb=0.0f; cout<<(int)b< cout<<(int&)b< cout< 51.以下反向遍历array数组的方法有什么错误? [STL易] vectorarray; array.push_back (1); array.push_back (2); array.push_back(3); for(vector: : size_typei=array.size()-1;i>=0;--i)//反向遍历array数组 { cout< } 52.以下代码有什么问题? [STL易] typedefvectorIntArray; IntArrayarray; array.push_back (1); array.push_back (2); array.push_back (2); array.push_back(3); //删除array数组中所有的2 for(IntArray: : iteratoritor=array.begin();itor! =array.end();++itor) { if(2==*itor)array.erase(itor); } 53.写一个函数,完成内存之间的拷贝。 [考虑问题是否全面] 答: void*mymemcpy(void*dest,constvoid*src,size_tcount) { char*pdest=static_cast(dest); constchar*psrc=static_cast(src); if(pdest>psrc&&pdest{ for(size_ti=count-1;i! =-1;--i) pdest[i]=psrc[i]; } else { for(size_ti=0;ipdest[i]=psrc[i]; } returndest; } intmain(void) { charstr[]="0123456789"; mymemcpy(str+1,str+0,9); cout< system("Pause"); return0; } 54线程与进程的区别 进程: (在批处理系统中)是资源分配的最小单位 线程: 最独立运行的最小单位。 一个进程中可以一个或多个线程。 当系统的资源分配给进程,线程从所属的进程中得到保证能运行的很少的资源 ,线程完成后把资源“还”给进程,只有当进程中的线程全都完成后,进程才把占有的系统的资源释放(进程挂 起除外)。 Top 55: 请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图? 56: 请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢? IP协议是网络层的协议,它实现了Internet中自动路由的功能,即寻径的功能,TCP协议是一个传输性的协议它向 下屏蔽了IP协议不可靠传输的特性,向上提供一个可靠的点到点的传输,UDP提供的是一种无连接的服务,主要考 虑到很多应用不需要可靠的连接,但需要快速的传输 57: 请问交换机和路由器分别的实现原理是什么? 分别在哪个层次上面实现的? 交换机用在局域网中,交换机通过纪录局域网内各节点机器的MAC地质(物理地址)就可以实现传递报文,无需看报 文中的IP地质。 路由器识别不同网络的方法是通过识别不同网络的网络ID号(IP地址的高端部分)进行的,所以为 了保证路由成功,每个网络都必须有一个唯一的网络编号。 路由器通过察看报文中IP地址,来决定路径,向那个 子网(下一跳)路由,也就是说交换机工作在数据链路层看MAC地址,路由器工作在网际层看IP地质 但是由于现在网络设备的发展,很多设备既有交换机的功能有由路由器的功能(交换试路由器)使得两者界限越来 越模糊。 58: 请问C++的类和C里面的struct有什么区别? 59: 请讲一讲析构函数和虚函数的用法和作用? 60: 全局变量和局部变量有什么区别? 实怎么实现的? 操作系统和编译器是怎么知道的? 全局变量是整个程序都可访问的变量,谁都可以访问,生存期在整个程序从运行到结束(在程序结束时所占内存释 放),而局部变量存在于模块(子程序,函数)中,只有所在模块可以访问,其他模块不可直接访问,模块结束(函 数调用完毕),局部变量消失,所占据的内存释放。 全局变量分配在全局数据段并且在程序开始运行的时候被加载.局部变量则分配在堆栈里面。 61: 一些寄存器的题目,主要是寻址和内存管理等一些知识。 2、交换机用在局域网中,交换机通过纪录局域网内各节点机器的MAC地质(物理地址)就可以实现传递报文,无需看 报文中的IP地质。 路由器识别不同网络的方法是通过识别不同网络的网络ID号(IP地址的高端部分)进行的,所以 为了保证路由成功,每个网络都必须有一个唯一的网络编号。 路由器通过察看报文中IP地址,来决定路径,向那 个子网(下一跳)路由,也就是说交换机工作在数据链路层看MAC地址,路由器工作在网际层看IP地质 但是由于现在网络设备的发展,很多设备既有交换机的功能有由路由器的功能(交换试路由器)使得两者界限越来 越模糊。 3、IP协议是网络层的协议,它实现了Internet中自动路由的功能,即寻径的功能,TCP协议是一个传输性的协议 它向下屏蔽了IP协议不可靠传输的特性,向上提供一个可靠的点到点的传输,UDP提供的是一种无连接的服务,主 要考虑到很多应用不需要可靠的连接,但需要快速的传输 4、 Testb();//定义了一个函数 62: 8086是多少位的系统? 在数据总线上是怎么实现的? <> 63.怎样用最快的方法判断链表是否有环? 64.c++中引用和指针有什么不同? 指针加上什么限制等于引用? 答: 1引用被创建的时候必须被初始化,而指针不是必需的。 2引用在创建后就不能改变引用的关系,而指针在 初始化后可以随时指向 其它的变量或对象。 3没有NULL引用,引用必须与合法的存储单元关联,而指针可以是NULL。 65.做的项目,遇到的困难,怎样解决? 69.操作符重载 classCMyObject: pulicCObject { Public: CMyObject(); CMyObject&operator=(constCMyObject&my); private: CStringstrName; intnId: }; 请重载赋值操作符 70.链表 StructstructList { intvalue; structList*pHead; } StructLinkedList*pMyList; 请编写删除链表的头、尾和第n个节点的程序 71.用SocketAPI制作一个聊天程序,通讯协议使用tcp/ip。 要求有简单界面即可,支持多人聊天。 72.如果有过工作经验,请说明在先前公司的工作以及离职原因(如无,请说明毕业后的个人展望) *************************************************************************** 73对于C++中类(class)与结构(struct)的描述正确的为: A,类中的成员默认是private的,当是可以声明为public,private和protected,结构中定义的成员默认的都是 public; B,结构中不允许定义成员函数,当是类中可以定义成员函数; C,结构实例使用malloc()动态创建,类对象使用new操作符动态分配内存; D,结构和类对象都必须使用new创建; E,结构中不可以定义虚函数,当是类中可以定义虚函数. F,结构不可以存在继承关系,当是类可以存在继承关系. 答: A,D,F 74,两个互相独立的类: ClassA和ClassB,都各自定义了非静态的公有成员函数PublicFunc()和非静态的私有成 员函数PrivateFunc(); 现在要在ClassA中增加定义一个成员函数ClassA: : AdditionalPunction(ClassAa,ClassBb);则可以在 AdditionalPunction(ClassAx,ClassBy)的实现部分(函数功能体内部) 出现的合法的表达是最全的是: A,x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc(); B,x.PrivateFunc();x.PublicFunc();y.PublicFunc(); C,x.PrivateFunc();y.PrivateFunc();y.PublicFunc(); D,x.PublicFunc();y.PublicFunc(); 答: B 75,C++程序下列说法正确的有: A,对调用的虚函数和模板类都进行迟后编译. B,基类与子类中函数如果要构成虚函数,除了要求在基类中用virtual声名,而且必须名字相同且参数类型相同返 回类型相同 C,重载的类成员函数都必须要: 或者返回类型不同,或者参数数目不同,或者参数序列的类型不同. D,静态成员函数和内联函数不能是虚函数,友员函数和构造函数也不能是虚函数,但是析构函数可以是虚函数. 答: A *************************************************************************** 76,C++中的类与结构的区别? 77,构造函数和析构函数是否可以被重载,为什么? 答: 构造函数可以被重载,析构函数不可以被重载。 因为构造函数可以有多个且可以带参数,而析构函数只能有 一个,且不能带参数。 78,一个类的构造函数和析构函数什么时候被调用,是否需要手工调用? 答: 构造函数在创建类对象的时候被自动调用,析构函数在类对象生命期结束时,由系统自动调用。 1#include“filename.h”和#include的区别? 答: #include“filename.h”表明该文件是用户提供的头文件,查找该文件时从当前文件目录开始;#i nclude表明这个文件是一个工程或标准头文件,查找过程会检查预定义的目录。 2头文件的作用是什么? 答: 一、通过头文件来调用库功能。 在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和 二进制的库即可。 用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。 编译器会从 库中提取相应的代码。 二、头文件能加强类型安全检查。 如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就 会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。 3C++函数中值的传递方式有哪几种? 答: C++函数的三种传递方式为: 值传递、指针传递和引用传递。 4内存的分配方式的分配方式有几种? 答: 一、从静态存储区域分配。 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。 例如全局变量。 二、在栈上创建。 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元 自动被释放。 栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 三、从堆上分配,亦称动态内存分配。 程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在 何时用free或delete释放内存。 动态内存的生存期由我们决定,使用非常灵活,但问题也最多。 5实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数; 答: 双向链表删除一个节点P templatevoidlist: : delnode(intp) { intk=1; listnode*ptr,*t; ptr=first; while(ptr->next! =NULL&&k! =p) { ptr=ptr->next; k++; } t=ptr->next; cout<<"你已经将数据项" ptr->next=ptr->next->next; length--; deletet; } 在节点P后插入一个节点: templateboollist: : insert(typet,intp) { listnode*ptr; ptr=first; intk=1; while(ptr! =NULL&&k{ ptr=ptr->next; k++; } if(ptr==NULL&&k! =p) returnfalse; else { listnode*tp; tp=newlistnode; tp->data=t; tp->next=ptr->next; ptr->next=tp; length++; returntrue; } } //上海贝尔的面试题43分即可进入复试 一、请填写BOOL,float,指针变量与“零值”比较的if语句。 (10分) 提示: 这里“零值”可以是0,0.0,FALSE或者“空指针”。 例如int变量n与“零值”比较的if语句为: if(n==0) if(n! =0) 以此类推。 请写出BOOLflag与“零值”比较的if语句: 请写出floatx与“零值”比较的if语句: 请写出char*p与“零值”比较的if语句: 二、以下为WindowsNT下的32位C++程序,请计算sizeof的值(10分) charstr[]=“Hello”; char*p=str; intn=10; 请计算 sizeof(str)= sizeof(p)= sizeof(n)=voidFunc(charstr[100]) { 请计算 sizeof(str)= } void*p=malloc(100); 请计算 sizeof(p)= 、简答题(25分) 1、头文件中的ifndef/define/endif干什么用? 2、#include和#include“filename.h”有什么区别? 3、const有什么用途? (请至少说明两种) 4、在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明? 5、请简述以下两个for循环的优缺点 //第一个 for(i=0;i{ if(condition) DoSomething(); else DoOtherthing(); }//第二个 if(condition) { for(i=0;iDoSomething(); } else { for(i=0;iDoOtherthing(); 优点: N次中,每次都要对condition进行判断 缺点: 优点: 一次判断condition后,对something或Otherthing执行N次 缺点: 四、有关内存的思考题(20分) voidGetMemory(char*p) { p=(char*)malloc(100); } voidTest(void) { char*str=NULL; GetMemory(str); strcpy(str,"helloworld"); printf(str); } 请问运行Test函数会有什么样的结果? char*GetMemory(void) { charp[]="helloworld"; returnp; } voidTest(void) { char*str=NULL; str=GetMemory(); printf(str); } 请问运行Test函数会有什么样的结果? VoidGetMemory2(char**p,intnum) { *p=(char*)malloc(num); } voidTest(void) { char*str=NULL; GetMemory(&str,100); strcpy(str,"hello"); printf(str); } 请问运行Test函数会有什么样的结果? voidTest(void) { char*str=(char*)malloc(100); strcpy(str,“hello”); free(str); if(str! =NULL) { strcpy(str,“world”); printf(str); } } 请问运行Test函数会有什么样的结果?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CC 语言程序设计 笔试 试题 17