华为笔试内部资料.docx

上传人:b****2 文档编号:2773598 上传时间:2023-05-04 格式:DOCX 页数:68 大小:40.47KB
下载 相关 举报
华为笔试内部资料.docx_第1页
第1页 / 共68页
华为笔试内部资料.docx_第2页
第2页 / 共68页
华为笔试内部资料.docx_第3页
第3页 / 共68页
华为笔试内部资料.docx_第4页
第4页 / 共68页
华为笔试内部资料.docx_第5页
第5页 / 共68页
华为笔试内部资料.docx_第6页
第6页 / 共68页
华为笔试内部资料.docx_第7页
第7页 / 共68页
华为笔试内部资料.docx_第8页
第8页 / 共68页
华为笔试内部资料.docx_第9页
第9页 / 共68页
华为笔试内部资料.docx_第10页
第10页 / 共68页
华为笔试内部资料.docx_第11页
第11页 / 共68页
华为笔试内部资料.docx_第12页
第12页 / 共68页
华为笔试内部资料.docx_第13页
第13页 / 共68页
华为笔试内部资料.docx_第14页
第14页 / 共68页
华为笔试内部资料.docx_第15页
第15页 / 共68页
华为笔试内部资料.docx_第16页
第16页 / 共68页
华为笔试内部资料.docx_第17页
第17页 / 共68页
华为笔试内部资料.docx_第18页
第18页 / 共68页
华为笔试内部资料.docx_第19页
第19页 / 共68页
华为笔试内部资料.docx_第20页
第20页 / 共68页
亲,该文档总共68页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

华为笔试内部资料.docx

《华为笔试内部资料.docx》由会员分享,可在线阅读,更多相关《华为笔试内部资料.docx(68页珍藏版)》请在冰点文库上搜索。

华为笔试内部资料.docx

华为笔试内部资料

脚本执行失败问题

1.虚函数是可以内联的,这样就可以减少函数调用的开销,提高效率(错误)

2.一个类里可以同时存在参数和函数名都相同的虚函数与静态函数(错误)

3.父类的析构函数是非虚的,但是子类的析构函数是虚的,delete子类指针(指向该子类对象),会调用父类的析构函数(正确)//任何情况下删除子类都会调用到父类的析构函数

4.对于下面的类CA,sizeof(CA)=_B_:

A.4B.8C.12D.16

classCA

{

public:

CA();

virtual~CA();//因为有虚函数,所以会有4个字节的虚表指针

private:

intm_iTime;//成员变量4个字节

public:

intGetTime();

intSetTime(intiTime);

};

5.下面这段程序,打印结果是_A_:

A.1B.2C.3D.以上都不对

intg_iCount=0;

classCParent

{

public:

CParent(){}

~CParent(){g_iCount+=1;}

};

classCSon:

publicCParent

{

public:

CSon(){}

~CSon(){g_iCount+=2;}

};

main()

{

CParent*p=newCSon();

deletep;

std:

:

cout<

:

endl;

}

6.请问下面这段程序的输出结果是_A_:

A.2,1,B.2,2,C.1,1,D.1,2,

classCParent

{

public:

CParent(){}

virtual~CParent(){}

public:

virtualvoidPrint()

{std:

:

cout<<"1,";};

};

classCSon:

publicCParent

{

public:

CSon(){};

virtual~CSon(){};

public:

voidPrint()

{std:

:

cout<<"2,";};

};

voidTest1(CParent&oParent)

{oParent.Print();}

voidTest2(CParentoParent)

{oParent.Print();}

main()

{

CSon*p=newCSon();

Test1(*p);//这里只是一个引用

Test2(*p);//这里会在栈空间重新构造Cparent类对象

deletep;

}

7.请问下面这段程序的输出结果是_D_:

A.2,1,B.2,2,C.1,1,D.1,2,

classCParent

{

public:

CParent(){}

virtual~CParent(){}

public:

voidPrint(){std:

:

cout<<"1,";};

};

classCSon:

publicCParent

{

public:

CSon(){}

virtual~CSon(){}

public:

voidPrint(){std:

:

cout<<"2,";};

};

main()

{

CSonoSon;

CParent*pParent=&oSon;

CSon*pSon=&oSon;

pParent->Print();

pSon->Print();

}

8.请问下面这段程序的输出结果是_C_:

A.2,1,B.2,2,C.1,2,D.1,1,

classCParent

{

public:

CParent(){Print();}

virtual~CParent(){}

public:

virtualvoidPrint(){std:

:

cout<<"1,";}

};

classCSon:

publicCParent

{

public:

CSon(){Print();}

virtual~CSon(){}

public:

voidPrint(){std:

:

cout<<"2,";}

};

main()

{

CParent*pParent=newCSon();

deletepParent;

}

9.请问下面这段程序的输出结果是_D_:

A.2,2,B.2,C.输出结果不确定D.以上都不对

classCParent

{

public:

CParent(){Print();}

virtual~CParent(){}

public:

virtualvoidPrint()=0;

};

classCSon:

publicCParent

{

public:

CSon(){Print();}

virtual~CSon(){}

public:

voidPrint()

{std:

:

cout<<"2,";};

};

main()

{

CParent*pParent=newCSon();

deletepParent;

}

10.请仔细阅读以下程序:

classBase

{

public:

virtualbooloperator==(intiValue)

{

std:

:

cout<<"IamBaseclass!

"<

:

endl;

returntrue;

}

virtual~Base(){}

};

classDerive:

publicBase

{

public:

virtualbooloperator==(intiValue)

{

std:

:

cout<<"IamDeriveclass!

"<

:

endl;

returntrue;

}

virtual~Derive(){}

};

intmain()

{

Derivederive;

Base*pBase=&derive;

Derive*pDerive=&derive;

*pBase==0;

*pDerive==0;

return0;

}

程序的输出结果是_B_:

A、IamBaseclass!

Iambaseclass!

B、IamDeriveclass!

IamDeriveclass!

C、Iambaseclass!

IamDeriveclass!

D、IamDeriveclass!

IamBaseclass!

11.请仔细阅读以下程序:

classBase

{

public:

virtualvoiddisplay(std:

:

stringstrShow="IamBaseclass!

")

{std:

:

cout<

:

endl;}

virtual~Base(){}

};

classDerive:

publicBase

{

public:

virtualvoiddisplay(std:

:

stringstrShow="IamDeriveclass!

")

{std:

:

cout<

:

endl;}

virtual~Derive(){}

};

intmain()

{

Base*pBase=newDerive();

Derive*pDerive=newDerive();

pBase->display();

pDerive->display();

deletepBase;

deletepDerive;

return0;

}

程序的输出结果是_C_:

A、IamBaseclass!

Iambaseclass!

B、IamDeriveclass!

IamDeriveclass!

C、Iambaseclass!

IamDeriveclass!

D、IamDeriveclass!

IamBaseclass!

12.请仔细阅读以下程序:

classBase

{

public:

virtualvoiddisplay()const

{std:

:

cout<<"IamBaseclass!

"<

:

endl;}

virtual~Base(){}

};

classDerive:

publicBase

{

public:

virtualvoiddisplay()

{std:

:

cout<<"IamDeriveclass!

"<

:

endl;}

virtual~Derive(){}

};

intmain()

{

Base*pBase=newDerive();

Derive*pDerive=newDerive();

pBase->display();

pDerive->display();

deletepBase;

deletepDerive;

return0;

}

程序的输出结果是_C_:

A、IamBaseclass!

Iambaseclass!

B、IamDeriveclass!

IamDeriveclass!

C、Iambaseclass!

IamDeriveclass!

D、IamDeriveclass!

IamBaseclass!

13.在C++中,多态性存在于_B_:

A、同一个类的多个同名函数之间

B、子类继承层次中

C、父类的多个同名函数之间

D、以上都不是

14.下面黑体加粗的语句存在问题,请问下面的修改哪个是正确的?

B

classA

{

public:

voidFunc();

..

};

classB

{

private:

boolFunc()const;

..

};

classC:

publicA,

publicB

{

...

};//classdefinitionisunimportant

Ctest;

test.Func();//lookhere

A.test.B:

:

Func();B.test.A:

:

Func();

C.B:

:

test.Func();D.A:

:

test.Func();

15.判断:

子类可以访问父类保护成员,子类的友元类也可以通过子类对象去访问父类的保护成员。

(正确)

16.下面对protected继承的描述正确的是:

C//注意这里是保护继承

A.父类的友元类可以访问子类保护成员

B.子类的友元类可以访问父类的私有成员

C.子类可以访问父类的保护成员

D.父类可以访问子类的保护成员

17.对于下面的代码,描述正确的是:

A

classA

{

public:

virtualvoidtest();

};

classB:

publicA

{

public:

voidtest();

...

};

classC:

publicB

{

public:

voidtest();

...

};

A.B类的test函数是虚函数,而C类的也是

B.B类的test函数不是虚函数

C.B类的test函数是虚函数,而C类的不是

D.C类的test函数不是虚函数

18.请指出如下程序的输出结果:

D

#include

classbase

{

public:

base(){cout<<"base()";}

~base(){cout<<"~base()";}

};

classsubs:

publicbase

{

public:

subs(){cout<<"subs()";}

~subs(){cout<<"~subs()";}

};

voidmain()

{

subss;

}

A.subs()base()~subs()~base()

B.base()subs()~base()~subs()

C.subs()base()~base()~subs()

D.base()subs()~subs()~base()

19.请指出如下程序的输出结果:

B

#include

classA

{

public:

intn;

};

classB:

publicA{};

classC:

publicA{};

classD:

publicB,publicC{};

voidmain()

{

Dd;

d.B:

:

n=10;

d.C:

:

n=20;

cout<

:

n<<","<

:

n;

}

A.20,20B.10,20C.20,10D.10,10

20.判断题:

友元(friend)没有破坏类的封装。

错误

21.下面哪种说法是正确的:

B

A.派生类从基类public派生,派生类可以直接访问基类private的成员变量和成员函数。

B.派生类从基类public派生,派生类可以直接访问基类protected的成员变量和成员函数。

C.派生类从基类public派生,外部可以直接访问派生类中基类部分protected的成员变量和成员函数。

D.派生类从基类protected派生,外部可以直接访问派生类中基类部分public的成员变量和成员函数。

22.下面哪种说法是不正确的:

D

A.外部对象不能直接访问类private的成员变量和使用private的成员函数。

B.外部对象不能直接访问类protected的成员变量和使用protected的成员函数。

C.外部对象可以直接访问类public的成员变量和使用public的成员函数。

D.友元(friend)不能直接访问类的private的成员变量和使用private的成员函数。

23.下面那个不是类成员访问限定符:

D

A.publicB.privateC.protectedD.friend

24.请阅读下面程序片断,成员函数setName的访问限定是什么?

A

structMan

{

voidsetName(conststd:

:

string&strName);

voidsetAge(unsignedintiAge);

std:

:

stringgetName()const;

unsignedintgetAge()const;

private:

unsignedintm_iAge;

std:

:

stringm_strName;

};

A.publicB.privateC.protectedD.friend

25.下面说法是否正确?

错误

存在下面重载函数声明:

1)voidmyfunc(chara);

2)voidmyfunc(longb);

则下面调用的代码匹配第一个函数

intc=100;

myfunc(c);

26.下面哪种情形下myfunc函数声明是重载?

C

A.intmyfunc(inta,doubleb)和doublemyfunc(inta,doubleb)

B.intmyfunc(inta,doubleb)和intmyfunc(inta,doubleb=0.5)

C.intmyfunc(inta,doubleb)和intmyfunc(doubleb,inta)

D.intmyfunc(inta,doubleb)和doublemyfunc(int,double)

27.下面那种情形下myfunc函数声明是重载?

B

A.namespaceIBM{//两个名字空间中各有一个myfunc函数

intmyfunc(inta);

}

namespaceSUN{

intmyfunc(doubleb);

}

B.namespaceIBM{

intmyfunc(inta);

}

namespaceSUN{

usingnamespaceIBM;

intmyfunc(doubleb);

}

C.namespaceIBM{

intmyfunc(inta);

namespaceSUN{

intmyfunc(doubleb);

}

}

D.classA

{

public:

intmyfunc(inta);

}

classSubA:

publicA

{

public:

intmyfunc(doubleb);//注意这里不是重载

}

28.下面说法正确的是:

D

A.操作符重载可以改变操作符的运算优先级。

B.操作符重载时,其预定义的操作数可以改变。

例如“!

”是一元操作符,可以重载成有两个参数的二元操作符。

C.C++中所有的操作符都可以被重载。

D.对于内置数据类型的操作符,它预定义的意义不能被修改;也不能为内置数据类型定义其它操作符。

例如不能定义intoperator+(int,int);也不能定义voidoperator+(int[],int[])。

29.假如运行环境int类型4bytes,short类型2bytes,long类型8bytes,存在代码:

D

unsignedshortx=65530;

inta=myfunc(x,20.0);

会优先匹配以下哪一个重载函数?

A.intmyfunc(double,double)

B.intmyfunc(short,double)

C.doublemyfunc(int,float)

D.doublemyfunc(int,double)

30.判断题类的析构函数可以是虚函数,但构造函数不可以。

正确

31.判断题一个类的构造函数可以有多个,但析构函数只能有一个。

正确

32.判断题当一个类中有指向其他资源的指针,并由类本身释放,那么可以使用编译系统生成的默认拷贝构造函数进行对象复制。

错误

33.判断题下面的代码是否正确(错误)

classCSomething

{

char*m_c;

public:

CSomething(){m_c=newchar;}

~CSomething(){deletem_c;m_c=NULL;}

CSomething(constCSomething&other)//拷贝构造

{*m_c=*other.m_c;}//这里有问题,此时m_c没有空间,应该先m_c=newchar;

CSomething&operator=(constCSomething&a1){……}//重载操作符应该跟拷贝构造是一样的

};

34.CSomething是一个类,执行下面这些语句后,内存里创建了多少个CSomething对象?

B

CSomethinga;//1个

CSomethingb

(2);//1个

CSomethingc[3];//3个

CSomething&ra=a;

CSomethingd=a;//1个

CSomething*pA=c;

CSomething*p=newCSomething(4);//1个

A.8B.7C.10D.9

35.已知类D是类B的派生类,B有自己的私有数据成员,并实现了自己的拷贝构造函数,类D的拷贝构造函数应该怎么实现?

D

A、B、

D:

:

D(constD&other)D:

:

D(constD&other)

{{

拷贝类D新增的成员拷贝父类B的成员

}拷贝类D新增的成员

}

C、D、

D:

:

D(constD&other)D:

:

D(constD&other):

B(other)

{{

B:

:

B(other);拷贝类D新增的成员

拷贝类D新增的成员}

}

36.关于类的构造和析构,下面哪个说法正确C

A、构造函数和析构函数都是由系统自动调用的,程序不能主动调用//可以主动调用

B、如果一个类没有声明缺省构造函数,则编译器会自动生成一个缺省构造函数

C、全局类对象的构造函数总是在main函数之前执行的

D、构造函数和析构函数均不能被说明为虚函数//析构函数可以是虚的

37.在执行newA1时,下面代码的输出是什么A

#include

intinit(conststd:

:

string&info)

{

std:

:

cout<

:

endl;

return0;

}

classA

{

intm_x;

public:

A():

m_x(init("InitA:

:

m_x")){init("CallA:

:

A()");}//定义构造函数

};

classA1:

publicA

{

intm_x;

intm_y;

public:

A1():

m_x(init("InitA1:

:

m_x")),m_y(init("InitA1:

:

m_y"))

{init("CallA1:

:

A1()");}

};

A、B、

InitA:

:

m_xCallA1:

:

A1()

CallA:

:

A()InitA1:

:

m_x

InitA1:

:

m_xInitA1:

:

m_y

InitA1:

:

m_yCallA:

:

A()

CallA1:

:

A1()InitA:

:

m_x

C、D、

InitA:

:

m_xCallA1:

:

A1()

CallA:

:

A()InitA1:

:

m_x

InitA1:

:

m_yInitA1:

:

m_y

CallA1:

:

A1()CallA:

:

A()

38.有如下的类定义

classBase

{

...

public:

virtual~Base(){std:

:

cout<<"DestroyBase"<

:

endl;}

};

classDerive1:

pub

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2