Java常见面试题集及答案.doc

上传人:you****now 文档编号:62438821 上传时间:2022-11-22 格式:DOC 页数:11 大小:506.13KB
返回 下载 相关 举报
Java常见面试题集及答案.doc_第1页
第1页 / 共11页
Java常见面试题集及答案.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《Java常见面试题集及答案.doc》由会员分享,可在线阅读,更多相关《Java常见面试题集及答案.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Javaa常见面面试题集集及答案案找工作要要面试,有有面试就就有对付付面试的的办法。以下一一些题目目来自业业内朋友友痛苦的的面试经经历,提提这些问问题的公公司包括括IBMM, EE*Trradee, SSiebbel, Mootorrolaa, SSUN,以及其其它大小小公司。面试试是没什什么道理理可讲的的,它的的题目有有的不合合情理、脱离实实际。有有在纸上上写的,有有当面考考你的,也也有在电电话里问问的,给给你IDE的估计计很少(否则你你赶快去去买彩票票,说不不定中)。所以以如果你你看完此此文后,请请不要抱抱怨说这这些问题题都能用用IDE来解决决。你必必须在任任何情况况下准确确回答这这些问题

2、题,在面面试中如如果出现现一两题题回答不不准确很很有可能能你就被被拒之门门外了。当然然这些都都是Javva的基本本题,那那些面试试的人大大多数不不会问你你Hibbernnatee有多先先进,Ecllipsse的三个个组成部部分,或或commmannd ddesiign pattterrn,他们们都是老老一辈了了,最喜喜欢问的的就是基基础知识识。别小小看了这这些基础础,我朋朋友水平平一流,结结果就栽栽在一到到基础知知识的问问题下,和和高薪无无缘。好了了废话少少说,开开始正题题。问:第一一,谈谈谈finnal, fiinallly, fiinallizee的区别别。最常常被问到到。第二二,Anoo

3、nymmouss Innnerr Cllasss (匿名内内部类)是否可可以exttendds(继承)其它类类,是否否可以impplemmentts(实现)innterrfacce(接口)?第三,Staaticc Neesteed CClasss和Innner Claass的不同同,说得得越多越越好(面试题题有的很很笼统)。第四四,&和&的区别别。这个个问得很很少。第五五,HasshMaap和Hasshtaablee的区别别。常问问。第六六,Colllecctioon和Colllecctioons的区别别。你千千万别说说一个是是单数一一个是复复数。第七七,什么么时候用用asssertt。APP

4、I级的技技术人员员有可能能会问这这个。第八八,GC是什么?为什么么要有GC? 基础。 第九,Strringg s = nnew Strringg(xxyz);创建了了几个Strringg Obbjecct? 第十,Matth.rrounnd(111.55)等於多多少? MMathh.rooundd(-111.55)等於多多少? 第十一一,shoort s1 = 11; ss1 = s11 + 1;有什么么错? sshorrt ss1 = 1; s11 += 1;有什么么错?面试题题都是很很变态的的,要做做好受虐虐的准备备。第十十二,sleeep()和waiit()有什么么区别?搞线程程的最爱爱

5、。第十十三,Javva有没有gotto?很十三三的问题题,如果果哪个面面试的问问到这个个问题,我我劝你还还是别进进这家公公司。第十十四,数数组有没没有lenngthh()这个方方法? SStriing有没有lenngthh()这个方方法? 第十五五,Oveerlooad和Oveerriide的区别别。Oveerlooadeed的方法法是否可可以改变变返回值值的类型型?常问。第十十六,Set里的元元素是不不能重复复的,那那么用什什么方法法来区分分重复与与否呢?是用=还是equualss()?它们有有何区别别? 第十七七,给我我一个你你最常见见到的runntimme eexceeptiion。如果

6、果你这个个答不出出来,面面试的人人会认为为你没有有实际编编程经验验。第十十八,errror和exccepttionn有什么么区别? 第十九九,Lisst, Sett, MMap是否继继承自Colllecctioon接口? 第二十十,absstraact claass和intterffacee有什么么区别?常问。第二二十一,absstraact的metthodd是否可可同时是是staaticc,是否可可同时是是nattivee,是否否可同时时是synnchrroniizedd? 第二十十二,接接口是否否可继承承接口?抽象类类是否可可实现(immpleemennts)接口?抽象类类是否可可继承实实

7、体类(conncreete claass)? 第二十十三,启启动一个个线程是是用runn()还是staart()?第二十十四,构构造器Connstrructtor是否可可被oveerriide? 第二十十五,是是否可以以继承Strringg类? 第二十十六,当当一个线线程进入入一个对对象的一一个synnchrroniizedd方法后后,其它它线程是是否可进进入此对对象的其其它方法法? 第二十十七,tryy 里有一一个retturnn语句,那那么紧跟跟在这个个try后的finnallly 里的codde会不会会被执行行,什么么时候被被执行,在return前还是后? 第二十十八,编编程题:用最有有

8、效率的的方法算算出2乘以8等於几?有C背景的的程序员员特别喜喜欢问这这种问题题。第二二十九,两两个对象象值相同同(x.equualss(y) = trrue),但却却可有不不同的hassh ccodee,这句句话对不不对? 第三十十,当一一个对象象被当作作参数传传递到一一个方法法后,此此方法可可改变这这个对象象的属性性,并可可返回变变化后的的结果,那那么这里里到底是是值传递递还是引引用传递递? 第三十十一,swttichh是否能能作用在在bytte上,是是否能作作用在lonng上,是是否能作作用在Strringg上? 第三十十二,编编程题:写一个Sinngleetonn出来。 好好先说这这么一

9、些些。答:第一,谈谈谈finnal, fiinallly, fiinallizee的区别别。fiinall修饰符符(关键键字)如如果一个个类被声声明为finnal,意味味着它不不能再派派生出新新的子类类,不能能作为父父类被继继承。因因此一个个类不能能既被声声明为absstraact的,又又被声明明为finnal的。将将变量或或方法声声明为finnal,可以以保证它它们在使使用中不不被改变变。被声声明为finnal的变量量必须在在声明时时给定初初值,而而在以后后的引用用中只能能读取,不不可修改改。被声声明为finnal的方法法也同样样只能使使用,不不能重载载。finaallyy再异常常处理时时提

10、供finnallly块来执执行任何何清除操操作。如如果抛出出一个异异常,那那么相匹匹配的cattch子句就就会执行行,然后后控制就就会进入入finnallly块(如如果有的的话)。fiinallizee方法名名。Javva技术允允许使用用finnaliize()方法在在垃圾收收集器将将对象从从内存中中清除出出去之前前做必要要的清理理工作。这个方方法是由由垃圾收收集器在在确定这这个对象象没有被被引用时时对这个个对象调调用的。它是在在Objjectt类中定定义的,因因此所有有的类都都继承了了它。子子类覆盖盖finnaliize()方法以以整理系系统资源源或者执执行其他他清理工工作。finnalii

11、ze()方法是是在垃圾圾收集器器删除对对象之前前对这个个对象调调用的。第二二,Anoonymmouss Innnerr Cllasss (匿名内内部类)是否可可以exttendds(继承)其它类类,是否否可以impplemmentts(实现)innterrfacce(接口)? 匿名名的内部部类是没没有名字字的内部部类。不不能exttendds(继承)其它类类,但一一个内部部类可以以作为一一个接口口,由另另一个内内部类实实现。第三三,Staaticc Neesteed CClasss和Innner Claass的不同同,说得得越多越越好(面试题题有的很很笼统)。Neesteed CClasss(

12、一般般是C+的说法法),Innner Claass (一般是JAVVA的说法)。Javva内部类类与C+嵌套类类最大的的不同就就在于是是否有指指向外部部的引用用上。具具体可见见htttp: /xxfroontffreee.neet/aartiiclees/sservvicees/vvieww.assp?iid=7704&pagge=11 注:静态内内部类(Innner Claass)意味味着1创建一一个staaticc内部类类的对象象,不需需要一个个外部类类对象,2不能从从一个staaticc内部类类的一个个对象访访问一个个外部类类对象第第四,&和&的区别别。&是是位运算算符。&是布尔尔逻辑运

13、运算符。第五五,HasshMaap和Hasshtaablee的区别别。都属属于Map接口的的类,实实现了将将惟一键键映射到到特定的的值上。HaashMMap类没有有分类或或者排序序。它允允许一个个nulll键和多多个nulll值。Haashttablle类似于HasshMaap,但是是不允许许nulll键和nulll值。它它也比HasshMaap慢,因因为它是是同步的的。第六六,Colllecctioon和Colllecctioons的区别别。Coolleectiionss是个javva.uutill下的类类,它包包含有各各种有关关集合操操作的静静态方法法。Coolleectiion是个jav

14、va.uutill下的接接口,它它是各种种集合结结构的父父接口。第七七,什么么时候用用asssertt。断言是一一个包含含布尔表表达式的的语句,在在执行这这个语句句时假定定该表达达式为truue。如果果表达式式计算为为fallse,那么么系统会会报告一一个Assserttionnerrror。它用用于调试试目的:assserrt(aa 0); / thhrowws aan AAsseertiioneerroor iif aa = 0 断言可可以有两两种形式式:assserrt EExprresssionn1 ; assserrt EExprresssionn1 : Exxpreessiion2

15、2 ; Exxpreessiion11应该总总是产生生一个布布尔值。Exxpreessiion22可以是是得出一一个值的的任意表表达式。这个值值用于生生成显示示更多调调试信息息的Strringg消息。断言言在默认认情况下下是禁用用的。要要在编译译时启用用断言,需需要使用用souurcee 1.4标记:jaavacc -ssourrce 1.44 Teest.javva 要在在运行时时启用断断言,可可使用-ennablleassserrtioons或者-ea标记。要在在运行时时选择禁禁用断言言,可使使用-da或者-diisabbleaasseertiionss标记。要系系统类中中启用断断言,可可

16、使用-essa或者-dssa标记。还可以以在包的的基础上上启用或或者禁用用断言。可以以在预计计正常情情况下不不会到达达的任何何位置上上放置断断言。断断言可以以用于验验证传递递给私有有方法的的参数。不过,断断言不应应该用于于验证传传递给公公有方法法的参数数,因为为不管是是否启用用了断言言,公有有方法都都必须检检查其参参数。不不过,既既可以在在公有方方法中,也也可以在在非公有有方法中中利用断断言测试试后置条条件。另另外,断断言不应应该以任任何方式式改变程程序的状状态。第八八,GC是什么?为什么么要有GC? (基础)。GCC是垃圾圾收集器器。Javva程序员员不用担担心内存存管理,因因为垃圾圾收集器

17、器会自动动进行管管理。要要请求垃垃圾收集集,可以以调用下下面的方方法之一一:Syysteem.ggc() Ruuntiime.gettRunntimme().gcc() 第九九,Strringg s = nnew Strringg(xxyz);创建了了几个Strringg Obbjecct? 两个个对象,一一个是xyyx,一个是是指向xyyx的引用用对象s。 第十,MMathh.rooundd(111.5)等於多多少? MMathh.rooundd(-111.55)等於多多少? Maath.rouund(11.5)返回(lonng)12,Matth.rrounnd(-11.5)返回(lonng

18、)-111; 第十一,shoort s1 = 11; ss1 = s11 + 1;有什么么错? sshorrt ss1 = 1; s11 += 1;有什么么错? shorrt ss1 = 1; s11 = s1 + 11;有错,s1是shoort型,s1+1是int型,不能显显式转化化为shoort型。可可修改为为s1 =(sshorrt)(s1 + 11) 。shoort s1 = 11; ss1 += 11正确。 第十二,sleeep() 和 waait() 有什么么区别? 搞线程程的最爱爱slleepp()方法是是使线程程停止一一段时间间的方法法。在sleeep 时间间间隔期满满后,线线

19、程不一一定立即即恢复执执行。这这是因为为在那个个时刻,其其它线程程可能正正在运行行而且没没有被调调度为放放弃执行行,除非非(a)醒来的线程程具有更更高的优优先级 (bb)正在运运行的线线程因为为其它原原因而阻阻塞。waait()是线程程交互时时,如果果线程对对一个同同步对象象x 发出一一个waiit()调用,该该线程会会暂停执执行,被被调对象象进入等等待状态态,直到到被唤醒醒或等待待时间到到。 第十三,Javva有没有gotto? Gootojavva中的保保留字,现现在没有有在javva中使用用。 第十四,数数组有没没有lenngthh()这个方方法? SStriing有没有lenngthh

20、()这个方方法?数组组没有lenngthh()这个方方法,有有lenngthh的属性性。Sttrinng有有lenngthh()这个方方法。 第十五,Oveerlooad和Oveerriide的区别别。Oveerlooadeed的方法法是否可可以改变变返回值值的类型型? 方法法的重写写Oveerriidinng和重载Oveerlooadiing是Javva多态性性的不同同表现。重写Oveerriidinng是父类类与子类类之间多多态性的的一种表表现,重重载Oveerlooadiing是一个个类中多多态性的的一种表表现。如如果在子子类中定定义某方方法与其其父类有有相同的的名称和和参数,我我们说该

21、该方法被被重写 (OOverrriddingg)。子类类的对象象使用这这个方法法时,将将调用子子类中的的定义,对对它而言言,父类类中的定定义如同同被屏蔽了。如如果在一一个类中中定义了了多个同同名的方方法,它它们或有有不同的的参数个个数或有有不同的的参数类类型,则则称为方方法的重重载(Ovverlloaddingg)。Oveerlooadeed的方法法是可以以改变返返回值的的类型。 第十六,Set里的元元素是不不能重复复的,那那么用什什么方法法来区分分重复与与否呢? 是用=还是equualss()? 它们有有何区别别? Seet里的元元素是不不能重复复的,那那么用iteerattor()方法来来

22、区分重重复与否否。equualss()是判读读两个Set是否相相等。eqqualls()和=方法决决定引用用值是否否指向同同一对象象equualss()在类中中被覆盖盖,为的的是当两两个分离离的对象象的内容容和类型型相配的的话,返返回真值值。 第十七,给给我一个个你最常常见到的的runntimme eexceeptiion。 CODEE: Coopy to cliipbooardd _AritthmeeticcExccepttionn, AArraaySttoreeExccepttionn, BBuffferOOverrfloowExxcepptioon, BuffferrUndderfflo

23、wwExccepttionn, CCannnotRRedooExccepttionn, CCannnotUUndooExccepttionn, CClasssCaastEExceeptiion, CMMMExxcepptioon, ConncurrrenntMoodifficaatioonExxcepptioon, DOMMExccepttionn, EEmpttySttackkExccepttionn, IIlleegallArggumeentEExceeptiion, IllleggalMMoniitorrStaateEExceeptiion, IllleggalPPathhStaateE

24、Exceeptiion, IllleggalSStatteExxcepptioon, ImagginggOpEExceeptiion, InndexxOuttOfBBounndsEExceeptiion, MiissiingRResoourcceExxcepptioon, NeggatiiveAArraaySiizeEExceeptiion, NooSucchEllemeentEExceeptiion, NuullPPoinnterrExccepttionn, PProffileeDattaExxcepptioon, ProovidderEExceeptiion, RaasteerFOORMa

25、atExxcepptioon, SeccuriityEExceeptiion, SyysteemExxcepptioon, UnddecllareedThhrowwablleExxcepptioon, UnmmodiifiaableeSettExccepttionn, UUnsuuppoorteedOpperaatioonExxcepptioon 第十八,errror和exccepttionn有什么么区别? errrorr 表示恢恢复不是是不可能能但很困困难的情情况下的的一种严严重问题题。比如如说内存存溢出。不可能能指望程程序能处处理这样样的情况况。exxcepptioon 表示一一种设计计或

26、实现现问题。也就是是说,它它表示如如果程序序运行正正常,从从不会发发生的情情况。 第十九,Lisst, Sett, MMap是否继继承自Colllecctioon接口? Listt,Set是 Map不不是 第二十,absstraact claass和intterffacee有什么么区别? 声明明方法的的存在而而不去实实现它的的类被叫叫做抽象象类(absstraact claass),它它用于要要创建一一个体现现某些基基本行为为的类,并并为该类类声明方方法,但但不能在在该类中中实现该该类的情情况。不不能创建建absstraact 类的实实例。然然而可以以创建一一个变量量,其类类型是一一个抽象象类

27、,并并让它指指向具体体子类的的一个实实例。不不能有抽抽象构造造函数或或抽象静静态方法法。Absstraact 类的子子类为它它们父类类中的所所有抽象象方法提提供实现现,否则则它们也也是抽象象类为。取而代代之,在在子类中中实现该该方法。知道其其行为的的其它类类可以在在类中实实现这些些方法。接口口(intterffacee)是抽抽象类的的变体。在接口口中,所所有方法法都是抽抽象的。多继承承性可通通过实现现这样的的接口而而获得。接口中中的所有有方法都都是抽象象的,没没有一个个有程序序体。接接口只可可以定义义staaticc fiinall成员变变量。接接口的实实现与子子类相似似,除了了该实现现类不能

28、能从接口口定义中中继承行行为。当当类实现现特殊接接口时,它它定义(即即将程序序体给予予)所有有这种接接口的方方法。然然后,它它可以在在实现了了该接口口的类的的任何对对象上调调用接口口的方法法。由于于有抽象象类,它它允许使使用接口口名作为为引用变变量的类类型。通通常的动动态联编编将生效效。引用用可以转转换到接接口类型型或从接接口类型型转换,insstannceoof 运算符符可以用用来决定定某对象象的类是是否实现现了接口口。 第二二十一,absstraact的metthodd是否可可同时是是staaticc,是否可可同时是是nattivee,是否否可同时时是synnchrroniizedd? 都

29、不能 第二十二二,接口口是否可可继承接接口? 抽象类类是否可可实现(immpleemennts)接口? 抽象类类是否可可继承实实体类(conncreete claass)? 接口口可以继继承接口口。抽象象类可以以实现(immpleemennts)接口,抽抽象类是是否可继继承实体体类,但但前提是是实体类类必须有有明确的的构造函函数。 第二十三三,启动动一个线线程是用用runn()还是staart()? 启动动一个线线程是调调用staart()方法,使使线程所所代表的的虚拟处处理机处处于可运运行状态态,这意意味着它它可以由由JVM调度并并执行。这并不不意味着着线程就就会立即即运行。runn()方法

30、可可以产生生必须退退出的标标志来停停止一个个线程。 第二十四四,构造造器Connstrructtor是否可可被oveerriide? 构造造器Connstrructtor不能被被继承,因因此不能能重写Oveerriidinng,但可可以被重重载Oveerlooadiing。 第二十五五,是否否可以继继承Strringg类? Sttrinng类是finnal类故不不可以继继承。 第二十六六,当一一个线程程进入一一个对象象的一个个synnchrroniizedd方法后后,其它它线程是是否可进进入此对对象的其其它方法法? 不能能,一个个对象的的一个synnchrroniizedd方法只只能由一一个线

31、程程访问。 第二十七七,tryy 里有一一个retturnn语句,那那么紧跟跟在这个个try后的finnallly 里的codde会不会会被执行行,什么么时候被被执行,在return前还是后? 会执执行,在在retturnn前执行行。 第二十八八,编程程题: 用最有有效率的的方法算算出2乘以8等於几? 有CC背景的的程序员员特别喜喜欢问这这种问题题。 2 3 第二十九九,两个个对象值值相同(x.equualss(y) = trrue),但却却可有不不同的hassh ccodee,这句句话对不不对? 不对对,有相相同的hassh ccodee。 第三十,当当一个对对象被当当作参数数传递到到一个方

32、方法后,此此方法可可改变这这个对象象的属性性,并可可返回变变化后的的结果,那那么这里里到底是是值传递递还是引引用传递递? 是值传递递。Javva 编程语语言只由由值传递递参数。当一个个对象实实例作为为一个参参数被传传递到方方法中时时,参数数的值就就是对该该对象的的引用。对象的的内容可可以在被被调用的的方法中中改变,但但对象的的引用是是永远不不会改变变的。 第三十一一,swttichh是否能能作用在在bytte上,是是否能作作用在lonng上,是是否能作作用在Strringg上?swwitcch(exppr1)中,exppr1是一个个整数表表达式。因此传传递给 swwitcch 和 caase

33、语句的的参数应应该是 innt、 shhortt、 chhar 或者 byyte。lonng,sstriing 都不能能作用于于swttichh。 第三十二二,编程程题: 写一个Sinngleetonn出来。Siinglletoon模式主主要作用用是保证证在Javva应用程程序中,一一个类Claass只有一一个实例例存在。一般般Sinngleetonn模式通通常有几几种种形形式:第一一种形式式:定义义一个类类,它的的构造函函数为priivatte的,它它有一个个staaticc的priivatte的该类类变量,在在类初始始化时实实例话,通通过一个个pubblicc的gettInsstannce

34、方法获获取对它它的引用用,继而调调用其中中的方法法。 CODEE: Coopy to cliipbooardd _publlic claass Sinngleetonn prrivaate Sinngleetonn() /在自己己内部定定义自己己一个实实例,是是不是很很奇怪? /注意这这是priivatte 只供内内部调用用 prrivaate staaticc Siinglletoon iinsttancce = neew SSinggletton(); /这里提提供了一一个供外外部访问问本claass的静态态方法,可可以直接接访问 puubliic sstattic Sinngleeton

35、n geetInnstaancee() retturnn innstaancee; 第二二种形式式: CODEE: Coopy to cliipbooardd _publlic claass Sinngleetonn prrivaate staaticc Siinglletoon iinsttancce = nuull; puubliic sstattic synnchrroniizedd Siinglletoon ggetIInsttancce() /这个方方法比上上面有所所改进,不不用每次次都进行行生成对对象,只只是第一一次 /使用时时生成实实例,提提高了效效率! iff (iinstta

36、ncce=nulll) insstannceneww Siinglletoon(); retuurn insstannce; 其他形式式:定义一个个类,它它的构造造函数为为priivatte的,所所有方法法为staaticc的。一般般认为第第一种形形式要更更加安全全些 Haashttablle和HasshMaap Haashttablle继承自Dicctioonarry类,而HasshMaap是Javva1.2引进的Mapp innterrfacce的一个个实现 HaashMMap允许将nulll作为一一个enttry的key或者vallue,而Hasshtaablee不允许 还有有就是,HasshMaap把Hasshtaablee的conntaiins方法去去掉了,改改成conntaiinsvvaluue和conntaiinsKKey。因为conntaiins方法容容易让人人引起误误解。 最大大的不同同是,Hasshtaablee的方法法是Synnchrroniize的,而HasshMaap不是,在在 多个线程程访问Hasshtaablee时,不不需要自自己为它它的方法法实现同同步,而而HasshMaap 就必须为为之提供供外同步步。dddddddddddddddddddddddddddddddddddddd

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理手册

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁