JAVA面试问

上传人:汽*** 文档编号:491977339 上传时间:2023-12-17 格式:DOCX 页数:14 大小:45.56KB
返回 下载 相关 举报
JAVA面试问_第1页
第1页 / 共14页
JAVA面试问_第2页
第2页 / 共14页
JAVA面试问_第3页
第3页 / 共14页
JAVA面试问_第4页
第4页 / 共14页
JAVA面试问_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《JAVA面试问》由会员分享,可在线阅读,更多相关《JAVA面试问(14页珍藏版)》请在金锄头文库上搜索。

1、JAVAA 面试32问问第一,谈谈谈fiinall, ffinaallyy, ffinaalizze的区区别。 (最常常被问到到)finaal修饰饰符(关关键字) 如果一一个类被被声明为为finnal,意意味着它它不能再再派生出出新的子子类,不不能作为为父类被被继承。因因此一个个类不能能既被声声明为aabsttracct,又又被声明明为fiinall。将变变量或方方法声明明为fiinall,可以以保证它它们在使使用中不不被改变变。其初初始化可可以在两两个地方方:一是是其定义义处,也也就是说说在fiinall变量定定义时直直接给其其赋值;二是在在构造函函数中。这这两个地地方只能能选其一一,要么么

2、在定义义时给值值,要么么在构造造函数中中给值,不不能同时时既在定定义时给给了值,又又在构造造函数中中给另外外的值,而而在以后后的引用用中只能能读取,不不可修改改。被声声明为ffinaal的方方法也同同样只能能使用,不不能重写写(ovverrridee)。 finnallly 在在异常处处理时提提供fiinallly块块来执行行任何清清除操作作。如果果抛出一一个异常常,那么么相匹配配的caatchh子句就就会执行行,然后后控制就就会进入入finnallly块(如如果有的的话)。 finnaliize 方法名名。Jaava 技术允允许使用用finnaliize()方法法在垃圾圾收集器器将对象象从内

3、存存中清除除出去之之前做必必要的清清理工作作。这个个方法是是由垃圾圾收集器器在确定定这个对对象没有有被引用用时对这这个对象象调用的的。它是是在Obbjecct类中中定义的的,因此此所有的的类都继继承了它它。子类类覆盖ffinaalizze()方法以以整理系系统资源源或者执执行其他他清理工工作。ffinaalizze()方法是是在垃圾圾收集器器删除对对象之前前对这个个对象调调用的。第二,AAnonnymoous Innner Claass(匿匿名内部部类) 是否可可以exxtennds(继继承)其其它类,是是否可以以impplemmentts(实实现)iinteerfaace(接接口)? 匿名的

4、内内部类是是没有名名字的内内部类。不不能exxtennds(继继承) 其它类类,但一一个内部部类可以以作为一一个接口口,由另另一个内内部类实实现。第三,SStattic Nesstedd Cllasss 和 Innner Claass的的不同,说说得越多多越好。(面面试题有有的很笼笼统) Nestted(嵌嵌套)CClasss(一一般是CC+的的说法) nesstedd cllasss 是合合成型聚聚集关系系(Coompoositte AAggrregaatioon) 的另一一种表达达方式,也也就是说说nesstedd cllasss也可以以用Agggreegattionn表达出出来,但但是,

5、nnestted claass更更加精确确地表达达了一种种专用的的、紧耦耦合的关关系,尤尤其在代代码生成成时,nnestted claass在在Javva中映映射成iinliine claass。比比如,计计算机专专用开关关电源类类可以作作为计算算机类的的nesstedd cllasss,但是是,电池池组类就就不一定定适合作作为计算算机类的的nesstedd cllasss,因为为,电池池组类表表述的是是一个过过于通用用的对象象,可能能还被包包含(AAggrregaatioon)于于模型中中的其他他设备对对象。cclasss AA neesteed iin cclasss BB,则说说明A是是

6、一个nnestted claass,一一般A是是用来完完成B中中的某种种重要功功能。 Innner Claass (一般般是JAAVA的的说法) Jaava内内部类与与C+嵌套类类最大的的不同就就在于是是否有指指向外部部的引用用上。 静态内内部类(IInneer CClasss)意意味着aa创建一一个sttatiic内部部类的对对象,不不需要一一个外部部类对象象,b不不能从一一个sttatiic内部部类的一一个对象象访问一一个外部部类对象象第四,&和&的区别别。(这这个问得得很少) &是位运运算符。&可为位位运算,也也可为逻逻辑运算算,看情情况而定定。&是布尔尔逻辑运运算符。第五,HHashh

7、Mapp和Haashttablle的区区别。(常常问)都属于MMap接接口的类类,实现现了将惟惟一键映映射到特特定的值值上。 HasshMaap 类类没有分分类或者者排序。它它允许一一个 nnulll 键和和多个 nulll 值值。 HHashhtabble 类似于于 HaashMMap,但但是不允允许 nnulll 键和和 nuull 值。它它也比 HasshMaap 慢慢,因为为它是同同步的。 Hasshtaablee继承自自Dicctioonarry类,而而HasshMaap是JJavaa1.22引进的的Mapp innterrfacce的一一个实现现。 HHashhMapp允许将将nu

8、lll作为为一个eentrry的kkey或或者vaaluee,而HHashhtabble不不允许,还还有就是是,HaashMMap把把Hasshtaablee的coontaainss方法去去掉了,改改成coontaainssvallue(Retturnns ttruee iff thhis mapp maaps onee orr moore keyys tto tthe speeciffiedd vaaluee)和cconttainnsKeey(RRetuurnss trrue if thiis mmap conntaiins a mmapppingg foor tthe speeciffie

9、dd keey)。因因为coontaainss(Teestss iff soome keyy maaps intto tthe speeciffiedd vaaluee inn thhis hasshtaablee)方法法容易让让人引起起误解。 最大的的不同是是,Haashttablle的方方法是SSyncchroonizze的,而而HasshMaap不是是,在多多个线程程访问HHashhtabble时时,不需需要自己己为它的的方法实实现同步步,而HHashhMapp 就必必须为之之提供外外同步。 Hasshtaablee和HaashMMap采采用的hhashh/reehassh算法法都大概概

10、一样,所所以性能能不会有有很大的的差异。第六,CColllecttionn 和 Colllecctioons的的区别。(你你千万别别说一个个是单数数一个是是复数) Colllecttionns是个个javva.uutill下的类类,它包包含有各各种有关关集合操操作的静静态方法法。 CColllecttionn是个jjavaa.uttil下下的接口口,它是是各种集集合结构构的父接接口。第七,什什么时候候用assserrt。(AAPI级级的技术术人员有有可能会会问这个个) 断言是一一个包含含布尔表表达式的的语句,在在执行这这个语句句时假定定该表达达式为 truue。如如果表达达式计算算为 ffal

11、sse,那那么系统统会报告告一个 Assserttionnerrror。它它用于调调试目的的: aasseert(a 0); / tthroows an Assserttionnerrror if a = 00 断言言可以有有两种形形式: asssertt Exxpreessiion11 ; asssertt Exxpreessiion11 : Exppresssioon2 ; EExprresssionn1 应应该总是是产生一一个布尔尔值。 Exppresssioon2 可以是是得出一一个值的的任意表表达式。这这个值用用于生成成显示更更多调试试信息的的 Sttrinng 消消息。 断言在在默

12、认情情况下是是禁用的的。要在在编译时时启用断断言,需需要使用用 soourcce 11.4 标记: jaavacc -ssourrce 1.44 Teest.javva 要要在运行行时启用用断言,可可使用 -ennablleassserrtioons 或者 -eaa 标记记。 要要在运行行时选择择禁用断断言,可可使用 -daa 或者者 -ddisaableeassserttionns 标标记。 要系统统类中启启用断言言,可使使用 -esaa 或者者 -ddsa 标记。还还可以在在包的基基础上启启用或者者禁用断断言。 可以在在预计正正常情况况下不会会到达的的任何位位置上放放置断言言。断言言可以用

13、用于验证证传递给给私有方方法的参参数。不不过,断断言不应应该用于于验证传传递给公公有方法法的参数数,因为为不管是是否启用用了断言言,公有有方法都都必须检检查其参参数。不不过,既既可以在在公有方方法中,也也可以在在非公有有方法中中利用断断言测试试后置条条件。另另外,断断言不应应该以任任何方式式改变程程序的状状态。第八,GGC是什什么?为为什么要要有GCC?(基基础) GC是垃垃圾收集集器。JJavaa 程序序员不用用担心内内存管理理,因为为垃圾收收集器会会自动进进行管理理。要请请求垃圾圾收集,可可以调用用下面的的方法之之一: Sysstemm.gcc() Runntimme.ggetRRuntt

14、imee().gc() ggc 虽虽可清理理,但非非立刻清清理第九,SStriing s = neew SStriing(xyyz);创建建了几个个Strringg Obbjecct? 两个对象象,一个个是xxyx,一个个是指向向xyyx的的引用对对象s。一一个对象象,一个个对象引引用。第十,MMathh.rooundd(111.5)等于多多少? Matth.rrounnd(-11.5)等等于多少少? Mathh.rooundd(111.5)返回(llongg)122,Maath.rouund(-111.5)返回(llongg)-111; 第十一,sshorrt ss1 = 1; s11 =

15、s1 + 11;有什什么错? shhortt s11 = 1; s1 += 1;有有什么错错? ( 面试题题都是很很变态的的,要做做好受虐虐的准备备) shorrt ss1 = 1; s11 = s1 + 11;有错错,s11是shhortt型,ss1+11是innt型,不能显显式转化化为shhortt型。可可修改为为s1 =(sshorrt)(s1 + 11) 。sshorrt ss1 = 1; s11 += 1正正确。 Bytte aa=1,b=11,byye cc=a+b;错错误,bbytee与byyte,sshorrt与sshorrt运算算返回值值为innt 第第十二,ssleeep() 和 waiit() 有什什么区别别? (搞搞线程的的最爱) sleeep() 是使使线程停停止一段段时间的的方法。在在sleeep 时间间间隔期满满后,线线程不一一定立即即恢复执执行。这这是因为为在那个个时刻,其其它线程程可能正正在运行行而且没没有被调调度为放放弃执行行,除非非(a)醒来来的线线程具有有更高的的优先级级 (bb)正在在运行的的线程因因为其它它原因而而阻塞。 waiit() 是

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

当前位置:首页 > 商业/管理/HR > 市场营销

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号