Java interview questions.docx
- 文档编号:5730437
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:12
- 大小:24.17KB
Java interview questions.docx
《Java interview questions.docx》由会员分享,可在线阅读,更多相关《Java interview questions.docx(12页珍藏版)》请在冰豆网上搜索。
Javainterviewquestions
DescribewhathappenswhenanobjectiscreatedinJava?
Severalthingshappeninaparticularordertoensuretheobjectisconstructedproperly:
1.Memoryisallocatedfromheaptoholdallinstancevariablesandimplementation-specificdataoftheobjectanditssuperclasses.Implementation-specificdataincludespointerstoclassandmethoddata.
2.Theinstancevariablesoftheobjectsareinitializedtotheirdefaultvalues.
3.Theconstructorforthemostderivedclassisinvoked.Thefirstthingaconstructordoesiscalltheconstructorforitsuppercase.Thisprocesscontinuesuntiltheconstructorforjava.lang.Objectiscalled,asjava.lang.Objectisthebaseclassforallobjectsinjava.
4.Beforethebodyoftheconstructorisexecuted,allinstancevariableinitializersandinitializationblocksareexecuted.Thenthebodyoftheconstructorisexecuted.Thus,theconstructorforthebaseclasscompletesfirstandconstructorforthemostderivedclasscompleteslast.
InJava,youcancreateaStringobjectasbelow:
Stringstr="abc";&Stringstr=newString("abc"); Whycantabuttonobjectbecreatedas:
Buttonbt="abc"?
Whyisitcompulsorytocreateabuttonobjectas:
Buttonbt=newButton("abc");WhythisisnotcompulsoryinString’scase?
Buttonbt1="abc";Itisbecause"abc"isaliteralstring(somethingslightlydifferentthanaStringobject,by-the-way)andbt1isaButtonobject.Thatsimple.TheonlyobjectinJavathatcanbeassignedaliteralStringisjava.lang.String.ImportanttonotthatyouareNOTcallingajava.lang.StringconstuctorwhenyoutypeStrings="abc";ForexampleStringx="abc";Stringy="abc";refertothesameobject.WhileStringx1=newString("abc");
Stringx2=newString("abc");refertotwodifferentobjects.
WhatistheadvantageofOOP?
Youwillgetvaryinganswerstothisquestiondependingonwhomyouask.MajoradvantagesofOOPare:
1.Simplicity:
softwareobjectsmodelrealworldobjects,sothecomplexityisreducedandtheprogramstructureisveryclear;
2.Modularity:
eachobjectformsaseparateentitywhoseinternalworkingsaredecoupledfromotherpartsofthesystem;
3.Modifiability:
itiseasytomakeminorchangesinthedatarepresentationortheproceduresinanOOprogram.Changesinsideaclassdonotaffectanyotherpartofaprogram,sincetheonlypublicinterfacethattheexternalworldhastoaclassisthroughtheuseofmethods;
4.Extensibility:
addingnewfeaturesorrespondingtochangingoperatingenvironmentscanbesolvedbyintroducingafewnewobjectsandmodifyingsomeexistingones;
5.Maintainability:
objectscanbemaintainedseparately,makinglocatingandfixingproblemseasier;
6.Re-usability:
objectscanbereusedindifferentprograms
WhatarethemaindifferencesbetweenJavaandC++?
EverythingisanobjectinJava(Singleroothierarchyaseverythinggetsderivedfromjava.lang.Object).JavadoesnothaveallthecomplicatedaspectsofC++(Forex:
Pointers,templates,unions,operatoroverloading,structuresetc..) TheJavalanguagepromotersinitiallysaid"Nopointers!
",butwhenmanyprogrammersquestionedhowyoucanworkwithoutpointers,thepromotersbegansaying"Restrictedpointers."Youcanmakeupyourmindwhetherit’sreallyapointerornot.Inanyevent,there’snopointerarithmetic.TherearenodestructorsinJava.(automaticgarbagecollection), Javadoesnotsupportconditionalcompile(#ifdef/#ifndeftype).ThreadsupportisbuiltintojavabutnotinC++.Javadoesnotsupportdefaultarguments.There’snoscoperesolutionoperator:
:
inJava.Javausesthedotforeverything,butcangetawaywithitsinceyoucandefineelementsonlywithinaclass.Eventhemethoddefinitionsmustalwaysoccurwithinaclass,sothereisnoneedforscoperesolutionthereeither.There’sno"goto"statementinJava.Javadoesn’tprovidemultipleinheritance(MI),atleastnotinthesamesensethatC++does.ExceptionhandlinginJavaisdifferentbecausetherearenodestructors.Javahasmethodoverloading,butnooperatoroverloading.TheStringclassdoesusethe+and+=operatorstoconcatenatestringsandStringexpressionsuseautomatictypeconversion,butthat’saspecialbuilt-incase.Javaisinterpretedforthemostpartandhenceplatformindependent
Whatareinterfaces?
Interfacesprovidemoresophisticatedwaystoorganizeandcontroltheobjectsinyoursystem.
Theinterfacekeywordtakestheabstractconceptonestepfurther.Youcouldthinkofitasa“pure”abstractclass.Itallowsthecreatortoestablishtheformforaclass:
methodnames,argumentlists,andreturntypes,butnomethodbodies.Aninterfacecanalsocontainfields,butTheinterfacekeywordtakestheabstractconceptonestepfurther.Youcouldthinkofitasa“pure”abstractclass.Itallowsthecreatortoestablishtheformforaclass:
methodnames,argumentlists,andreturntypes,butnomethodbodies.Aninterfacecanalsocontainfields,butaninterfacesays:
“Thisiswhatallclassesthatimplementthisparticularinterfacewilllooklike.”Thus,anycodethatusesaparticularinterfaceknowswhatmethodsmightbecalledforthatinterface,andthat’sall.Sotheinterfaceisusedtoestablisha“protocol”betweenclasses.(Someobject-orientedprogramminglanguageshaveakeywordcalledprotocoltodothesamething.) Typicalexamplefrom"ThinkinginJava":
import java.util.*;
interface Instrument
{
int i = 5; // static & final
// Cannot have method definitions:
void play(); // Automatically public
String what();
void adjust();
}
class Wind implements Instrument
{
public void play()
{
System.out.println("Wind.play()");
public String what()
{
return "Wind";
}
public void adjust()
{
}
}
}
HowcanyouachieveMultipleInheritanceinJava?
Java’sinterfacemechanismcanbeusedtoimplementmultipleinheritance,withoneimportantdifferencefromc++wayofdoingMI:
theinheritedinterfacesmustbeabstract.Thisobviatestheneedtochoosebetweendifferentimplementations,aswithinterfacestherearenoimplementations.
interface CanFight
{
void fight();
}
interface CanSwim
{
void swim();
}
interface CanFly
{
void fly();
}
class ActionCharacter
{
public void fight()
{
}
}
class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly
{
public void swim()
{
}
public void fly()
{
}
}
Youcanevenachieveaformofmultipleinheritancewhereyoucanusethe*functionality*ofclassesratherthanjusttheinterface:
interface A
{
void methodA();
}
class AImpl implements A
{
void methodA() { //do stuff }
}
interface B
{
void methodB();
}
class BImpl implements B
{
void methodB() { //do stuff }
}
class Multiple implements A, B
{
private A a = new A();
private B b = new B();
void methodA()
{
a.methodA();
}
void methodB()
{
b.methodB();
}
}
ThiscompletelysolvesthetraditionalproblemsofmultipleinheritanceinC++wherenameclashesoccurbetweenmultiplebaseclasses.Thecoderofthederivedclasswillhavetoexplicitlyresolveanyclashes.Don’tyouhatepeoplewhopointoutminortypos?
Everythinginthepreviousexampleiscorrect,exceptyouneedtoinstantiateanAImplandBImpl.SoclassMultiplewouldlooklikethis:
class Multiple implements A, B
{
private A a = new AImpl();
private B b = new BImpl();
void methodA()
{
a.methodA();
}
void methodB()
{
b.methodB();
}
}
WhatisthedifferencebetweenStringBufferandStringclass?
Astringbufferimplementsamutablesequenceofcharacters.AstringbufferislikeaString,butcanbemodified.Atanypointintimeitcontainssomeparticularsequenceofcharacters,butthelengthandcontentofthesequencecanbechangedthroughcertainmethodcalls.TheStringclassrepresentscharacterstrings.AllstringliteralsinJavaprograms,suchas"abc"areconstantandimplementedasinstancesofthisclass;theirvaluescannotbechangedaftertheyarecreated.StringsinJavaareknowntobeimmutable.WhatitmeansisthateverytimeyouneedtomakeachangetoaStringvariable,behindthescene,a"new"StringisactuallybeingcreatedbytheJVM.Foranexample:
ifyouchangeyourStringvariable2times,thenyouendupwith3Strings:
onecurrentand2thatarereadyforgarbagecollection.ThegarbagecollectioncycleisquiteunpredictableandtheseadditionalunwantedStringswilltakeupmemoryuntilthatcycleoccurs.Forbetterperformance,useStringBuffersforstring-typedatathatwillbereusedorchangedfrequently.ThereismoreoverheadperclassthanusingString,butyouwillendupwithlessoverallclassesandconsequentlyconsumelessmemory.Describe,ingeneral,howjava’sgarbagecollectorworks?
TheJavaruntimeenvironmentdeletesobjectswhenitdeterminesthattheyarenolongerbeingused.Thisprocessisknownasgarbagecollection.TheJavaruntimeenvironmentsupportsagarbagecollectorthatperiodicallyfreesthememoryusedbyobjectsthatarenolongerneeded.TheJavagarbagecollectorisamark-sweepgarbagecollectorthatscansJava’sdynamicmemoryareasforobjects,markingthosethatarereferenced.Afterallpossiblepathstoobjectsareinvestigated,thoseobjectsthatarenotmarked(i.e.arenotreferenced)areknowntobegarbageandarecollected.(Amorecompletedescriptionofourgarbagecollectionalgorithmmigh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java interview questions