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

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

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

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

2、可能你就就被拒之之门外了了。当然这这些都是是Javva的基基本题,那那些面试试的人大大多数不不会问你你Hibbernnatee有多先先进,EEcliipsee的三个个组成部部分,或或commmannd ddesiign pattterrn,他他们都是是老一辈辈了,最最喜欢问问的就是是基础知知识。别别小看了了这些基基础,我我朋友水水平一流流,结果果就栽在在一到基基础知识识的问题题下,和和高薪无无缘。好了废废话少说说,开始始正题。问:第一,谈谈谈fiinall, ffinaallyy, ffinaalizze的区区别。最常被被问到。第二,AAnonnymoous Innner Claass (匿名

3、名内部类类)是否否可以eexteendss(继承承)其它它类,是是否可以以impplemmentts(实实现)iinteerfaace(接口)?第三三,Sttatiic NNestted Claass和和Innner Claass的的不同,说说得越多多越好(面试题题有的很很笼统)。第四,&和&的区别别。这个问问得很少少。第五,HHashhMapp和Haashttablle的区区别。常问。第六,CColllecttionn和Coolleectiionss的区别别。你千万万别说一一个是单单数一个个是复数数。第七,什什么时候候用assserrt。APII级的技技术人员员有可能能会问这这个。第八,GG

4、C是什什么?为为什么要要有GCC? 基基础。 第第九,SStriing s = neew SStriing(xyyz);创建建了几个个Strringg Obbjecct? 第第十,MMathh.rooundd(111.5)等於多多少? Matth.rrounnd(-11.5)等等於多少少? 第第十一,sshorrt ss1 = 1; s11 = s1 + 11;有什什么错? shhortt s11 = 1; s1 += 1;有有什么错错?面试试题都是是很变态态的,要要做好受受虐的准准备。第十二二,slleepp()和和waiit()有什么么区别?搞线程程的最爱爱。第十三三,Jaava有有没有g

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

6、答答不出来来,面试试的人会会认为你你没有实实际编程程经验。第十八八,errrorr和exxcepptioon有什什么区别别? 第第十九,LListt, SSet, Maap是否否继承自自Colllecctioon接口口? 第第二十,aabsttracct cclasss和iinteerfaace有有什么区区别?常常问。第二十十一,aabsttracct的mmethhod是是否可同同时是sstattic,是否可可同时是是nattivee,是否否可同时时是syynchhronnizeed? 第第二十二二,接口口是否可可继承接接口?抽抽象类是是否可实实现(iimpllemeentss)接口口?抽象象

7、类是否否可继承承实体类类(cooncrretee cllasss)? 第第二十三三,启动动一个线线程是用用runn()还还是sttartt()?第二十十四,构构造器CConsstruuctoor是否否可被ooverrridde? 第第二十五五,是否否可以继继承Sttrinng类? 第第二十六六,当一一个线程程进入一一个对象象的一个个synnchrroniizedd方法后后,其它它线程是是否可进进入此对对象的其其它方法法? 第第二十七七,trry 里有有一个rretuurn语语句,那那么紧跟跟在这个个tryy后的ffinaallyy 里的ccodee会不会会被执行行,什么么时候被被执行,在在re

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

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

10、aal的方方法也同同样只能能使用,不不能重载载。finallly再异常常处理时时提供ffinaallyy块来执执行任何何清除操操作。如如果抛出出一个异异常,那那么相匹匹配的ccatcch子句句就会执执行,然然后控制制就会进进入fiinallly块块(如果果有的话话)。finnaliize方法名名。Jaava技技术允许许使用ffinaalizze()方法在在垃圾收收集器将将对象从从内存中中清除出出去之前前做必要要的清理理工作。这这个方法法是由垃垃圾收集集器在确确定这个个对象没没有被引引用时对对这个对对象调用用的。它它是在OObjeect类类中定义义的,因因此所有有的类都都继承了了它。子子类覆盖盖

11、finnaliize()方法法以整理理系统资资源或者者执行其其他清理理工作。ffinaalizze()方法是是在垃圾圾收集器器删除对对象之前前对这个个对象调调用的。第二,AAnonnymoous Innner Claass (匿名名内部类类)是否否可以eexteendss(继承承)其它它类,是是否可以以impplemmentts(实实现)iinteerfaace(接口)? 匿名的的内部类类是没有有名字的的内部类类。不能能exttendds(继继承)其其它类,但但一个内内部类可可以作为为一个接接口,由由另一个个内部类类实现。第三,SStattic Nesstedd Cllasss和Innnerr

12、 Cllasss的不同同,说得得越多越越好(面面试题有有的很笼笼统)。Nesstedd Cllasss(一般般是C+的说说法),IInneer CClasss (一般是是JAVVA的说说法)。JJavaa内部类类与C+嵌套套类最大大的不同同就在于于是否有有指向外外部的引引用上。具具体可见见htttp: /xxfroontffreee.neet/aartiiclees/sservvicees/vvieww.assp?iid=7704&pagge=11 注:静静态内部部类(IInneer CClasss)意意味着11创建一一个sttatiic内部部类的对对象,不不需要一一个外部部类对象象,2不不能

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

14、ctioons是是个jaava.utiil下的的类,它它包含有有各种有有关集合合操作的的静态方方法。Colllecctioon是个个javva.uutill下的接接口,它它是各种种集合结结构的父父接口。第七,什什么时候候用assserrt。断言是一个个包含布布尔表达达式的语语句,在在执行这这个语句句时假定定该表达达式为ttruee。如果果表达式式计算为为fallse,那那么系统统会报告告一个AAsseertiioneerroor。它它用于调调试目的的:asssertt(a 00); / thrrowss ann Assserrtioonerrrorr iff a = 0 断断言可以以有两种种形

15、式:asssertt Exxpreessiion11 ; asssertt Exxpreessiion11 : Exppresssioon2 ; Exppresssioon1应应该总是是产生一一个布尔尔值。Exppresssioon2可可以是得得出一个个值的任任意表达达式。这这个值用用于生成成显示更更多调试试信息的的Strringg消息。断言在在默认情情况下是是禁用的的。要在在编译时时启用断断言,需需要使用用souurcee 1.4标记记:javvac -soourcce 11.4 Tesst.jjavaa 要在运运行时启启用断言言,可使使用-eenabbleaasseertiionss或者-

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

17、式式改变程程序的状状态。第八,GGC是什什么?为为什么要要有GCC? (基础)。GC是是垃圾收收集器。JJavaa程序员员不用担担心内存存管理,因因为垃圾圾收集器器会自动动进行管管理。要要请求垃垃圾收集集,可以以调用下下面的方方法之一一:Sysstemm.gcc() Runntimme.ggetRRunttimee().gc() 第九,SStriing s = neew SStriing(xyyz);创建建了几个个Strringg Obbjecct? 两个对对象,一一个是xyxx,一一个是指指向xxyx的引用用对象ss。 第十,Maath.rouund(11.5)等等於多少少? MMathh.

18、rooundd(-111.55)等於於多少? Matth.rrounnd(111.55)返回回(loong)112,MMathh.rooundd(-111.55)返回回(loong)-11; 第十一,sshorrt ss1 = 1; s11 = s1 + 11;有什什么错? shhortt s11 = 1; s1 += 1;有有什么错错? shortt s11 = 1; s1 = ss1 + 1;有错,ss1是sshorrt型,ss1+11是innt型,不能显显式转化化为shhortt型。可可修改为为s1 =(sshorrt)(s1 + 11) 。sshorrt ss1 = 1; s11 +=

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

20、第十三,JJavaa有没有有gotto? Gottojavva中的的保留字字,现在在没有在在javva中使使用。 第十四,数数组有没没有leengtth()这个方方法? Strringg有没有有lenngthh()这这个方法法?数组没没有leengtth()这个方方法,有有lenngthh的属性性。Strringg有有llenggth()这个个方法。 第十五,OOverrloaad和OOverrridde的区区别。OOverrloaadedd的方法法是否可可以改变变返回值值的类型型? 方法的的重写OOverrriddingg和重载载Oveerlooadiing是是Javva多态态性的不不同表现

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

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

23、to cclippboaard _ArithhmetticEExceeptiion, ArrrayyStooreEExceeptiion, BuuffeerOvverfflowwExccepttionn, BBuffferUUndeerfllowEExceeptiion, CaannootReedoEExceeptiion, CaannootUnndoEExceeptiion, CllasssCasstExxcepptioon, CMMMExccepttionn, CConccurrrenttModdifiicattionnExccepttionn, DDOMEExceeptiion, Emm

24、ptyyStaackEExceeptiion, IllleggalAArguumenntExxcepptioon, IlllegaalMoonittorSStatteExxcepptioon, IlllegaalPaathSStatteExxcepptioon, IlllegaalSttateeExccepttionn, ImagiingOOpExxcepptioon, InddexOOutOOfBoounddsExxcepptioon, MisssinngReesouurceeExccepttionn, NNegaativveArrrayySizzeExxcepptioon, NoSSuch

25、hEleemenntExxcepptioon, NulllPoointterEExceeptiion, PrrofiileDDataaExccepttionn, PProvvideerExxcepptioon, RassterrFORRMattExccepttionn, SSecuurittyExxcepptioon, SysstemmExccepttionn, UUndeeclaareddThrrowaableeExccepttionn, UUnmoodiffiabbleSSetEExceeptiion, UnnsuppporrteddOpeerattionnExccepttionn 第十八

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

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

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

29、类型型转换,iinsttancceoff 运算算符可以以用来决决定某对对象的类类是否实实现了接接口。 第二十十一,aabsttracct的mmethhod是是否可同同时是sstattic,是否可可同时是是nattivee,是否否可同时时是syynchhronnizeed? 都不能 第二十二,接接口是否否可继承承接口? 抽象象类是否否可实现现(immpleemennts)接口? 抽象象类是否否可继承承实体类类(cooncrretee cllasss)? 接口可可以继承承接口。抽抽象类可可以实现现(immpleemennts)接口,抽抽象类是是否可继继承实体体类,但但前提是是实体类类必须有有明确的

30、的构造函函数。 第二十三,启启动一个个线程是是用ruun()还是sstarrt()? 启动一一个线程程是调用用staart()方法法,使线线程所代代表的虚虚拟处理理机处于于可运行行状态,这这意味着着它可以以由JVVM调度度并执行行。这并并不意味味着线程程就会立立即运行行。ruun()方法可可以产生生必须退退出的标标志来停停止一个个线程。 第二十四,构构造器CConsstruuctoor是否否可被ooverrridde? 构造器器Connstrructtor不不能被继继承,因因此不能能重写OOverrriddingg,但可可以被重重载Ovverlloaddingg。 第二十五,是是否可以以继承S

31、Striing类类? Strringg类是ffinaal类故故不可以以继承。 第二十六,当当一个线线程进入入一个对对象的一一个syynchhronnizeed方法法后,其其它线程程是否可可进入此此对象的的其它方方法? 不能,一一个对象象的一个个synnchrroniizedd方法只只能由一一个线程程访问。 第二十七,ttry 里里有一个个retturnn语句,那那么紧跟跟在这个个tryy后的ffinaallyy 里的ccodee会不会会被执行行,什么么时候被被执行,在在retturnn前还是是后? 会执行行,在rretuurn前前执行。 第二十八,编编程题: 用最最有效率率的方法法算出22乘以

32、88等於几几? 有C背背景的程程序员特特别喜欢欢问这种种问题。 2 33 第二十九,两两个对象象值相同同(x.equualss(y) = trrue),但却却可有不不同的hhashh coode,这这句话对对不对? 不对,有有相同的的hassh ccodee。 第三十,当当一个对对象被当当作参数数传递到到一个方方法后,此此方法可可改变这这个对象象的属性性,并可可返回变变化后的的结果,那那么这里里到底是是值传递递还是引引用传递递? 是值传递。JJavaa 编程程语言只只由值传传递参数数。当一一个对象象实例作作为一个个参数被被传递到到方法中中时,参参数的值值就是对对该对象象的引用用。对象象的内容容

33、可以在在被调用用的方法法中改变变,但对对象的引引用是永永远不会会改变的的。 第三十一,sswtiich是是否能作作用在bbytee上,是是否能作作用在llongg上,是是否能作作用在SStriing上上?swiitchh(exxpr11)中,eexprr1是一一个整数数表达式式。因此此传递给给 swwitcch 和和 caase 语句的的参数应应该是 intt、 sshorrt、 chaar 或或者 bbytee。loong,strringg 都不不能作用用于swwticch。 第三十二,编编程题: 写一一个Siinglletoon出来来。Sinngleetonn模式主主要作用用是保证证在Ja

34、ava应应用程序序中,一一个类CClasss只有有一个实实例存在在。一般SSinggletton模模式通常常有几种种种形式式:第一种种形式:定义一一个类,它它的构造造函数为为priivatte的,它它有一个个staaticc的prrivaate的的该类变变量,在在类初始始化时实实例话,通通过一个个pubblicc的geetInnstaancee方法获获取对它它的引用用,继而而调用其其中的方方法。 CODE: Coppy tto cclippboaard _publiic cclasss SSinggletton priivatte SSinggletton() /在在自己内内部定义义自己一一个

35、实例例,是不不是很奇奇怪? /注注意这是是priivatte 只只供内部部调用 priivatte sstattic Sinngleetonn innstaancee = neww Siinglletoon(); /这这里提供供了一个个供外部部访问本本claass的的静态方方法,可可以直接接访问 pubblicc sttatiic SSinggletton gettInsstannce() rretuurn insstannce; 第二种种形式: CODE: Coppy tto cclippboaard _publiic cclasss SSinggletton priivatte sstat

36、tic Sinngleetonn innstaancee = nulll; pubblicc sttatiic ssyncchroonizzed Sinngleetonn geetInnstaancee() /这这个方法法比上面面有所改改进,不不用每次次都进行行生成对对象,只只是第一一次 /使使用时生生成实例例,提高高了效率率! if (innstaancee=nnulll) iinsttanccennew Sinngleetonn(); returrn iinsttancce; 其他形式:定义一个类类,它的的构造函函数为pprivvatee的,所所有方法法为sttatiic的。一般认认为第一

37、一种形式式要更加加安全些些 Hasshtaablee和HaashMMap Hasshtaablee继承自自Dicctioonarry类,而而HasshMaap是JJavaa1.22引进的的Mapp innterrfacce的一一个实现现 HasshMaap允许许将nuull作作为一个个enttry的的keyy或者vvaluue,而而Hasshtaablee不允许许 还有就就是,HHashhMapp把Haashttablle的cconttainns方法法去掉了了,改成成conntaiinsvvaluue和cconttainnsKeey。因因为coontaainss方法容容易让人人引起误误解。 最大的的不同是是,Haashttablle的方方法是SSyncchroonizze的,而而HasshMaap不是是,在 多个线程访访问Haashttablle时,不不需要自自己为它它的方法法实现同同步,而而HasshMaap 就必须为之之提供外外同步。dddddddddddddddddddddddddddddddddddddd

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

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

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

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