推荐C++常见英文面试笔试题 精品.docx
《推荐C++常见英文面试笔试题 精品.docx》由会员分享,可在线阅读,更多相关《推荐C++常见英文面试笔试题 精品.docx(14页珍藏版)》请在冰豆网上搜索。
![推荐C++常见英文面试笔试题 精品.docx](https://file1.bdocx.com/fileroot1/2023-1/14/b61e0338-c1eb-4047-bd57-80899bb0bb45/b61e0338-c1eb-4047-bd57-80899bb0bb451.gif)
推荐C++常见英文面试笔试题精品
C/C++Programminginterviewquestionsandanswers
BySatishShetty,July14th,20XX
Whatisencapsulation?
?
Containingandhidinginformationaboutanobject,suchasinternaldatastructuresandcode.Encapsulationisolatestheinternalplexityofanobject'soperationfromtherestoftheapplication.Forexample,aclientponentaskingfornetrevenuefromabusinessobjectneednotknowthedata'sorigin.
Whatisinheritance?
Inheritanceallowsoneclasstoreusethestateandbehaviorofanotherclass.Thederivedclassinheritsthepropertiesandmethodimplementationsofthebaseclassandextendsitbyoverridingmethodsandaddingadditionalpropertiesandmethods.
WhatisPolymorphism?
?
Polymorphismallowsaclienttotreatdifferentobjectsinthesamewayeveniftheywerecreatedfromdifferentclassesandexhibitdifferentbehaviors.
YoucanuseimplementationinheritancetoachievepolymorphisminlanguagessuchasC++andJava.
Baseclassobject'spointercaninvokemethodsinderivedclassobjects.
YoucanalsoachievepolymorphisminC++byfunctionoverloadingandoperatoroverloading.
Whatisconstructororctor?
Constructorcreatesanobjectandinitializesit.Italsocreatesvtableforvirtualfunctions.Itisdifferentfromothermethodsinaclass.
Whatisdestructor?
Destructorusuallydeletesanyextraresourcesallocatedbytheobject.
Whatisdefaultconstructor?
Constructorwithnoargumentsoralltheargumentshasdefaultvalues.
Whatiscopyconstructor?
Constructorwhichinitializestheit'sobjectmembervariables(byshallowcopying)withanotherobjectofthesameclass.Ifyoudon'timplementoneinyourclassthenpilerimplementsoneforyou.
forexample:
BooObj1(10);//callingBooconstructor
BooObj2(Obj1);//callingboocopyconstructor
BooObj2=Obj1;//callingboocopyconstructor
Whenarecopyconstructorscalled?
Copyconstructorsarecalledinfollowingcases:
a)whenafunctionreturnsanobjectofthatclassbyvalue
b)whentheobjectofthatclassispassedbyvalueasanargumenttoafunction
c)whenyouconstructanobjectbasedonanotherobjectofthesameclass
d)Whenpilergeneratesatemporaryobject
Whatisassignmentoperator?
Defaultassignmentoperatorhandlesassigningoneobjecttoanotherofthesameclass.Membertomembercopy(shallowcopy)
Whatarealltheimplicitmemberfunctionsoftheclass?
Orwhatareallthefunctionswhichpilerimplementsforusifwedon'tdefineone.?
?
defaultctor
copyctor
assignmentoperator
defaultdestructor
addressoperator
Whatisconversionconstructor?
constructorwithasingleargumentmakesthatconstructorasconversionctoranditcanbeusedfortypeconversion.
forexample:
classBoo
{
public:
Boo(inti);
};
BooBooObject=10;//assigningint10Booobject
Whatisconversionoperator?
?
classcanhaveapublicmethodforspecificdatatypeconversions.
forexample:
classBoo
{
doublevalue;
public:
Boo(inti)
operatordouble()
{
returnvalue;
}
};
BooBooObject;
doublei=BooObject;//assigningobjecttovariableioftypedouble.nowconversionoperatorgetscalledtoassignthevalue.
Whatisdiffbetweenmalloc()/free()andnew/delete?
mallocallocatesmemoryforobjectinheapbutdoesn'tinvokeobject'sconstructortoinitiallizetheobject.
newallocatesmemoryandalsoinvokesconstructortoinitializetheobject.
malloc()andfree()donotsupportobjectsemantics
Doesnotconstructanddestructobjects
string*ptr=(string*)(malloc(sizeof(string)))
Arenotsafe
Doesnotcalculatethesizeoftheobjectsthatitconstruct
Returnsapointertovoid
int*p=(int*)(malloc(sizeof(int)));
int*p=newint;
Arenotextensible
newanddeletecanbeoverloadedinaclass
"delete"firstcallstheobject'sterminationroutine(i.e.itsdestructor)andthenreleasesthespacetheobjectoccupiedontheheapmemory.Ifanarrayofobjectswascreatedusingnew,thendeletemustbetoldthatitisdealingwithanarraybyprecedingthenamewithanempty[]:
-
Int_t*my_ints=newInt_t[10];
...
delete[]my_ints;
whatisthediffbetween"new"and"operatornew"?
"operatornew"workslikemalloc.
Whatisdifferencebetweentemplateandmacro?
?
Thereisnowayforthepilertoverifythatthemacroparametersareofpatibletypes.Themacroisexpandedwithoutanyspecialtypechecking.
Ifmacroparameterhasapostincrementedvariable(likec++),theincrementisperformedtwotimes.
Becausemacrosareexpandedbythepreprocessor,pilererrormessageswillrefertotheexpandedmacro,ratherthanthemacrodefinitionitself.Also,themacrowillshowupinexpandedformduringdebugging.
forexample:
Macro:
#definemin(i,j)(ii:
j)
template:
template
Tmin(Ti,Tj)
{
returnii:
j;
}
WhatareC++storageclasses?
auto
register
static
extern
auto:
thedefault.Variablesareautomaticallycreatedandinitializedwhentheyaredefinedandaredestroyedattheendoftheblockcontainingtheirdefinition.Theyarenotvisibleoutsidethatblock
register:
atypeofautovariable.asuggestiontothepilertouseaCPUregisterforperformance
static:
avariablethatisknownonlyinthefunctionthatcontainsitsdefinitionbutisneverdestroyedandretainsitsvaluebetweencallstothatfunction.Itexistsfromthetimetheprogrambeginsexecution
extern:
astaticvariablewhosedefinitionandplacementisdeterminedwhenallobjectandlibrarymodulesarebined(linked)toformtheexecutablecodefile.Itcanbevisibleoutsidethefilewhereitisdefined.
WhatarestoragequalifiersinC++?
Theyare..
const
volatile
mutable
Constkeywordindicatesthatmemoryonceinitialized,shouldnotbealteredbyaprogram.
volatilekeywordindicatesthatthevalueinthememorylocationcanbealteredeventhoughnothingintheprogram
codemodifiesthecontents.forexampleifyouhaveapointertohardwarelocationthatcontainsthetime,wherehardwarechangesthevalueofthispointervariableandnottheprogram.Theintentofthiskeywordtoimprovetheoptimizationabilityofthepiler.
mutablekeywordindicatesthatparticularmemberofastructureorclasscanbealteredevenifaparticularstructurevariable,class,orclassmemberfunctionisconstant.
structdata
{
charname[80];
mutabledoublesalary;
}
constdataMyStruct={"SatishShetty",1000};//initlizedbyplier
strcpy(MyStruct.name,"ShilpaShetty");//pilererror
MyStruct.salaray=2000;//plierishappyallowed
Whatisreference?
?
referenceisanamethatactsasanalias,oralternativename,forapreviouslydefinedvariableoranobject.
prependingvariablewith"&"symbolmakesitasreference.
forexample:
inta;
int&b=a;
Whatispassingbyreference?
Methodofpassingargumentstoafunctionwhichtakesparameteroftypereference.
forexample:
voidswap(int&x,int&y)
{
inttemp=x;
x=y;
y=temp;
}
inta=2,b=3;
swap(a,b);
Basically,insidethefunctiontherewon'tbeanycopyofthearguments"x"and"y"insteadtheyrefertooriginalvariablesaandb.sonoextramemoryneededtopassargumentsanditismoreefficient.
Whendouse"const"referenceargumentsinfunction?
a)Usingconstprotectsyouagainstprogrammingerrorsthatinadvertentlyalterdata.
b)Usingconstallowsfunctiontoprocessbothconstandnon-constactualarguments,whileafunctionwithoutconstintheprototypecanonlyacceptnonconstantarguments.
c)Usingaconstreferenceallowsthefunctiontogenerateanduseatemporaryvariableappropriately.
WhenaretemporaryvariablescreatedbyC++piler?
Providedthatfunctionparameterisa"constreference",pilergeneratestemporaryvariableinfollowing2ways.
a)Theactualargumentisthecorrecttype,butitisn'tLvalue
doubleCube(constdouble&num)
{
num=num*num*num;
returnnum;
}
doubletemp=2.0;
doublevalue=cube(3.0+temp);//argumentisaexpressionandnotaLvalue;
b)Theactualargumentisofthewrongtype,butofatypethatcanbeconvertedtothecorrecttype
longtemp=3L;
doublevalue=cuberoot(temp);//longtodoubleconversion
Whatisvirtualfunction?
Whenderivedclassoverridesthebaseclassmethodbyredefiningthesamefunction,thenifclientwantstoaccessredefinedthemethodfromderivedclassthroughapointerfrombaseclassobject,thenyoumustdefinethisfunctioninbaseclassasvirtualfunction.
classparent
{
voidShow()
{
cout<<"i'mparent"<}
};
classchild:
publicparent
{
voidShow()
{
cout<<"i'mchild"<}
};
parent*parent_object_ptr=newchild;
parent_object_ptr->show()//callsparent->show()i
nowwegotovirtualworld...
classparent
{
virtualvoidShow()
{
cout<<"i'mparent"<}
};
classchild:
publicparent
{
voidShow()
{
cout<<"i'mchild"<}
};
parent*parent_object_ptr=newchild;
parent_object_ptr->show()//callschild->show()
Whatispurevirtualfunction?
orwhatisabstractclass?
Whenyoudefineonlyfunctionprototypeinabaseclasswithoutimplementationanddothepleteimplementationinderivedclass.Thisbaseclassiscalledabstractclassandclientwon'tabletoinstantiateanobjectusingthisbaseclass.
Youcanmakeapurevirtualfunctionorabstractclassthisway..
classBoo
{
voidfoo()=0;
}
BooMyBoo;//pilationerror
WhatisMemoryalignment?
?
Thetermalignmentprimarilymeansthetendencyofanaddresspointervaluetobeamultipleofsomepoweroftwo.Soapointerwithtwobytealignmenthasazerointheleastsignificantbit.Andapointerwithfourbytealignmenthasazeroinboththetwoleast