CC++语言程序设计笔试面试题17.docx

上传人:b****8 文档编号:29730984 上传时间:2023-07-26 格式:DOCX 页数:17 大小:21.16KB
下载 相关 举报
CC++语言程序设计笔试面试题17.docx_第1页
第1页 / 共17页
CC++语言程序设计笔试面试题17.docx_第2页
第2页 / 共17页
CC++语言程序设计笔试面试题17.docx_第3页
第3页 / 共17页
CC++语言程序设计笔试面试题17.docx_第4页
第4页 / 共17页
CC++语言程序设计笔试面试题17.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

CC++语言程序设计笔试面试题17.docx

《CC++语言程序设计笔试面试题17.docx》由会员分享,可在线阅读,更多相关《CC++语言程序设计笔试面试题17.docx(17页珍藏版)》请在冰豆网上搜索。

CC++语言程序设计笔试面试题17.docx

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函数会有什么样的结果?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1