2023年JAVA认证面试试题_第1页
2023年JAVA认证面试试题_第2页
2023年JAVA认证面试试题_第3页
2023年JAVA认证面试试题_第4页
2023年JAVA认证面试试题_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

2023年JAVA认证面试试题

1)Java中什么是Exception?

这个问题常常在第一次问有关特别的时候或者是面试菜鸟的时候问。我从来没见过面高级或者资深工程师的

时候有人问这玩意,但是对于菜鸟,是很情愿问这个的。简洁来说,特别是Java传达给你的系统和程序错误的方

式。在java中,特别功能是通过实现比方Throwable,Exception,RuntimeException之类的类,然后还有一

些处理特别时候的关键字,比方throw,throws,try,catch,finally之类的。全部的特别都是通过Throwable

衍生出来的。Throwable把错误进一步划分为java.lang.Exception和java.lang.Error.java.lang.Error用

来处理系统错误,例如java.lang.StackOverFlowError或者Java.lang.OutOfMemoryError之类的。然后

Exception用来处理程序错误,恳求的资源不行用等等。

2)Java中的检查型特别和非检查型特别有什么区分?

这又是一个特别流行的Java特别面试题,会消失在各种层次的Java面试中。检查型特别和非检查型特别的

主要区分在于其处理方式。检查型特别需要使用try,catch和finally关键字在编译期进展处理,否则会消失编译

器会报错。对于非检查型特别则不需要这样做。Java中全部继承自java.lang.Exception类的特别都是检查型

特别,全部继承自RuntimeException的特别都被称为非检查型特别。你也可以查看下一篇文章来了解

更多关于检查型特别和非检查型特别之间的区分。

3)Java中的NullPointerException和ArrayIndexOutOfBoundException之间有什么一样之处?

在Java特别面试中这并不是一个很流行的问题,但会消失在不同层次的初学者面试中,用来测试应聘者对检查

型特别和非检查型特别的概念是否熟识。顺便说一下,该题的答案是,这两个特别都是非检查型特别,都继承自RuntimeException。该问题可能会引出另一个问题,即Java和C的数组有什么不同之处,由于C里面的数组是没有

大小限制的,肯定不会抛出ArrayIndexOutOfBoundException。

4)在Java特别处理的过程中,你遵循的那些最好的实践是什么?

这个问题在面试技术经理是特别常见的一个问题。由于特别处理在工程设计中是特别关键的,所以精通特别处

理是非常必要的。特别处理有许多最正确实践,下面列举集中,它们提高你代码的强健性和敏捷性:

1)调用方法的时候返回布尔值来代替返回null,这样可以NullPointerException。由于空指针是java特别里最恶

心的`特别。

2)catch块里别不写代码。空catch块是特别处理里的错误大事,由于它只是捕获了特别,却没有任何处理或者

提示。通常你起码要打印出特别信息,固然你最好依据需求对特别信息进展处理。

3)能抛受控特别(checkedException)就尽量不抛受非控特别(checkedException)。通过去掉重复的特别处

理代码,可以提高代码的可读性。

4)肯定不要让你的数据库相关特别显示到客户端。由于绝大多数数据库和SQLException特别都是受控特别,在Java中,

你应当在DAO层把特别信息处理,然后返回处理过的能让用户看懂并依据特别提示信息改正操作的特别信息。

5)在Java中,肯定要在数据库连接,数据库查询,流处理后,在finally块中调用close()方法。

5)既然我们可以用RuntimeException来处理错误,那么你认为为什么Java中还存在检查型特别?

这是一个有争议的问题,在答复该问题时你应当当心。虽然他们确定情愿听到你的观点,但其实他们最感兴

趣的还是有说服力的理由。我认为其中一个理由是,存在检查型特别是一个设计上的打算,受到了诸如C++等比

Java更早的编程语言设计阅历的影响。绝大多数检查型特别位于java.io包内,这是符合情理的,由于在你恳求了

不存在的系统资源的时候,一段强壮的程序必需能够优雅的处理这种状况。通过把IOException声明为检查型异

常,Java确保了你能够优雅的对特别进展处理。另一个可能的理由是,可以使用catch或finally来确保数量受限

的系统资源(比方文件描述符)在你使用后尽早得到释放。

6)throw和throws这两个关键字在java中有什么不同?

一个java初学者应当把握的面试问题。throw和throws乍看起来是很相像的尤其是在你还是一个java初学者的时

候。尽管他们看起来相像,都是在处理特别时候使用到的。但在代码里的使用方法和用到的地方是不同的。throws

总是消失在一个函数头中,用来标明该成员函数可能抛出的各种特别,你也可以申明未检查的特别,但这不是编译

器强制的。假如方法抛出了特别那么调用这个方法的时候就需要将这个特别处理。另一个关键字throw是用来

抛出任意特别的,根据语法你可以抛出任意Throwable(i.e.Throwable或任何Throwable的衍生类),throw

可以中断程序运行,因此可以用来代替return.最常见的例子是用throw在一个空方法中需要return的地方抛出UnSupportedOperationException代码如下:

1privatestaticvoidshow(){

2thrownewUnsupportedOperationException(“Notyetimplemented”);

3}

7)什么是“特别链”?

“特别链”是Java中特别流行的特别处理概念,是指在进展一个特别处理时抛出了另外一个特别,由此产生

了一个特别链条。该技术大多用于将“受检查特别”(checkedexception)封装成为“非受检查特别”

(uncheckedexception)或者RuntimeException。顺便说一下,假如由于由于特别你打算抛出一个新的特别,

你肯定要包含原有的特别,这样,处理程序才可以通过getCause()和initCause()方法来访问特别最终的根源。

8)你曾经自定义实现过特别吗?怎么写的?

很明显,我们绝大多数都写过自定义或者业务特别,像AccountNotFoundException。在面试过程中询问

这个Java特别问题的主要缘由是去发觉你如何使用这个特性的。这可以更精确和精巧的去处理特别,固然这也跟

你选择checked还是uncheckedexception息息相关。通过为每一个特定的状况创立一个特定的特别,你就为

调用者更好的处理特别供应了更好的选择。相比通用特别(generalexception),我更倾向更为准确的特别。大

量的创立自定义特别会增加工程class的个数,因此,在自定义特别和通用特别之间维持一个平衡是胜利的关键。

9)JDK7中对特别处理做了什么转变?

这是最近新出的Java特别处理的面试题。JDK7中对错误(Error)和特别(Exception)处理主要新增加了2个特性,

一是在一个catch块中可以出来多个特别,就像原来用多个catch块一样。另一个是自动化资源治理(ARM),也称为

try-with-resource块。这2个特性都可以在处理特别时削减代码量,同时提高代码的可读性。对于这些特性了解,

不仅帮忙开发者写出更好的特别处理的代码,也让你在面试中显的更突出。我推举大家读一下Java7攻略,这样

可以更深入的了解这2个特别有用的特性。

10)你遇到过OutOfMemoryError错误嘛?你是怎么搞定的?

这个面试题会在面试高级程序员的时候用,面试官想知道你是怎么处理这个危急的OutOfMemoryError错误的。

必需成认的是,不管你做什么工程,你都会遇到这个问题。所以你要是说没遇到过,面试官确定不会买账。要是

你对这个问题不熟识,甚至就是没遇到过,而你又有3、4年的Java阅历了,那么预备好处理这个问题吧。在答复

这个问题的同时,你也可以借机向面试秀一下你处理内存泄露、调优和调试方面的牛逼技能。我发觉把握这些技

术的人都能给面试官留下深刻的印象。

11)假如执行finally代码块之前方法返回了结果,或者JVM退出了,finally块中的代码还会执行吗?

这个问题也可以换个方式问:“假如在try或者finally的代码块中调用了System.exit(),结果会是怎样”。

了解finally块是怎么执行的,即使是try里面已经使用了return返回结果的状况,对了解Java的特别处理都特别

有价值。只有在try里面是有System.exit(0)来退出JVM的状况下finally块中的代码才不会执行。

12)Java中final,finalize,finally关键字的区分

这是一个经典的Java面试题了。我的一个朋友为MorganStanley招电信方面的核心Java开发人员的时候就

问过这个问题。final和finally是Java的关键字,而finalize则是方法。final关键字在创立不行变的类的时候

特别有用,只是声明这个类是final的。而finalize()方法则是垃圾回收器在回收一个对象前调用,但也Java规

范里面没有保证这个方法肯定会被调用。finally关键字是唯一一个和这篇文章争论到的特别处理相关的关键字。

在你的产品代码中,在关闭连接和资源文件的是时候都必需要用到finally块。

13)下面的代码都有哪些错误:

01publicstaticvoidstart()throwsIOException,RuntimeException{

02

03thrownewRuntimeException(“NotabletoStart”);

04}

05

06publicstaticvoidmain(Stringargs[]){

07try{

08start();

09}catch(Exceptionex){

10ex.printStackTrace();

11}catch(RuntimeExceptionre){

12re.printStackTrace();

13}

14}

这段代码会在捕获特别代码块的RuntimeException类型变量“re”里抛出编译特别错误。由于Exception是RuntimeException的超类,在start方法中全部的RuntimeException会被第一个捕获特别块捕获,这样就无法到

达其次个捕获块,这就是抛出“exceptionjava.lang.RuntimeExceptionhasalreadybeencaught”的编译错误缘由。

14)下面的Java代码都有哪些错误:

01publicclassSuperClass{

02publicvoidstart()throwsIOException{

03thrownewIOException(“Notabletoopenfile”);

04}

05}

06

07publicclassSubClassextendsSuperClass{

08publicvoidstart()throwsException{

09thrownewException(“Notabletostart”);

10}

11}

这段代码编译器将对子类掩盖start方法产生不满。由于每个Java中方法的掩盖是有规章的,一个掩盖的方法

不能抛出的特别比原方法继承关系高。由于这里的start方法在超类中抛出了IOException,全部在子类中的start

方法只能抛出要么是IOExcepition或是其子类,但不能是其超类,如Exception。

15)下面的Java特别代码有什么错误:

01publicstaticvoidstart(){

02Syst

温馨提示

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

评论

0/150

提交评论