JAVA基础面试题2答案版.docx

上传人:b****8 文档编号:29210559 上传时间:2023-07-21 格式:DOCX 页数:26 大小:22.44KB
下载 相关 举报
JAVA基础面试题2答案版.docx_第1页
第1页 / 共26页
JAVA基础面试题2答案版.docx_第2页
第2页 / 共26页
JAVA基础面试题2答案版.docx_第3页
第3页 / 共26页
JAVA基础面试题2答案版.docx_第4页
第4页 / 共26页
JAVA基础面试题2答案版.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

JAVA基础面试题2答案版.docx

《JAVA基础面试题2答案版.docx》由会员分享,可在线阅读,更多相关《JAVA基础面试题2答案版.docx(26页珍藏版)》请在冰豆网上搜索。

JAVA基础面试题2答案版.docx

JAVA基础面试题2答案版

JAVA语言基础笔试题-2

Question1

Given:

11.classA{

12.publicvoidprocess(){System.out.print(“A“)}}

13.classBextendsA{

14.publicvoidprocess()throwsRuntimeException{

15.super.process();

16.if(true)thrownewRuntimeException();

17.System.out.print(“B”)

}}

18.publicstaticvoidmain(String[]args){

19.try{((A)newB()).process();}

20.catch(Exceptione){System.out.print(“Exception“)}

21.}

Whatistheresult?

A.Exception

B.AException

C.AExceptionB

D.ABException

E.Compilationfailsbecauseofanerrorinline14.

F.Compilationfailsbecauseofanerrorinline19.

答案:

B

考点:

方法的重写(重写方法异常抛出部分的理解)

多态

异常处理

说明:

子类重写父类方法,不能抛出比父类方法更多的异常,但此处子类重写方法声明抛出了RuntimeException,不算多抛,算是平抛,是可以的。

RuntimeException是Exception的子类,可以被Exception捕获。

Question2

Given:

11.staticclassA{

12.voidprocess()throwsException{thrownewException();}

13.}

14.staticclassBextendsA{

15.voidprocess(){System.out.println(“B”)}

16.}

17.publicstaticvoidmain(String[]args){

18.Aa=newB();

19.a.process();

20.}

Whatistheresult?

A.B

B.Thecoderunswithnooutput.

C.Anexceptionisthrownatruntime.

D.Compilationfailsbecauseofanerrorinline15.

E.Compilationfailsbecauseofanerrorinline18.

F.Compilationfailsbecauseofanerrorinline19.

答案:

F

考点:

方法的重写(重写方法异常抛出部分的理解)

多态

静态内部类以及其实例的创建

说明:

19.a.process();是多态调用,调用的应该是类B的process方法,这个方法只是允许抛出RuntimeException,所以19行在理论上不需要进行异常相关处理,系统会自动抛出该异常,但是多态只是在运行时,系统方能识别,在编译的时候,系统还是按照类A的process方法来进行验证,所以出现错误,因为类A抛出的是检查异常,必须显式被捕获或者抛出。

Question3

Given:

11.staticclassA{

12.voidprocess()throwsException{thrownewException();}

13.}

14.staticclassBextendsA{

15.voidprocess(){System.out.println(“B”);

16.}

17.publicstaticvoidmain(String[]args){

18.newB().process();

19.}

Whatistheresult?

A.B

B.Thecoderunswithnooutput.

C.Compilationfailsbecauseofanerrorinline12.

D.Compilationfailsbecauseofanerrorinline15.

E.Compilationfailsbecauseofanerrorinline18.

答案:

A

考点:

方法的重写(重写方法异常抛出部分的理解)

静态内部类以及其实例的创建

Question4

Given:

84.try{

85.ResourceConnectioncon=resourceFactory.getConnection();

86.Resultsr=con.query(“GETINFOFROMCUSTOMER”)

87.info=r.getData();

88.con.close();

89.}catch(ResourceExceptionre){

90.errorLog.write(re.getMessage());

91.}

92.returninfo;

WhichistrueifaResourceExceptionisthrownonline86?

A.Line92willnotexecute.

B.Theconnectionwillnotberetrievedinline85.

C.Theresourceconnectionwillnotbeclosedonline88.

D.Theenclosingmethodwillthrowanexceptiontoitscaller.

答案:

C

考点:

try..catch结构的理解

异常的捕获和处理

说明:

由于抛出的ResourceException,能够被catch块捕获(标配),所以异常在方法中就被处理掉了,不会抛出该方法。

根据try块操作上规定,一旦抛出异常,抛出异常语句后续部分的try块语句将不再运行。

Question5

ClicktheExhibitbutton.

1.publicclassA{

2.publicvoidmethod1(){

3.Bb=newB();

4.b.method2();

5.//morecodehere

6.}

7.}

1.publicclassB{

2.publicvoidmethod2(){

3.Cc=newC();

4.c.method3();

5.

//morecodehere

6.}

7.}

1.publicclassC{

2.publicvoidmethod3(){

3.//morecodehere

4.}

5.}

Given:

25.try{

26.Aa=newA();

27.a.method1();

28.}catch(Exceptione){

29.System.out.print(“anerroroccurred!

”)

30.}

WhichtwoaretrueifaNullPointerExceptionisthrownonline3of

classC?

(Choosetwo.)

A.Theapplicationwillcrash.

B.Thecodeonline29willbeexecuted.

C.Thecodeonline5ofclassAwillexecute.

D.Thecodeonline5ofclassBwillexecute.

E.Theexceptionwillbepropagatedbacktoline27.

答案:

BE

考点:

异常的抛出、捕获和处理

说明:

一般来说,异常的抛出,最终终将被处理,本方法不处理,则抛给主调方法,关键是要能抛的出去,因为NullpointerException是RuntimeException,所以一路没有阻碍,最终 propagatedback到达27行,Exception是所有异常的父类,所以该异常在这里被处理了,

 

Question6

ClicktheExhibitbutton.

1.publicclassA{

2.publicvoidmethod1(){

3.try{

4.Bb=newB();

5.b.method2();

6.//morecodehere

7.}catch(TestExceptionte){

8.thrownewRuntimeException(te);

9.}

6.}

7.}

1.publicclassB{

2.publicvoidmethod2()throwsTestException{

3.//morecodehere

4.}

5.}

1.publicclassTestExceptionextendsException{

2.}

Given:

31.publicvoidmethod(){

32.Aa=newA();

33.a.method1();

34.}

WhichistrueifaTestExceptionisthrownonline3ofclassB?

A.Line33mustbecalledwithinatryblock.

B.Theexceptionthrownbymethod1inclassAisnotrequiredtobecaught.

C.Themethoddeclaredonline31mustbedeclaredtothrowaRuntimeException.

D.Online5ofclassA,thecalltomethod2ofclassBdoesnotneedto

beplacedinatry/catchblock.

答案:

B

考点:

异常抛出、捕获和处理

说明:

第8行,把检查异常TestException封装在RuntimeException中抛出是可以,因为系统仍然认为你抛出的是一个运行时异常,任何方法都默认支持抛出运行时异常。

Question7

Given:

11.publicstaticvoidmain(String[]args){

12.try{

13.args=null;

14.args[0]=”test”;

15.System.out.println(args[0]);

16.}catch(Exceptionex){

17.System.out.println(“Exception”)

18.}catch(NullPointerExceptionnpe){

19.System.out.println(“NullPointerException”)

20.}

21.}

Whatistheresult?

A.test

B.Exception

C.Compilationfails.

D.NullPointerException

答案:

C

考点:

异常的捕获处理

说明:

Exception是能够捕获所有异常的”万金油”,其一般放在捕获块的最后一环,用来捕获所有的漏网之鱼,如果放在捕获块最前头,将导致后头的捕获块永远无法得到运行,最后产生编译失败。

Question8

Given:

11.staticvoidtest()throwsError{

12.if(true)thrownewAssertionError();

13.System.out.print(“test“)

14.}

15.publicstaticvoidmain(String[]args){

16.try{test();}

17.catch(Exceptionex){System.out.print(“exception“);

18.System.out.print(“end”)

19.}

Whatistheresult?

A.end

B.Compilationfails.

C.exceptionend

D.exceptiontestend

E.AThrowableisthrownbymain.

F.AnExceptionisthrownbymain.

 

答案:

E

考点:

Error和Exception的关系的理解

说明:

Error和Exception是兄弟类,其有一个共同的父类Throwable,所以Error也可以被抛出。

Exception捕获块无法捕获Error,所以这里Error会被抛出,由JVM做了最终处理。

 

Question9

Given:

11.staticvoidtest(){

12.try{

13.Stringx=null;

14.System.out.print(x.toString()+””);

15.}

16.finally{System.out.print(“finally”);

17.}

18.publicstaticvoidmain(String[]args){

19.try{test();}

20.catch(Exceptionex){System.out.print(“exception”);

21.}

Whatistheresult?

A.null

B.finally

C.nullfinally

D.Compilationfails.

E.finallyexception

答案:

E

考点:

try..catch..finally结构理解

说明:

允许存在try..finally结构,即使没有catch块的存在。

这里try块会产生一个经典的异常NullPointerException,其是RuntimeException,可以被默认抛出,但抛出之前,需要执行一次finally.

Question10

Given:

11.staticvoidtest()throwsRuntimeException{

12.try{

13.System.out.print(“test”)

14.thrownewRuntimeException();

15.}

16.catch(Exceptionex){System.out.print(“exception”);

17.}

18.publicstaticvoidmain(String[]args){

19.try{test();}

20.catch(RuntimeExceptionex){System.out.print(“runtime”);}

21.System.out.print(“end”)

22.}

Whatistheresult?

A.testend

B.Compilationfails.

C.testruntimeend

D.testexceptionend

E.AThrowableisthrownbymainatruntime.

答案:

D

考点:

异常的抛出、捕获和处理

说明:

本题test方法已经在内部把异常处理,该异常没有被抛给main方法。

 

Question11

Givenamethodthatmustensuethatitsparameterisnotnull:

11.publicvoidsomeMethod(Objectvalue){

12.//checkfornullvalue

....

20.System.out.println(value.getClass());

21.}

What,insertedatline12,istheappropriatewaytohandleanull

value?

A.assertvalue==null;

B.assertvaluenull,valueisnull!

C.if(value==null){

thrownewAssertionException(“valueisnull!

”)

D.if(value==null){

thrownewIllegalArgumentException(“valueisnull”)

答案:

D

考点:

常见异常类的使用

Question12

ClicktheExhibitbutton.

10.publicclassClassA{

11.publicvoidmethodA(){

12.ClassBclassB=newClassB();

13.classB.getValue();

14.}

15.}

And:

20.classClassB{

21.publicClassCclassC;

22.

23.publicStringgetValue(){

24.returnclassC.getValue();

25.}

26.}

And:

30.classClassC{

31.publicStringvalue;

32.

33.publicStringgetValue(){

34.value=“ClassB”;

35.returnvalue;

36.}

37.}

Given:

ClassAa=newClassA();

a.methodA();

Whatistheresult?

A.Compilationfails.

B.ClassCisdisplayed.

C.Thecoderunswithnooutput.

D.Anexceptionisthrownatruntime.

答案:

D

考点:

常见异常的识别 (NullpinterException)

说明:

第24行,对classC的getValue方法调用,由于classC的实例不存在,所以无法运行。

抛出异常,这种情况只有在运行的时候才知道,不会认为是编译错误。

Question13

Given:

10.publicclassFoo{

11.staticint[]a;

12.static{a[0]=2;}

13.publicstaticvoidmain(String[]args){}

14.}

Whichexceptionorerrorwillbethrownwhenaprogrammerattempts

torunthiscode?

A.java.lang.StackOverflowError

B.java.lang.IllegalStateException

C.java.lang.ExceptionlnlnitializerError

D.java.lang.ArraylndexOutOfBoundsException

答案:

C

考点:

静态块以及常见异常的识别

说明:

在静态块中,对a进行了调用,但a没有指向任何对象,所以抛出NullpinterException,但由于是发生在静态块中,所以系统最终抛出了ExceptionlnlnitializerError

Question14

Given:

10.publicclassClassA{

11.publicvoidcount(inti){

12.count(++i);

13.}

14.}

And:

20.ClassAa=newClassA();

21.a.count(3);

Whichexceptionorerrorshouldbethrownbythevirtualmachine?

A.StackOverflowError

B.NullPointerException

C.NumberFormatException

D.IllegalArgumentException

E.ExceptionlnlnitializerError

答案:

A

考点:

递归调用理解、堆栈的运作模式

说明:

此处count方法产生无穷递归调用,最终导致堆栈空间溢出。

Question15

Given:

1.publicclassBoxer1{

2.Integeri;

3.intx;

4.publicBoxer1(inty){

5.x=i+y;

6.System.out.println(x);

7.}

8.publicstaticvoidmain(String[]args){

9.newBoxer1(newInteger(4));

10.}

11.}

Whatistheresult?

A.Thevalue4isprintedatthecommandline

B.Compilationfailsbecauseofanerrorinline5.

C.Compi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1