个Java面试题与答案_第1页
个Java面试题与答案_第2页
个Java面试题与答案_第3页
个Java面试题与答案_第4页
个Java面试题与答案_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录 HYPERLINK xxkuqinx/shuoit/20140427/339504.html面向对象象编程(OOP) HYPERLINK xxkuqinx/shuoit/20140427/339504.html常见的JJavaa问题 HYPERLINK xxkuqinx/shuoit/20140427/339504.htmlJavaa线程 HYPERLINK xxkuqinx/shuoit/20140427/339504.htmlJavaa集合类类 HYPERLINK xxkuqinx/shuoit/20140427/339504.html垃圾收集集器 HYPERLINK xximpor

2、tnewx/11028.html l exception xximportnewx/11028.html异常处理理 HYPERLINK xximportnewx/11028.html l applet xximportnewx/11028.htmlJavaa小应用用程序(Appplett) HYPERLINK xximportnewx/11028.html l swing xximportnewx/11028.htmlSwinng HYPERLINK xximportnewx/11028.html l jdbc xximportnewx/11028.htmlJDBCC HYPERLINK xx

3、importnewx/11028.html l rmi xximportnewx/11028.html远程方法法调用(RMI) HYPERLINK xximportnewx/11028.html l servlet xximportnewx/11028.htmlServvlett HYPERLINK xximportnewx/11028.html l jsp xximportnewx/11028.htmlJSP面向对象象编程(OOP)Javaa是一个个支持并并发、基基于类和和面向对对象的计计算机编编程语言言。下面面列出了了面向对对象 HYPERLINK xxkuqinx/软件件开发的的优点:代

4、码开发发模块化化,更易易维护和和修改。代码复用用。增强代码码的可靠靠性和灵灵活性。增加代码码的可理理解性。面向对象象编程有有很多重重要的特特性,比比如:封封装,继继承,多多态和抽抽象。下下面的章章节我们们会逐个个分析这这些特性性。封装封装给对对象提供供了隐藏藏内部特特性和行行为的能能力。对对象提供供一些能能被其他他对象访访问的方方法来改改变它内内部的数数据。在在Javva当中,有有3种修饰饰符:pubblicc,priivatte和prootecctedd。每一一种修饰饰符给其其他的位位于同一一个包或或者不同同包下面面对象赋赋予了不不同的访访问权限限。下面列出出了使用用封装的的一些好好处:通过

5、隐藏藏对象的的属性来来保护对对象内部部的状态态。提高了代代码的可可用性和和可维护护性,因因为对象象的行为为可以被被单独的的改变或或者是扩扩展。禁止对象象之间的的不良交交互提高高模块化化。参考 HYPERLINK xexamples.javacodegeeksx/java-basics/encapsulation-in-java/这个个文档获获取更多多关于封封装的细细节和示示例。多态多态是编编程语言言给不同同的底层层数据类类型做相相同的接接口展示示的一种种能力。一个多多态类型型上的操操作可以以应用到到其他类类型的值值上面。继承继承给对对象提供供了从基基类获取取字段和和方法的的能力。继承提提供了代

6、代码的重重用行,也也可以在在不修改改类的情情况下给给现存的的类添加加新特性性。抽象抽象是把把想法从从具体的的实例中中分离出出来的步步骤,因因此,要要根据他他们的功功能而不不是实现现细节来来创建类类。Javva支持创创建只暴暴漏接口口而不包包含方法法实现的的抽象的的类。这这种抽象象技术的的主要目目的是把把类的行行为和实实现细节节分离开开。抽象和封封装的不不同点抽象和封封装是互互补的概概念。一一方面,抽抽象关注注对象的的行为。另一方方面,封封装关注注对象行行为的细细节。一一般是通通过隐藏藏对象内内部状态态信息做做到封装装,因此此,封装装可以看看成是用用来提供供抽象的的一种策策略。常见的JJavaa

7、问题1.什么么是Javva虚拟机机?为什什么Javva被称作作是“平台无无关的编编程语言言”?Javaa虚拟机机是一个个可以执执行Javva字节码码的虚拟拟机进程程。Javva源文件件被编译译成能被被Javva虚拟机机执行的的字节码码文件。Javaa被设计计成允许许应用程程序可以以运行在在任意的的平台,而而不需要要程序员员为每一一个平台台单独重重写或者者是重新新编译。Javva虚拟机机让这个个变为可可能,因因为它知知道底层层硬件平平台的指指令长度度和其他他特性。2.JDDK和JRE的区别别是什么么?Javaa运行时时环境(JRRE)是将要要执行Javva程序的Javva虚拟机机。它同同时也包包

8、含了执执行appplett需要的的浏览器器插件。Javva开发工工具包(JDDK)是完整整的Javva软件开开发包,包包含了JRE,编译译器和其其他的工工具(比如:JavvaDooc,Javva调试器),可以以让开发发者开发发、编译译、执行行Javva应用程程序。3.”sstattic”关键字字是什么么意思?Javva中是否否可以覆覆盖(ovverrridee)一个priivatte或者是staaticc的方法法?“staaticc”关键字字表明一一个成员员变量或或者是成成员方法法可以在在没有所所属的类类的实例例变量的的情况下下被访问问。Jaava中staaticc方法不不能被覆覆盖,因因为方

9、法法覆盖是是基于运运行时动动态绑定定的,而而staaticc方法是是编译时时静态绑绑定的。staaticc方法跟跟类的任任何实例例都不相相关,所所以概念念上不适适用。4.是否否可以在在staaticc环境中中访问非非staaticc变量?stattic变量在Javva中是属属于类的的,它在在所有的的实例中中的值是是一样的的。当类类被Javva虚拟机机载入的的时候,会会对staaticc变量进进行初始始化。如如果你的的代码尝尝试不用用实例来来访问非非staaticc的变量量,编译译器会报报错,因因为这些些变量还还没有被被创建出出来,还还没有跟跟任何实实例关联联上。5.Jaava支持的的数据类类型

10、有哪哪些?什什么是自自动拆装装箱?Javaa语言支支持的8中基本本数据类类型是:byteeshorrtintlonggfloaatdoubbleboolleanncharr自动装箱箱是Javva编译器器在基本本数据类类型和对对应的对对象包装装类型之之间做的的一个转转化。比比如:把把int转化成Inttegeer,douublee转化成douublee,等等等。反之之就是自自动拆箱箱。6.Jaava中的方方法覆盖盖(Ovverrridiing)和方法法重载(Ovverlloaddingg)是什么么意思?Javaa中的方方法重载载发生在在同一个个类里面面两个或或者是多多个方法法的方法法名相同同但是

11、参参数不同同的情况况。与此此相对,方方法覆盖盖是说子子类重新新定义了了父类的的方法。方法覆覆盖必须须有相同同的方法法名,参参数列表表和返回回类型。覆盖者者可能不不会限制制它所覆覆盖的方方法的访访问。7.Jaava中,什什么是构构造函数数?什么么是构造造函数重重载?什什么是复复制构造造函数?当新对象象被创建建的时候候,构造造函数会会被调用用。每一一个类都都有构造造函数。在程序序员没有有给类提提供构造造函数的的情况下下,Javva编译器器会为这这个类创创建一个个默认的的构造函函数。Javaa中构造造函数重重载和方方法重载载很相似似。可以以为一个个类创建建多个构构造函数数。每一一个构造造函数必必须有

12、它它自己唯唯一的参参数列表表。Javaa不支持持像C+中那样样的复制制构造函函数,这这个不同同点是因因为如果果你不自自己写构构造函数数的情况况下,Javva不会创创建默认认的复制制构造函函数。8.Jaava支持多多继承么么?不支持,Javva不支持持多继承承。每个个类都只只能继承承一个类类,但是是可以实实现多个个接口。9.接口口和抽象象类的区区别是什什么?Javaa提供和和支持创创建抽象象类和接接口。它它们的实实现有共共同点,不不同点在在于:接口中所所有的方方法隐含含的都是是抽象的的。而抽抽象类则则可以同同时包含含抽象和和非抽象象的方法法。类可以实实现很多多个接口口,但是是只能继继承一个个抽象

13、类类类如果要要实现一一个接口口,它必必须要实实现接口口声明的的所有方方法。但但是,类类可以不不实现抽抽象类声声明的所所有方法法,当然然,在这这种情况况下,类类也必须须得声明明成是抽抽象的。抽象类可可以在不不提供接接口方法法实现的的情况下下实现接接口。Javaa接口中中声明的的变量默默认都是是finnal的。抽抽象类可可以包含含非finnal的变量量。Javaa接口中中的成员员函数默默认是pubblicc的。抽抽象类的的成员函函数可以以是priivatte,prootecctedd或者是pubblicc。接口是绝绝对抽象象的,不不可以被被实例化化。抽象象类也不不可以被被实例化化,但是是,如果果它

14、包含含maiin方法的的话是可可以被调调用的。也可以参参考 HYPERLINK xxjavacodegeeksx/2014/04/abstract-class-versus-interface-in-the-jdk-8-era.htmlJDDK8中抽象象类和接接口的区区别10.什什么是值值传递和和引用传传递?对象被值值传递,意意味着传传递了对对象的一一个副本本。因此此,就算算是改变变了对象象副本,也也不会影影响源对对象的值值。对象被引引用传递递,意味味着传递递的并不不是实际际的对象象,而是是对象的的引用。因此,外外部对引引用对象象所做的的改变会会反映到到所有的的对象上上。Javaa线程11.进

15、进程和线线程的区区别是什什么?进程是执执行着的的应用程程序,而而线程是是进程内内部的一一个执行行序列。一个进进程可以以有多个个线程。线程又又叫做轻轻量级进进程。12.创创建线程程有几种种不同的的方式?你喜欢欢哪一种种?为什什么?有三种方方式可以以用来创创建线程程:继承Thhreaad类实现Ruunnaablee接口应用程序序可以使使用Exeecuttor框架来来创建线线程池实现Ruunnaablee接口这这种方式式更受欢欢迎,因因为这不不需要继继承Thrreadd类。在在应用设设计中已已经继承承了别的的对象的的情况下下,这需需要多继继承(而而Javva不支持持多继承承),只只能实现现接口。同时

16、,线线程池也也是非常常高效的的,很容容易实现现和使用用。一三.概概括的解解释下线线程的几几种可用用状态。线程在执执行过程程中,可可以处于于下面几几种状态态:就绪(RRunnnablle):线程准准备运行行,不一一定立马马就能开开始执行行。运行中(Runnninng):进程程正在执执行线程程的代码码。等待中(Waiitinng):线程处处于阻塞塞的状态态,等待待外部的的处理结结束。睡眠中(Sleeepiing):线程程被强制制睡眠。I/O阻阻塞(Bllockked on I/OO):等待I/O操作完完成。同步阻塞塞(Bllockked on Synnchrroniizattionn):等待待获取

17、锁锁。死亡(DDeadd):线程程完成了了执行。14.同同步方法法和同步步代码块块的区别别是什么么?在Javva语言中中,每一一个对象象有一把把锁。线线程可以以使用synnchrroniizedd关键字字来获取取对象上上的锁。synnchrroniizedd关键字字可应用用在方法法级别(粗粒度度锁)或者是是代码块块级别(细粒度度锁)。一五.在在监视器器(Moonittor)内部,是是如何做做线程同同步的?程序应应该做哪哪种级别别的同步步?监视器和和锁在Javva虚拟机机中是一一块使用用的。监监视器监监视一块块同步代代码块,确确保一次次只有一一个线程程执行同同步代码码块。每每一个监监视器都都和一

18、个个对象引引用相关关联。线线程在获获取锁之之前不允允许执行行同步代代码。16.什什么是死死锁(deeadllockk)?两个进程程都在等等待对方方执行完完毕才能能继续往往下执行行的时候候就发生生了死锁锁。结果果就是两两个进程程都陷入入了无限限的等待待中。17.如如何确保保N个线程程可以访访问N个资源源同时又又不导致致死锁?使用多线线程的时时候,一一种非常常简单的的避免死死锁的方方式就是是:指定定获取锁锁的顺序序,并强强制线程程按照指指定的顺顺序获取取锁。因因此,如如果所有有的线程程都是以以同样的的顺序加加锁和释释放锁,就就不会出出现死锁锁了。Javaa集合类类一八.JJavaa集合类类框架的的

19、基本接接口有哪哪些?Javaa集合类类提供了了一套设设计良好好的支持持对一组组对象进进行操作作的接口口和类。Javva集合类类里面最最基本的的接口有有:Colllecttionn:代表表一组对对象,每每一个对对象都是是它的子子元素。Set:不包含含重复元元素的Colllecctioon。Listt:有顺顺序的colllecctioon,并且且可以包包含重复复元素。Map:可以把把键(keey)映射到到值(vaaluee)的对象象,键不不能重复复。19.为为什么集集合类没没有实现现Clooneaablee和Serriallizaablee接口?集合类接接口指定定了一组组叫做元元素的对对象。集集合

20、类接接口的每每一种具具体的实实现类都都可以选选择以它它自己的的方式对对元素进进行保存存和排序序。有的的集合类类允许重重复的键键,有些些不允许许。20.什什么是迭迭代器(Itteraatorr)?Iterratoor接口提提供了很很多对集集合元素素进行迭迭代的方方法。每每一个集集合类都都包含了了可以返返回迭代代器实例例的迭代代方法。迭代器器可以在在迭代的的过程中中删除底底层集合合的元素素。克隆(cclonningg)或者是是序列化化(seeriaalizzatiion)的语义义和含义义是跟具具体的实实现相关关的。因因此,应应该由集集合类的的具体实实现来决决定如何何被克隆隆或者是是序列化化。21.

21、IIterratoor和LisstItteraatorr的区别别是什么么?下面列出出了他们们的区别别:Iterratoor可用来来遍历Set和Lisst集合,但但是LisstItteraatorr只能用用来遍历历Lisst。Iterratoor对集合合只能是是前向遍遍历,LisstItteraatorr既可以以前向也也可以后后向。ListtIteerattor实现了Iteerattor接口,并并包含其其他的功功能,比比如:增增加元素素,替换换元素,获获取前一一个和后后一个元元素的索索引,等等等。22.快快速失败败(faail-fasst)和安全全失败(faail-saffe)的区别别是什么么?

22、Iterratoor的安全全失败是是基于对对底层集集合做拷拷贝,因因此,它它不受源源集合上上修改的的影响。javva.uutill包下面面的所有有的集合合类都是是快速失失败的,而java.util.concurrent包下面的所有的类都是安全失败的。快速失败的迭代器会抛出ConcurrentModificationException异常,而安全失败的迭代器永远不会抛出这样的异常。23.JJavaa中的HasshMaap的工作作原理是是什么?Javaa中的HasshMaap是以键键值对(keey-vvaluue)的形式式存储元元素的。HasshMaap需要一一个hassh函数,它它使用hassh

23、Coode()和equualss()方法来来向集合合/从集合合添加和和检索元元素。当当调用putt()方法的的时候,HasshMaap会计算key的hassh值,然然后把键键值对存存储在集集合中合合适的索索引上。如果key已经存存在了,vallue会被更更新成新新值。HasshMaap的一些些重要的的特性是是它的容容量(caapaccityy),负载载因子(looad facctorr)和扩容容极限(thhressholld rresiizinng)。24.hhashhCodde()和equualss()方法的的重要性性体现在在什么地地方?Javaa中的HasshMaap使用hasshCood

24、e()和equualss()方法来来确定键键值对的的索引,当当根据键键获取值值的时候候也会用用到这两两个方法法。如果果没有正正确的实实现这两两个方法法,两个个不同的的键可能能会有相相同的hassh值,因因此,可可能会被被集合认认为是相相等的。而且,这这两个方方法也用用来发现现重复元元素。所所以这两两个方法法的实现现对HasshMaap的精确确性和正正确性是是至关重重要的。25.HHashhMapp和Hasshtaablee有什么么区别?HashhMapp和Hasshtaablee都实现现了Map接口,因因此很多多特性非非常相似似。但是是,他们们有以下下不同点点:HashhMapp允许键键和值是

25、是nulll,而Hasshtaablee不允许许键或者者值是nulll。Hashhtabble是同步步的,而而HasshMaap不是。因此,HasshMaap更适合合于单线线程环境境,而Hasshtaablee适合于于多线程程环境。HashhMapp提供了了可供应应用迭代代的键的的集合,因因此,HasshMaap是快速速失败的的。另一一方面,Hasshtaablee提供了了对键的的列举(Ennumeerattionn)。一般认为为Hasshtaablee是一个个遗留的的类。26.数数组(Arrrayy)和列表(ArrrayyLisst)有什么么区别?什么时时候应该该使用Arrray而不是Arr

26、rayLListt?下面列出出了Arrray和ArrrayLListt的不同同点:Arraay可以包包含基本本类型和和对象类类型,ArrrayLListt只能包包含对象象类型。Arraay大小是是固定的的,ArrrayLListt的大小小是动态态变化的的。ArraayLiist提供了了更多的的方法和和特性,比比如:adddAlll(),remmoveeAlll(),iteerattor()等等。对于基本本类型数数据,集集合使用用自动装装箱来减减少编码码工作量量。但是是,当处处理固定定大小的的基本数数据类型型的时候候,这种种方式相相对比较较慢。27.AArraayLiist和LinnkeddLi

27、sst有什么么区别?ArraayLiist和LinnkeddLisst都实现现了Lisst接口,他他们有以以下的不不同点:ArraayLiist是基于于索引的的数据接接口,它它的底层层是数组组。它可可以以O(11)时间复复杂度对对元素进进行随机机访问。与此对对应,LinnkeddLisst是以元元素列表表的形式式存储它它的数据据,每一一个元素素都和它它的前一一个和后后一个元元素链接接在一起起,在这这种情况况下,查查找某个个元素的的时间复复杂度是是O(nn)。相对于AArraayLiist,LinnkeddLisst的插入入,添加加,删除除操作速速度更快快,因为为当元素素被添加加到集合合任意位位

28、置的时时候,不不需要像像数组那那样重新新计算大大小或者者是更新新索引。LinkkedLListt比ArrrayLListt更占内内存,因因为LinnkeddLisst为每一一个节点点存储了了两个引引用,一一个指向向前一个个元素,一一个指向向下一个个元素。也可以参参考 HYPERLINK xxjavacodegeeksx/20一三/12/arraylist-vs-linkedlist.htmlArrrayyLisst vvs. LinnkeddLisst。28xpparaablee和Commparratoor接口是是干什么么的?列列出它们们的区别别。Javaa提供了了只包含含一个commparr

29、eToo()方法的Commparrablle接口。这个方方法可以以个给两两个对象象排序。具体来来说,它它返回负负数,0,正数数来表明明输入对对象小于于,等于于,大于于已经存存在的对对象。Javaa提供了了包含commparre()和equualss()两个方方法的Commparratoor接口。commparre()方法用用来给两两个输入入参数排排序,返返回负数数,0,正数数表明第第一个参参数是小小于,等等于,大大于第二二个参数数。equualss()方法需需要一个个对象作作为参数数,它用用来决定定输入参参数是否否和commparratoor相等。只有当当输入参参数也是是一个commparra

30、toor并且输输入参数数和当前前commparratoor的排序序结果是是相同的的时候,这这个方法法才返回回truue。29.什什么是Javva优先级级队列(Prriorrityy Quueuee)?PrioorittyQuueuee是一个个基于优优先级堆堆的无界界队列,它它的元素素是按照照自然顺顺序(naaturral ordder)排序的的。在创创建的时时候,我我们可以以给它提提供一个个负责给给元素排排序的比比较器。PriioriityQQueuue不允许nulll值,因因为他们们没有自自然顺序序,或者者说他们们没有任任何的相相关联的的比较器器。最后后,PriioriityQQueuue不

31、是线线程安全全的,入入队和出出队的时时间复杂杂度是O(llog(n)。30.你你了解大大O符号(biig-OO nootattionn)么?你你能给出出不同数数据结构构的例子子么?大O符号号描述了了当数据据结构里里面的元元素增加加的时候候,算法法的规模模或者是是性能在在最坏的的场景下下有多么么好。大大O符号也也可用来来描述其其他的行行为,比比如:内内存消耗耗。因为为集合类类实际上上是数据据结构,我我们一般般使用大大O符号基基于时间间,内存存和性能能来选择择最好的的实现。大O符号可可以对大大量数据据的性能能给出一一个很好好的说明明。31.如如何权衡衡是使用用无序的的数组还还是有序序的数组组?有序

32、数组组最大的的好处在在于查找找的时间间复杂度度是O(llog n),而无无序数组组是O(nn)。有序序数组的的缺点是是插入操操作的时时间复杂杂度是O(nn),因为为值大的的元素需需要往后后移动来来给新元元素腾位位置。相相反,无无序数组组的插入入时间复复杂度是是常量O(11)。32.JJavaa集合类类框架的的最佳实实践有哪哪些?根据应用用的需要要正确选选择要使使用的集集合的类类型对性性能非常常重要,比比如:假假如元素素的大小小是固定定的,而而且能事事先知道道,我们们就应该该用Arrray而不是ArrrayLListt。有些集合合类允许许指定初初始容量量。因此此,如果果我们能能估计出出存储的的元

33、素的的数目,我我们可以以设置初初始容量量来避免免重新计计算hassh值或者者是扩容容。为了类型型安全,可可读性和和健壮性性的原因因总是要要使用泛泛型。同同时,使使用泛型型还可以以避免运运行时的的ClaassCCasttExccepttionn。使用JDDK提供的的不变类类(immmuttablle cclasss)作为Map的键可可以避免免为我们们自己的的类实现现hasshCoode()和equualss()方法。编程的时时候接口口优于实实现。底层的集集合实际际上是空空的情况况下,返返回长度度是0的集合合或者是是数组,不不要返回回nulll。33.EEnummeraatioon接口和Iteer

34、attor接口的的区别有有哪些?Enummeraatioon速度是Iteerattor的2倍,同同时占用用更少的的内存。但是,Iteerattor远远比Enuumerratiion安全,因因为其他他线程不不能够修修改正在在被iteerattor遍历的的集合里里面的对对象。同同时,Iteerattor允许调调用者删删除底层层集合里里面的元元素,这这对Enuumerratiion来说是是不可能能的。34.HHashhSett和TreeeSeet有什么么区别?HashhSett是由一一个hassh表来实实现的,因因此,它它的元素素是无序序的。addd(),remmovee(),conntaiins(

35、)方法的的时间复复杂度是是O(11)。另一方面面,TreeeSeet是由一一个树形形的结构构来实现现的,它它里面的的元素是是有序的的。因此此,addd(),remmovee(),conntaiins()方法的的时间复复杂度是是O(llognn)。垃圾收集集器(Garrbagge CColllecttorss)35.JJavaa中垃圾圾回收有有什么目目的?什什么时候候进行垃垃圾回收收?垃圾回收收的目的的是识别别并且丢丢弃应用用不再使使用的对对象来释释放和重重用资源源。36.SSysttem.gc()和Runntimme.ggc()会做什什么事情情?这两个方方法用来来提示JVM要进行行垃圾回回收。

36、但但是,立立即开始始还是延延迟进行行垃圾回回收是取取决于JVM的。37.ffinaalizze()方法什什么时候候被调用用?析构构函数(fiinallizaatioon)的目的的是什么么?在释放对对象占用用的内存存之前,垃垃圾收集集器会调调用对象象的finnaliize()方法。一般建建议在该该方法中中释放对对象持有有的资源源。38.如如果对象象的引用用被置为为nulll,垃圾圾收集器器是否会会立即释释放对象象占用的的内存?不会,在在下一个个垃圾回回收周期期中,这这个对象象将是可可被回收收的。39.JJavaa堆的结结构是什什么样子子的?什什么是堆堆中的永永久代(Perrm GGen spaa

37、ce)?JVM的的堆是运运行时数数据区,所所有类的的实例和和数组都都是在堆堆上分配配内存。它在JVM启动的的时候被被创建。对象所所占的堆堆内存是是由自动动内存管管理系统统也就是是垃圾收收集器回回收。堆内存是是由存活活和死亡亡的对象象组成的的。存活活的对象象是应用用可以访访问的,不不会被垃垃圾回收收。死亡亡的对象象是应用用不可访访问尚且且还没有有被垃圾圾收集器器回收掉掉的对象象。一直直到垃圾圾收集器器把这些些对象回回收掉之之前,他他们会一一直占据据堆内存存空间。40.串串行(seeriaal)收集器器和吞吐吐量(thhrouughpput)收集器器的区别别是什么么?吞吐量收收集器使使用并行行版本

38、的的新生代代垃圾收收集器,它它用于中中等规模模和大规规模数据据的应用用程序。而串行行收集器器对大多多数的小小应用(在现代代处理器器上需要要大概1000M左右的的内存)就足够够了。41.在在Javva中,对对象什么么时候可可以被垃垃圾回收收?当对象对对当前使使用这个个对象的的应用程程序变得得不可触触及的时时候,这这个对象象就可以以被回收收了。42.JJVM的永久久代中会会发生垃垃圾回收收么?垃圾回收收不会发发生在永永久代,如如果永久久代满了了或者是是超过了了临界值值,会触触发完全全垃圾回回收(Fuull GC)。如果果你仔细细查看垃垃圾收集集器的输输出信息息,就会会发现永永久代也也是被回回收的。

39、这就是是为什么么正确的的永久代代大小对对避免Fulll GGC是非常常重要的的原因。请参考考下 HYPERLINK xxjavacodegeeksx/20一三/02/java-8-from-permgen-to-metaspace.htmlJaava88:从永永久代到到元数据据区(译者注注:Javva8中已经经移除了了永久代代,新加加了一个个叫做元元数据区区的nattivee内存区)异常处理理43.JJavaa中的两两种异常常类型是是什么?他们有有什么区区别?Javaa中有两两种异常常:受检检查的(chheckked)异常和和不受检检查的(unncheeckeed)异常。不受检检查的异异常不需

40、需要在方方法或者者是构造造函数上上声明,就就算方法法或者是是构造函函数的执执行可能能会抛出出这样的的异常,并并且不受受检查的的异常可可以传播播到方法法或者是是构造函函数的外外面。相相反,受受检查的的异常必必须要用用thrrowss语句在在方法或或者是构构造函数数上声明明。这里里有 HYPERLINK xxjavacodegeeksx/20一三/07/java-exception-handling-tutorial-with-examples-and-best-practices.htmlJaava异常处处理的一一些小建建议。44.JJavaa中Exccepttionn和Errror有什么么区别

41、?Exceeptiion和Errror都是Thrrowaablee的子类类。Exccepttionn用于用用户程序序可以捕捕获的异异常情况况。Errror定义了了不期望望被用户户程序捕捕获的异异常。45.tthroow和thrrowss有什么么区别?throow关键字字用来在在程序中中明确的的抛出异异常,相相反,thrrowss语句用用来表明明方法不不能处理理的异常常。每一一个方法法都必须须要指定定哪些异异常不能能处理,所所以方法法的调用用者才能能够确保保处理可可能发生生的异常常,多个个异常是是用逗号号分隔的的。45.异异常处理理的时候候,finnallly代码块块的重要要性是什什么?(译者注

42、注:作者者标题的的序号弄弄错了)无论是否否抛出异异常,finnallly代码块块总是会会被执行行。就算算是没有有cattch语句同同时又抛抛出异常常的情况况下,finnallly代码块块仍然会会被执行行。最后后要说的的是,finnallly代码块块主要用用来释放放资源,比比如:I/O缓冲区区,数据据库连接接。46.异异常处理理完成以以后,Exccepttionn对象会会发生什什么变化化?Exceeptiion对象会会在下一一个垃圾圾回收过过程中被被回收掉掉。47.ffinaallyy代码块块和finnaliize()方法有有什么区区别?无论是否否抛出异异常,finnallly代码块块都会执执行

43、,它它主要是是用来释释放应用用占用的的资源。finnaliize()方法是Objjectt类的一一个prootecctedd方法,它它是在对对象被垃垃圾回收收之前由由Javva虚拟机机来调用用的。Javaa小应用用程序(Appplett)48.什什么是Appplett?javaa apppleet是能够够被包含含在HTMML页面中中并且能能被启用用了javva的客户户端浏览览器执行行的程序序。Appplett主要用用来创建建动态交交互的web应用程程序。49.解解释一下下Appplett的生命命周期appllet可以经经历下面面的状态态:Initt:每次次被载入入的时候候都会被被初始化化。St

44、arrt:开始始执行appplett。Stopp:结束束执行appplett。Desttroyy:卸载appplett之前,做做最后的的清理工工作。50.当当appplett被载入入的时候候会发生生什么?首先,创创建appplett控制类类的实例例,然后后初始化化appplett,最后后开始运运行。51.AAppllet和普通通的Javva应用程程序有什什么区别别?appllet是运行行在启用用了javva的浏览览器中,Javva应用程程序是可可以在浏浏览器之之外运行行的独立立的Javva程序。但是,它它们都需需要有Javva虚拟机机。进一步来来说,Javva应用程程序需要要一个有有特定方方法

45、签名名的maiin函数来来开始执执行。Javva aappllet不需要要这样的的函数来来开始执执行。最后,JJavaa apppleet一般会会使用很很严格的的安全策策略,Javva应用一一般使用用比较宽宽松的安安全策略略。52.JJavaa apppleet有哪些些限制条条件?主要是由由于安全全的原因因,给appplett施加了了以下的的限制:appllet不能够够载入类类库或者者定义本本地方法法。appllet不能在在宿主机机上读写写文件。appllet不能读读取特定定的系统统属性。appllet不能发发起网络络连接,除除非是跟跟宿主机机。appllet不能够够开启宿宿主机上上其他任任何

46、的程程序。53.什什么是不不受信任任的appplett?不受信任任的appplett是不能能访问或或是执行行本地系系统文件件的Javva aappllet,默认认情况下下,所有有下载的的appplett都是不不受信任任的。54.从从网络上上加载的的appplett和从本本地文件件系统加加载的appplett有什么么区别?当appplett是从网网络上加加载的时时候,appplett是由appplett类加载载器载入入的,它它受appplett安全管管理器的的限制。当appplett是从客客户端的的本地磁磁盘载入入的时候候,appplett是由文文件系统统加载器器载入的的。从文件系系统载入入的a

47、ppplett允许在在客户端端读文件件,写文文件,加加载类库库,并且且也允许许执行其其他程序序,但是是,却通通不过字字节码校校验。55.aappllet类加载载器是什什么?它它会做哪哪些工作作?当appplett是从网网络上加加载的时时候,它它是由appplett类加载载器载入入的。类类加载器器有自己己的javva名称空空间等级级结构。类加载载器会保保证来自自文件系系统的类类有唯一一的名称称空间,来来自网络络资源的的类有唯唯一的名名称空间间。当浏览器器通过网网络载入入appplett的时候候,appplett的类被被放置于于和appplett的源相相关联的的私有的的名称空空间中。然后,那那些被

48、类类加载器器载入进进来的类类都是通通过了验验证器验验证的。验证器器会检查查类文件件格式是是否遵守守Javva语言规规范,确确保不会会出现堆堆栈溢出出(sttackk ovverffloww)或者下下溢(unnderrfloow),传递递给字节节码指令令的参数数是正确确的。56.aappllet安全管管理器是是什么?它会做做哪些工工作?appllet安全管管理器是是给appplett施加限限制条件件的一种种机制。浏览器器可以只只有一个个安全管管理器。安全管管理器在在启动的的时候被被创建,之之后不能能被替换换覆盖或或者是扩扩展。Swinng57.弹弹出式选选择菜单单(Chhoicce)和列表(Li

49、ist)有什么么区别Choiice是以一一种紧凑凑的形式式展示的的,需要要下拉才才能看到到所有的的选项。Chooicee中一次次只能选选中一个个选项。Lisst同时可可以有多多个元素素可见,支支持选中中一个或或者多个个元素。58.什什么是布布局管理理器?布局管理理器用来来在容器器中组织织组件。59.滚滚动条(Sccrolllbaar)和滚动动面板(JSScroollPPanee)有什么么区别?Scroollbbar是一个个组件,不不是容器器。而ScrrolllPanne是容器器。ScrrolllPanne自己处处理滚动动事件。60.哪哪些Swiing的方法法是线程程安全的的?只有3个个线程安安

50、全的方方法: reepaiint(), revvaliidatte(), aand invvaliidatte()。61.说说出三种种支持重重绘(paainttingg)的组件件。Canvvas, Frramee, PPaneel,和Appplett支持重重绘。62.什什么是裁裁剪(cllipppingg)?限制在一一个给定定的区域域或者形形状的绘绘图操作作就做裁裁剪。63.MMenuuIteem和CheeckbboxMMenuuIteem的区别别是什么么?ChecckbooxMeenuIItemm类继承承自MennuIttem类,支支持菜单单选项可可以选中中或者不不选中。64.边边缘布局局(

51、BoordeerLaayouut)里面的的元素是是如何布布局的?BordderLLayoout里面的的元素是是按照容容器的东东西南北北中进行行布局的的。65.网网格包布布局(GrridBBagLLayoout)里面的的元素是是如何布布局的?GriddBaggLayyoutt里面的的元素是是按照网网格进行行布局的的。不同同大小的的元素可可能会占占据网格格的多于于1行或一一列。因因此,行行数和列列数可以以有不同同的大小小。66.WWinddow和Fraame有什么么区别?Framme类继承承了Winndoww类,它它定义了了一个可可以有菜菜单栏的的主应用用窗口。67.裁裁剪(cllipppingg

52、)和重绘(reepaiintiing)有什么么联系?当窗口被被AWT重绘线线程进行行重绘的的时候,它它会把裁裁剪区域域设置成成需要重重绘的窗窗口的区区域。68.事事件监听听器接口口(evventt-liisteenerr innterrfacce)和事件件适配器器(evventt-addaptter)有什么么关系?事件监听听器接口口定义了了对特定定的事件件,事件件处理器器必须要要实现的的方法。事件适适配器给给事件监监听器接接口提供供了默认认的实现现。69.GGUI组件如如何来处处理它自自己的事事件?GUI组组件可以以处理它它自己的的事件,只只要它实实现相对对应的事事件监听听器接口口,并且且把自

53、己己作为事事件监听听器。70.JJavaa的布局局管理器器比传统统的窗口口系统有有哪些优优势?图样图Javaa使用布布局管理理器以一一种一致致的方式式在所有有的窗口口平台上上摆放组组件。因因为布局局管理器器不会和和组件的的绝对大大小和位位置相绑绑定,所所以他们们能够适适应跨窗窗口系统统的特定定平台的的不同。71.JJavaa的Swiing组件使使用了哪哪种 HYPERLINK xxkuqinx/book/324656.html设计计模式?Javaa中的Swiing组件使使用了MVCC(视图-模型-控制器)设计模模式。JDBCC72.什什么是JDBBC?JDBCC是允许许用户在在不同数数据库之之

54、间做选选择的一一个抽象象层。 HYPERLINK xxjavacodegeeksx/2014/03/java-8-friday-java-8-will-revolutionize-database-access.htmlJJDBCC允许开开发者用用JAVVA写数据据库应用用程序,而而不需要要关心底底层特定定数据库库的细节节。73.解解释下驱驱动(Drriveer)在JDBBC中的角角色。JDBCC驱动提提供了特特定厂商商对JDBBC AAPI接口类类的实现现,驱动动必须要要提供javva.ssql包下面面这些类类的实现现: HYPERLINK xdocs.oraclex/javase/7/do

55、cs/api/java/sql/Connection.htmlCoonneectiion, HYPERLINK xdocs.oraclex/javase/7/docs/api/java/sql/Statement.htmlStaatemmentt, HYPERLINK xdocs.oraclex/javase/7/docs/api/java/sql/PreparedStatement.htmlPreeparredSStattemeent, HYPERLINK xdocs.oraclex/javase/7/docs/api/java/sql/CallableStatement.htmlCalll

56、abbleSStattemeent, HYPERLINK xdocs.oraclex/javase/7/docs/api/java/sql/ResultSet.htmlRessulttSett和 HYPERLINK xdocs.oraclex/javase/7/docs/api/java/sql/Driver.htmlDriiverr。74.CClasss.fforNNamee()方法有有什么作作用?这个方法法用来载载入跟数数据库建建立连接接的驱动动。75.PPreppareedSttateemennt比Staatemmentt有什么么优势?PreppareedSttateemennts是预编

57、编译的,因因此,性性能会更更好。同同时,不不同的查查询参数数值,PreeparredSStattemeent可以重重用。76.什什么时候候使用CalllabbleSStattemeent?用来来准备CalllabbleSStattemeent的方法法是什么么?CalllablleSttateemennt用来执执行存储储过程。存储过过程是由由数据库库存储和和提供的的。存储储过程可可以接受受输入参参数,也也可以有有返回结结果。非非常鼓励励使用存存储过程程,因为为它提供供了安全全性和模模块化。准备一一个CalllabbleSStattemeent的方法法是:1CalllablleSttameent.

58、preeparreCaall();77.数数据库连连接池是是什么意意思?像打开关关闭数据据库连接接这种和和数据库库的交互互可能是是很费时时的,尤尤其是当当客户端端数量增增加的时时候,会会消耗大大量的资资源,成成本是非非常高的的。可以以在应用用服务器器启动的的时候建建立很多多个数据据库连接接并维护护在一个个池中。连接请请求由池池中的连连接提供供。在连连接使用用完毕以以后,把把连接归归还到池池中,以以用于满满足将来来更多的的请求。远程方法法调用(RMII)78.什什么是RMI?Javaa远程方方法调用用(Jaava RMII)是Javva AAPI对远程程过程调调用(RPPC)提供的的面向对对象的

59、等等价形式式,支持持直接传传输序列列化的Javva对象和和分布式式垃圾回回收。远远程方法法调用可可以看做做是激活活远程正正在运行行的对象象上的方方法的步步骤。RMI对调用用者是位位置透明明的,因因为调用用者感觉觉方法是是执行在在本地运运行的对对象上的的。看下下 HYPERLINK xxjavacodegeeksx/20一三/11/two-things-to-remember-when-using-java-rmi.htmlRMI的一些些注意事事项。79.RRMI体系结结构的基基本原则则是什么么?RMI体体系结构构是基于于一个非非常重要要的行为为定义和和行为实实现相分分离的原原则。RMI允许定定

60、义行为为的代码码和实现现行为的的代码相相分离,并并且运行行在不同同的JVM上。80.RRMI体系结结构分哪哪几层?RMI体体系结构构分以下下几层:存根和骨骨架层(Sttub andd Skkeleetonn laayerr):这一一层对程程序员是是透明的的,它主主要负责责拦截客客户端发发出的方方法调用用请求,然然后把请请求重定定向给远远程的RMI服务。远程引用用层(Reemotte RRefeerennce Layyer):RMI体系结结构的第第二层用用来解析析客户端端对服务务端远程程对象的的引用。这一层层解析并并管理客客户端对对服务端端远程对对象的引引用。连连接是点点到点的的。传输层(Tra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论