Java常见面试题集及答案1826.docx

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

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

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

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

3、二二,Annonyymouus IInneer CClasss (匿名内内部类)是否可可以exxtennds(继承)其它类类,是否否可以iimpllemeentss(实现现)innterrfacce(接接口)?第三,SStattic Nesstedd Cllasss和Innnerr Cllasss的不同同,说得得越多越越好(面面试题有有的很笼笼统)。第四四,&和和&的的区别。这个个问得很很少。第五五,HaashMMap和和Hasshtaablee的区别别。常问问。第六六,Coolleectiion和和Colllecctioons的的区别。你千千万别说说一个是是单数一一个是复复数。第七七,什么么

4、时候用用asssertt。APPI级的的技术人人员有可可能会问问这个。第八八,GCC是什么么?为什什么要有有GC? 基础础。 第九,SStriing s = neew SStriing(xyyz);创建建了几个个Strringg Obbjecct? 第十,MMathh.rooundd(111.5)等於多多少? Matth.rrounnd(-11.5)等等於多少少? 第十一一,shhortt s11 = 1; s1 = ss1 + 1;有什么么错? shoort s1 = 11; ss1 += 11;有什什么错?面试题题都是很很变态的的,要做做好受虐虐的准备备。第十十二,ssleeep()和wa

5、ait()有什什么区别别?搞线线程的最最爱。第十十三,JJavaa有没有有gotto?很很十三的的问题,如如果哪个个面试的的问到这这个问题题,我劝劝你还是是别进这这家公司司。第十十四,数数组有没没有leengtth()这个方方法? Strringg有没有有lenngthh()这这个方法法? 第十五五,Ovverlloadd和Ovverrridee的区别别。Ovverlloadded的的方法是是否可以以改变返返回值的的类型?常问。第十十六,SSet里里的元素素是不能能重复的的,那么么用什么么方法来来区分重重复与否否呢?是是用=还是eequaals()?它它们有何何区别? 第十七七,给我我一个你你

6、最常见见到的rrunttimee exxcepptioon。如果果你这个个答不出出来,面面试的人人会认为为你没有有实际编编程经验验。第十十八,eerroor和eexceeptiion有有什么区区别? 第十九九,Liist, Seet, Mapp是否继继承自CColllecttionn接口? 第二十十,abbstrractt cllasss和innterrfacce有什什么区别别?常问问。第二二十一,aabsttracct的mmethhod是是否可同同时是sstattic,是否可可同时是是nattivee,是否否可同时时是syynchhronnizeed? 第二十十二,接接口是否否可继承承接口?

7、抽象类类是否可可实现(impplemmentts)接接口?抽抽象类是是否可继继承实体体类(cconccrette cclasss)? 第二十十三,启启动一个个线程是是用ruun()还是sstarrt()?第二二十四,构构造器CConsstruuctoor是否否可被ooverrridde? 第二十十五,是是否可以以继承SStriing类类? 第二十十六,当当一个线线程进入入一个对对象的一一个syynchhronnizeed方法法后,其其它线程程是否可可进入此此对象的的其它方方法? 第二十十七,ttry 里里有一个个retturnn语句,那那么紧跟跟在这个个tryy后的ffinaallyy 里的c

8、codee会不会会被执行行,什么么时候被被执行,在在retturnn前还是是后? 第第二十八八,编程程题:用用最有效效率的方方法算出出2乘以以8等於於几?有有C背景景的程序序员特别别喜欢问问这种问问题。第二二十九,两两个对象象值相同同(x.equualss(y) = trrue),但却却可有不不同的hhashh coode,这这句话对对不对? 第第三十,当当一个对对象被当当作参数数传递到到一个方方法后,此此方法可可改变这这个对象象的属性性,并可可返回变变化后的的结果,那那么这里里到底是是值传递递还是引引用传递递? 第第三十一一,swwticch是否否能作用用在byyte上上,是否否能作用用在l

9、oong上上,是否否能作用用在Sttrinng上? 第第三十二二,编程程题:写写一个SSinggletton出出来。 好好先说这这么一些些。答:第一,谈谈谈fiinall, ffinaallyy, ffinaalizze的区区别。fiinall修饰符符(关键键字)如如果一个个类被声声明为ffinaal,意意味着它它不能再再派生出出新的子子类,不不能作为为父类被被继承。因此一一个类不不能既被被声明为为absstraact的的,又被被声明为为finnal的的。将变变量或方方法声明明为fiinall,可以以保证它它们在使使用中不不被改变变。被声声明为ffinaal的变变量必须须在声明明时给定定初值,

10、而而在以后后的引用用中只能能读取,不不可修改改。被声声明为ffinaal的方方法也同同样只能能使用,不不能重载载。finaallyy再异常常处理时时提供ffinaallyy块来执执行任何何清除操操作。如如果抛出出一个异异常,那那么相匹匹配的ccatcch子句句就会执执行,然然后控制制就会进进入fiinallly块块(如果果有的话话)。fiinallizee方法名名。Jaava技技术允许许使用ffinaalizze()方法在在垃圾收收集器将将对象从从内存中中清除出出去之前前做必要要的清理理工作。这个方方法是由由垃圾收收集器在在确定这这个对象象没有被被引用时时对这个个对象调调用的。它是在在Objj

11、ectt类中定定义的,因因此所有有的类都都继承了了它。子子类覆盖盖finnaliize()方法法以整理理系统资资源或者者执行其其他清理理工作。finnaliize()方法法是在垃垃圾收集集器删除除对象之之前对这这个对象象调用的的。第二二,Annonyymouus IInneer CClasss (匿名内内部类)是否可可以exxtennds(继承)其它类类,是否否可以iimpllemeentss(实现现)innterrfacce(接接口)? 匿名名的内部部类是没没有名字字的内部部类。不不能exxtennds(继承)其它类类,但一一个内部部类可以以作为一一个接口口,由另另一个内内部类实实现。第三三

12、,Sttatiic NNestted Claass和和Innner Claass的的不同,说说得越多多越好(面试题题有的很很笼统)。Neesteed CClasss(一一般是CC+的的说法),IInneer CClasss (一般是是JAVVA的说说法)。Javva内部部类与CC+嵌嵌套类最最大的不不同就在在于是否否有指向向外部的的引用上上。具体体可见hhttpp: /t/arrticcless/seerviicess/viiew.aspp?idd=7004&ppagee=1 注:静态内内部类(IInneer CClasss)意意味着11创建一一个sttatiic内部部类的对对象,不不需要一一

13、个外部部类对象象,2不不能从一一个sttatiic内部部类的一一个对象象访问一一个外部部类对象象第四,&和&的区别别。&是是位运算算符。&是布布尔逻辑辑运算符符。第五五,HaashMMap和和Hasshtaablee的区别别。都属属于Maap接口口的类,实实现了将将惟一键键映射到到特定的的值上。HaashMMap类类没有分分类或者者排序。它允许许一个nnulll键和多多个nuull值值。Haashttablle类似似于HaashMMap,但但是不允允许nuull键键和nuull值值。它也也比HaashMMap慢慢,因为为它是同同步的。第六六,Coolleectiion和和Colllecctio

14、ons的的区别。Coolleectiionss是个jjavaa.uttil下下的类,它它包含有有各种有有关集合合操作的的静态方方法。Coolleectiion是是个jaava.utiil下的的接口,它它是各种种集合结结构的父父接口。第七七,什么么时候用用asssertt。断言是一一个包含含布尔表表达式的的语句,在在执行这这个语句句时假定定该表达达式为ttruee。如果果表达式式计算为为fallse,那那么系统统会报告告一个AAsseertiioneerroor。它它用于调调试目的的:assserrt(aa 0); / thhrowws aan AAsseertiioneerroor iif a

15、a = 0 断言可可以有两两种形式式:assserrt EExprresssionn1 ; assserrt EExprresssionn1 : Exxpreessiion22 ; Exxpreessiion11应该总总是产生生一个布布尔值。Exxpreessiion22可以是是得出一一个值的的任意表表达式。这个值值用于生生成显示示更多调调试信息息的Sttrinng消息息。断言言在默认认情况下下是禁用用的。要要在编译译时启用用断言,需需要使用用souurcee 1.4标记记:jaavacc -ssourrce 1.44 Teest.javva 要在在运行时时启用断断言,可可使用-enaable

16、eassserttionns或者者-eaa标记。要在在运行时时选择禁禁用断言言,可使使用-dda或者者-diisabbleaasseertiionss标记。要系系统类中中启用断断言,可可使用-esaa或者-dsaa标记。还可以以在包的的基础上上启用或或者禁用用断言。可以以在预计计正常情情况下不不会到达达的任何何位置上上放置断断言。断断言可以以用于验验证传递递给私有有方法的的参数。不过,断断言不应应该用于于验证传传递给公公有方法法的参数数,因为为不管是是否启用用了断言言,公有有方法都都必须检检查其参参数。不不过,既既可以在在公有方方法中,也也可以在在非公有有方法中中利用断断言测试试后置条条件。另

17、另外,断断言不应应该以任任何方式式改变程程序的状状态。第八八,GCC是什么么?为什什么要有有GC? (基基础)。GCC是垃圾圾收集器器。Jaava程程序员不不用担心心内存管管理,因因为垃圾圾收集器器会自动动进行管管理。要要请求垃垃圾收集集,可以以调用下下面的方方法之一一:Syysteem.ggc() Ruuntiime.gettRunntimme().gcc() 第九九,Sttrinng ss = neww Sttrinng(xyzz);创建了了几个SStriing Objjectt? 两个个对象,一一个是xyxx,一一个是指指向xxyx的引用用对象ss。 第十,MMathh.rooundd(

18、111.5)等於多多少? Matth.rrounnd(-11.5)等等於多少少? Maath.rouund(11.5)返返回(llongg)122,Maath.rouund(-111.5)返回(llongg)-111; 第十一,sshorrt ss1 = 1; s11 = s1 + 11;有什什么错? shhortt s11 = 1; s1 += 1;有有什么错错? shorrt ss1 = 1; s11 = s1 + 11;有错错,s11是shhortt型,ss1+11是innt型,不能显显式转化化为shhortt型。可可修改为为s1 =(sshorrt)(s1 + 11) 。shoort

19、s1 = 11; ss1 += 11正确。 第十二,ssleeep() 和 waiit() 有什什么区别别? 搞搞线程的的最爱slleepp()方方法是使使线程停停止一段段时间的的方法。在slleepp 时间间间隔期期满后,线线程不一一定立即即恢复执执行。这这是因为为在那个个时刻,其其它线程程可能正正在运行行而且没没有被调调度为放放弃执行行,除非非(a)醒来来的线线程具有有更高的的优先级级 (bb)正在在运行的的线程因因为其它它原因而而阻塞。waait()是线线程交互互时,如如果线程程对一个个同步对对象x 发出一一个waait()调用用,该线线程会暂暂停执行行,被调调对象进进入等待待状态,直直

20、到被唤唤醒或等等待时间间到。 第十三,JJavaa有没有有gotto? Gootojavva中的的保留字字,现在在没有在在javva中使使用。 第十四,数数组有没没有leengtth()这个方方法? Strringg有没有有lenngthh()这这个方法法?数组组没有llenggth()这个个方法,有有lenngthh的属性性。Sttrinng有有有lenngthh()这这个方法法。 第十五,OOverrloaad和OOverrridde的区区别。OOverrloaadedd的方法法是否可可以改变变返回值值的类型型? 方法法的重写写Oveerriidinng和重重载Ovverlloadding

21、g是Jaava多多态性的的不同表表现。重重写Ovverrridiing是是父类与与子类之之间多态态性的一一种表现现,重载载Oveerlooadiing是是一个类类中多态态性的一一种表现现。如果果在子类类中定义义某方法法与其父父类有相相同的名名称和参参数,我我们说该该方法被被重写 (Ovverrridiing)。子类类的对象象使用这这个方法法时,将将调用子子类中的的定义,对对它而言言,父类类中的定定义如同同被屏屏蔽了了。如果果在一个个类中定定义了多多个同名名的方法法,它们们或有不不同的参参数个数数或有不不同的参参数类型型,则称称为方法法的重载载(Ovverlloaddingg)。OOverrlo

22、aadedd的方法法是可以以改变返返回值的的类型。 第十六,SSet里里的元素素是不能能重复的的,那么么用什么么方法来来区分重重复与否否呢? 是用=还是是equualss()? 它们们有何区区别? Seet里的的元素是是不能重重复的,那那么用iiterratoor()方法来来区分重重复与否否。eqqualls()是判读读两个SSet是是否相等等。eqqualls()和=方法决决定引用用值是否否指向同同一对象象equualss()在在类中被被覆盖,为为的是当当两个分分离的对对象的内内容和类类型相配配的话,返返回真值值。 第十七,给给我一个个你最常常见到的的runntimme eexceeptii

23、on。 CODEE: Coopy to cliipbooardd _AritthmeeticcExccepttionn, AArraaySttoreeExccepttionn, BBuffferOOverrfloowExxcepptioon, BuffferrUndderfflowwExccepttionn, CCannnotRRedooExccepttionn, CCannnotUUndooExccepttionn, CClasssCaastEExceeptiion, CMMMExxcepptioon, ConncurrrenntMoodifficaatioonExxcepptioon, D

24、OMMExccepttionn, EEmpttySttackkExccepttionn, IIlleegallArggumeentEExceeptiion, IllleggalMMoniitorrStaateEExceeptiion, IllleggalPPathhStaateEExceeptiion, IllleggalSStatteExxcepptioon, ImagginggOpEExceeptiion, InndexxOuttOfBBounndsEExceeptiion, MiissiingRResoourcceExxcepptioon, NeggatiiveAArraaySiizeE

25、Exceeptiion, NooSucchEllemeentEExceeptiion, NuullPPoinnterrExccepttionn, PProffileeDattaExxcepptioon, ProovidderEExceeptiion, RaasteerFOORMaatExxcepptioon, SeccuriityEExceeptiion, SyysteemExxcepptioon, UnddecllareedThhrowwablleExxcepptioon, UnmmodiifiaableeSettExccepttionn, UUnsuuppoorteedOpperaatio

26、onExxcepptioon 第十八,eerroor和eexceeptiion有有什么区区别? errrorr 表示示恢复不不是不可可能但很很困难的的情况下下的一种种严重问问题。比比如说内内存溢出出。不可可能指望望程序能能处理这这样的情情况。exxcepptioon 表表示一种种设计或或实现问问题。也也就是说说,它表表示如果果程序运运行正常常,从不不会发生生的情况况。 第十九,LListt, SSet, Maap是否否继承自自Colllecctioon接口口? Listt,Seet是 Map不不是 第二十,aabsttracct cclasss和iinteerfaace有有什么区区别? 声明明

27、方法的的存在而而不去实实现它的的类被叫叫做抽象象类(aabsttracct cclasss),它它用于要要创建一一个体现现某些基基本行为为的类,并并为该类类声明方方法,但但不能在在该类中中实现该该类的情情况。不不能创建建absstraact 类的实实例。然然而可以以创建一一个变量量,其类类型是一一个抽象象类,并并让它指指向具体体子类的的一个实实例。不不能有抽抽象构造造函数或或抽象静静态方法法。Abbstrractt 类的的子类为为它们父父类中的的所有抽抽象方法法提供实实现,否否则它们们也是抽抽象类为为。取而而代之,在在子类中中实现该该方法。知道其其行为的的其它类类可以在在类中实实现这些些方法。

28、接口口(innterrfacce)是是抽象类类的变体体。在接接口中,所所有方法法都是抽抽象的。多继承承性可通通过实现现这样的的接口而而获得。接口中中的所有有方法都都是抽象象的,没没有一个个有程序序体。接接口只可可以定义义staaticc fiinall成员变变量。接接口的实实现与子子类相似似,除了了该实现现类不能能从接口口定义中中继承行行为。当当类实现现特殊接接口时,它它定义(即即将程序序体给予予)所有有这种接接口的方方法。然然后,它它可以在在实现了了该接口口的类的的任何对对象上调调用接口口的方法法。由于于有抽象象类,它它允许使使用接口口名作为为引用变变量的类类型。通通常的动动态联编编将生效效

29、。引用用可以转转换到接接口类型型或从接接口类型型转换,iinsttancceoff 运算算符可以以用来决决定某对对象的类类是否实实现了接接口。 第二二十一,aabsttracct的mmethhod是是否可同同时是sstattic,是否可可同时是是nattivee,是否否可同时时是syynchhronnizeed? 都不能 第二十二二,接口口是否可可继承接接口? 抽象类类是否可可实现(impplemmentts)接接口? 抽象类类是否可可继承实实体类(conncreete claass)? 接口口可以继继承接口口。抽象象类可以以实现(impplemmentts)接接口,抽抽象类是是否可继继承实体

30、体类,但但前提是是实体类类必须有有明确的的构造函函数。 第二十三三,启动动一个线线程是用用runn()还还是sttartt()? 启动动一个线线程是调调用sttartt()方方法,使使线程所所代表的的虚拟处处理机处处于可运运行状态态,这意意味着它它可以由由JVMM调度并并执行。这并不不意味着着线程就就会立即即运行。runn()方方法可以以产生必必须退出出的标志志来停止止一个线线程。 第二十四四,构造造器Coonsttrucctorr是否可可被ovverrridee? 构造造器Coonsttrucctorr不能被被继承,因因此不能能重写OOverrriddingg,但可可以被重重载Ovverll

31、oaddingg。 第二十五五,是否否可以继继承Sttrinng类? Sttrinng类是是finnal类类故不可可以继承承。 第二十六六,当一一个线程程进入一一个对象象的一个个synnchrroniizedd方法后后,其它它线程是是否可进进入此对对象的其其它方法法? 不能能,一个个对象的的一个ssyncchroonizzed方方法只能能由一个个线程访访问。 第二十七七,trry 里有有一个rretuurn语语句,那那么紧跟跟在这个个tryy后的ffinaallyy 里的ccodee会不会会被执行行,什么么时候被被执行,在在retturnn前还是是后? 会执执行,在在retturnn前执行行。

32、 第二十八八,编程程题: 用最有有效率的的方法算算出2乘乘以8等等於几? 有CC背景的的程序员员特别喜喜欢问这这种问题题。 2 3 第二十九九,两个个对象值值相同(x.eequaals(y) = truue),但但却可有有不同的的hassh ccodee,这句句话对不不对? 不对对,有相相同的hhashh coode。 第三十,当当一个对对象被当当作参数数传递到到一个方方法后,此此方法可可改变这这个对象象的属性性,并可可返回变变化后的的结果,那那么这里里到底是是值传递递还是引引用传递递? 是值传递递。Jaava 编程语语言只由由值传递递参数。当一个个对象实实例作为为一个参参数被传传递到方方法中

33、时时,参数数的值就就是对该该对象的的引用。对象的的内容可可以在被被调用的的方法中中改变,但但对象的的引用是是永远不不会改变变的。 第三十一一,swwticch是否否能作用用在byyte上上,是否否能作用用在loong上上,是否否能作用用在Sttrinng上?swwitcch(eexprr1)中中,exxpr11是一个个整数表表达式。因此传传递给 swiitchh 和 casse 语语句的参参数应该该是 iint、 shhortt、 ccharr 或者者 byyte。lonng,sstriing 都不能能作用于于swttichh。 第三十二二,编程程题: 写一个个Sinngleetonn出来。S

34、iinglletoon模式式主要作作用是保保证在JJavaa应用程程序中,一一个类CClasss只有有一个实实例存在在。一般般Sinngleetonn模式通通常有几几种种形形式:第一一种形式式:定义义一个类类,它的的构造函函数为pprivvatee的,它它有一个个staaticc的prrivaate的的该类变变量,在在类初始始化时实实例话,通通过一个个pubblicc的geetInnstaancee方法获获取对它它的引用用,继而而调用其其中的方方法。 CODEE: Coopy to cliipbooardd _publlic claass Sinngleetonn prrivaate Sinn

35、gleetonn() /在自己己内部定定义自己己一个实实例,是是不是很很奇怪? /注意这这是prrivaate 只供内内部调用用 prrivaate staaticc Siinglletoon iinsttancce = neew SSinggletton(); /这里提提供了一一个供外外部访问问本cllasss的静态态方法,可可以直接接访问 puubliic sstattic Sinngleetonn geetInnstaancee() retturnn innstaancee; 第二二种形式式: CODEE: Coopy to cliipbooardd _publlic claass Si

36、nngleetonn prrivaate staaticc Siinglletoon iinsttancce = nuull; puubliic sstattic synnchrroniizedd Siinglletoon ggetIInsttancce() /这个方方法比上上面有所所改进,不不用每次次都进行行生成对对象,只只是第一一次 /使用时时生成实实例,提提高了效效率! iff (iinsttancce=nulll) insstannceneww Siinglletoon(); retuurn insstannce; 其他形式式:定义一个个类,它它的构造造函数为为priivatte的,所

37、所有方法法为sttatiic的。一般般认为第第一种形形式要更更加安全全些 Haashttablle和HHashhMapp Haashttablle继承承自Diictiionaary类类,而HHashhMapp是Jaava11.2引引进的MMap intterffacee的一个个实现 HaashMMap允允许将nnulll作为一一个enntryy的keey或者者vallue,而而Hasshtaablee不允许许 还有有就是,HHashhMapp把Haashttablle的cconttainns方法法去掉了了,改成成conntaiinsvvaluue和cconttainnsKeey。因因为coontaainss方法容容易让人人引起误误解。 最大大的不同同是,HHashhtabble的的方法是是Synnchrroniize的的,而HHashhMapp不是,在在 多个线程程访问HHashhtabble时时,不需需要自己己为它的的方法实实现同步步,而HHashhMapp 就必须为为之提供供外同步步。dddddddddddddddddddddddddddddddddddddd

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

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

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

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