科多大数据培训
全国24小时免费热线
15328019568
联系QQ
3048661160
开班时间
当前位置:首页 > 学习资讯 > 大数据内容 >

大数据培训资讯:JAVA面向对象面试真题

大数据的发展势头是蒸蒸日上,不少小伙伴想要转行大数据却不知道自己到底够不够格。JAVA作为大数据的基础技能,是转行大数据的必要条件。有JAVA开发经验的人可以更快地跳转大数据

大数据的发展势头是蒸蒸日上,不少小伙伴想要转行大数据却不知道自己到底够不够格。JAVA作为大数据的基础技能,是转行大数据的必要条件。有JAVA开发经验的人可以更快地跳转大数据发展方向。所以今天特地为大家带来了大数据的面试真题——JAVA基础面向对象类试题。快来检测一下你的JAVA学的够不够扎实。

试题共分四个板块,满分100

一、填空题

(共25分,每空1分)

1、Java中所有的错误都继承自______类;在该类的子类中, _______类表示严重的底层错误,对于这类错误一般处理的方式是_______;_______类表示例外、异常。

2、异常类 java.rmi.AlreadyBoundException,从分类上说,该类属于______ 异常,从处理方式上说,对这种异常_________________; 

 异常类java.util.regex.PatternSyntaxException,从分类上说,该类属于_______异常,从处理方式上说,对这种异常__________________。

3、

abstract class Animal{  public abstract void eat(); 

     }  interface Pet{  void play(); 

     } 

     class Dog extends Animal implements Pet{ public void eat(){ System.out.println(“Dog eat Bones”); 

     } 

     public void play(){ 

     System.out.println(“Play with Dog”);  } } 

     class Cat extends Animal implements Pet{ public void eat(){ 

     System.out.println(“Cat eat fish”); 

     } 

     public void play(){ 

     System.out.println(“Play with Cat”);  } } 

     class Wolf extends Animal{  publicvoid eat(){ 

     System.out.println(“Wolf eat meat”);  } } 

     public class TestMain{  publicstatic void main(String args[]){  Animalas[] = new Animal[3];  as[0] = newDog();  as[1] = new Cat(); 

     as[2] = new Wolf(); 

     //调用as 数组中所有动物的eat 方法 

     //1 

     //调用as 数组中所有宠物的play方法 

     //2 

     } 

     } 

     //1 处应该填入的代码为:__________________。

     //2 处应该填入的代码为:__________________。

4、要把一个int 类型的变量转换为Integer 类型,需要调用_______类的________ 方法;要把Integer 类型转为int 类型,需要调用_______类的_________方法;要把String 类型转为Integer 类型,需要调用______类的_______方法;要把 Integer 转为String 类型,需要调用________类的________方法;要把int 类型转化为String 类型,需要______________________;要把String 类型转化为int 类型,需要调用__________类的__________方法。

5、在Object 类中,定义的finalize方法在______时调用, toString()方法返回值表示_________,equals 方法的作用为________,getClass 方法作用为__________ 。

 

 

答案解析:

1、Throwable;Error;不处理; Exception

2、已检查;必须要处理;可处理可不处理

3、//1处填入的代码为for (int i = 0; i<as.length; i++){   as[i].eat(); } 

//2处填入的代码为for (int i = 0; i<as.length; i++){   if (as[i] instanceof Pet){    Pet p = (Pet) as[i];    p.play(); 

4、Integer;构造;Integer;intValue;Integer;构造;Integer;toString;利用”” + int值;Integer;parseInt

5、对象被垃圾回收;对象的字符串表现形式;判断两个对象值是否相同;获得对象的实际类型。

 

二、单项选择题

(共16分,每题2分)

1、有下面代码

     interface IA{ void ma();

     }

     class MyClass implements IA{ public void ma(){} public StringtoString(){ return “MyClass toString()”;

     }

     }

     public class TestMyClass{ public static void main(String args[]){

     IA ia = new MyClass();

     System.out.println(ia);

     }

     }

选择正确答案:

A. 编译不通过,因为IA 接口中没有定义toString 方法 

B. 编译通过,输出:“IA@地址” 

C. 编译通过,输出:“MyClass toString()”  

2、有如下代码

     public class TestTryCatch{  publicstatic void main(String args[]){ System.out.println( ma() );

           }  public static int ma(){  int n; try{  n = 10/0;

                }catch(Exception e){

               }  return n;

         }

     }

选择正确答案:   

A. 编译不通过

B. 编译通过,输出-1

C. 编译通过,输出 0 

3、有如下代码 

     importjava.io.*;  import java.sql.*;  public class TestTryCatch{  public static void main(String args[]){  try{ ma(10); 

                    System.out.println(“No Exception”); 

              } 

           catch(EOFException ex1){ 

                  System.out.println(“ex1”); 

          } 

         catch(IOException ex2) { 

               System.out.println(“ex2”); 

         } 

        catch(SQLException ex3) { 

               System.out.println(“ex3”); 

         } 

     } 

     public static void ma(int n) throws Exception{  if (n == 1){ 

                                            throw new IOException(); 

              }else if (n == 2){  throw new EOFException(); 

              }else if (n == 3) {  throw new SQLException(); 

            } 

        } 

     } 

选择正确答案:

A.编译不通过

B. 编译通过,输出 No Exception

C. 编译通过,输出 ex3

4、有以下代码 

     public class TestException{ public static void main(String args[]){ try{ 

                        System.out.println(“main1”);  ma(); 

                       System.out.println(“main2”); 

                  }catch(Exception e){ 

                       System.out.println(“In Catch”); 

                 } 

        } 

        public static void ma(){ 

              System.out.println(“ma1”);  throw new NullPointerException();  System.out.println(“ma2”); 

        } 

     } 

选择正确答案:

A. 编译出错

B. 编译正常,输出main1 ma1 In Catch  

C. 编译正常,运行时出错

5、有如下代码

     //MyClass.java

     package corejava.chp6;

     public class MyClass{

     int value;

     }

     

     //MySubClass.java

     package corejava.temp;

     import corejava.chp6.MyClass;

     public class MySubClass extends MyClass{

     public MySubClass(int value){

     this.value = value;

     }

     }

选择正确答案:

A. 编译通过 

B. 编译不通过,应把第12 行改成super.value = value;

C. 编译不通过,可以为MySubClass增加一个value 属性

6、有如下代码

     class Super{

     public void m(){

     foo();

     }

     public void foo(){

     System.out.println("foo() in Super");

     }

     }

     class Sub extends Super{ public void foo(){

     System.out.println("foo() in Sub");

     }

     }

     public class TestSuperSub{ public static void main(String args[]){ Supers = new Sub();

     s.m();

     }

     }

选择正确答案

A. 程序编译不通过 

B. 编译通过,输出foo()in Super

C. 编译通过,输出foo() in Sub

7.有下面代码

     interface IA{ void ma();

     }

     class MyClass implements IA{ public void ma(){} public StringtoString(){ return “MyClass toString()”;

     }

     }

     public class TestMyClass{ public static void main(String args[]){

     IA ia = new MyClass();

     System.out.println(ia);

     }

     }

选择正确答案:

A. 编译不通过,因为IA 接口中没有定义toString 方法 

B. 编译通过,输出:“IA@地址” 

C. 编译通过,输出:“MyClass toString()”  

8、有如下代码 

     public class TestTryAndTry { public static void main(String args[]){ System.out.println(ma()); 

           }  public static int ma(){  try{ return 100; 

                  }finally{  try{ return 200; 

                       }finally{  return 500; 

                      }  return 1000; 

                } 

          } 

     } 

选择正确答案:

A. 编译错误  

B. 输出 100

C. 输出 1000  

 

 

答案解析:

1、C ,虽然 IA 接口中没有定义toString 方法,但是由于 toString 方法是所有对象都有的方法,因此依然可以对 IA 类型的引用调用toString 方法,调用的是子类覆盖以后的方法。

2、A,当程序异常时,返回值为-1,而当程序正常时,返回值为n。问题在于,n 是一个局部变量,由于try 块中的代码可能不会被执行,因此在return 语句之前没有对n 的赋值语句,这样就破坏了局部变量“先赋值,后使用”的要求,因此编译不通过。

3、A,由于ma 方法声明抛出Exception,因此在main 方法中的try 块必须有对Exception类型处理的子句。

4、A,ma 方法中第二个输出语句,由于上一个语句是throw 语句,因此第二个输出语句永远都执行不到,因此编译出错。

5、C

6、C

7、C,虽然 IA 接口中没有定义toString 方法,但是由于 toString 方法是所有对象都有的方法,因此依然可以对 IA 类型的引用调用 toString 方法,调用的是子类覆盖以后的方法。

8、A,这个题目的难点在于finally 语句中还套着一个try-finally结构。

对于外层的try-finally 结构而言,finally语句一定要执行,因此返回值一定是finally语句块中的某个值;对于内层的try-finally 结构而言,finally语句一定要执行,因此返回值一定是500;而在return 500 后面的语句,一定不会被执行,因此编译不通过”。

 

三、多项选择题

(共24分,每题4分)

1、有如下代码 

     interface IA {  void m1();  public void m2();  public abstract void m3(); 

     } 

     abstract class Super{}  class Sub1extends Super{}  class Sub2 extendsSuper{}  public class TestInterface{  public static void main(String args[]){ 

     Super sup = new Sub1(); 

     Sub1 sub1 = (Sub1)sup; 

     //1 

     } 

     } 

在//1 处可以编译(不考虑运行时是否会产生异常)通过的代码为:

A.  Sub2 sub2 = (Sub2) sup; 

B. Sub2 sub2 = (Sub2) sub1; 

C.  IA ia = (IA) sup;  

D.  IA ia = (IA) sub1;   

2、有如下代码

     class Animal{} class Dog extends Animal{} class Cat extends Animal{}public class TestAnimal{ public static void main(String args[]){

     //主方法代码省略

     }

     public static Animal getAnimal(){ //1

     }

     }

问:下列几个选项中,有哪几个放在//1 位置能够编译通过?

A. return null;

B. return new Animal();

C. return new Dog();

D. return new Cat();  

3、有如下代码

     class Super{

     int method(){return 0;}

     }

     class Sub extends Super{ // 1

     }

在//1 处,能编译通过的代码为

A. public int method(){return 0;} 

B. void method(){}

C. void method(int n){}  

4、有如下代码

     class Super{

     private void method(){}

     }

     class Sub extends Super{ //1

     }

在//1 处,能编译通过的代码为:

A. public int method(){return 0;} 

B. void method(){}

C. void method(int n){} 

D. private voidmethod(){} 

5、Java 中的内部类包括

A. 成员内部类

B. 静态内部类

C. 局部内部类

D. 匿名内部类

E. 公开内部类

F. 抽象内部类

6、有下面代码

     class OuterClass{

     private int value1 = 100; private static int value2 = 200; public voidmethod(int value3){ final int value4 = 400; class InnerClass{ public voidprint(){ //1

     }

     }

     }

     }

问:下面哪些代码放在//1 处能够编译通过?

A. System.out.println(value1);

B. System.out.println(value2);

C. System.out.println(value3); 

D. System.out.println(value4); 

 

 

答案解析:

1、ACD
2、ABCD,该方法的返回值类型是Animal类型,选项A是引用数据类型的默认值,选项B是Animal类型的对象,能够跟返回值类型相互兼容。选项C和选项D 都是子类类型的对象,根据多态语法,可以跟父类类型Animal相互兼容。

3、AC,方法覆盖的条件:

           a、在继承关系中

           b、方法的三要素必须相同

           c、权限等宽于父类

           d、子类方法跑出的异常不能大于父类

4、ABCD,私有的方法不能被子类继承,所以也不能被子类覆盖。

5、ABCD

6、ABD

 

四、问答题

(共35分,每题7分)

1、写出下面代码执行的结果 interface IA{ void ma();

     } class MyClass { public static void method(IA ia){System.out.println(“in method”); ia.ma();

     }

     }

     public class TestInnerClass{ public static void main(String args[]){

     MyClass.method(new IA(){ public void ma(){

     System.out.println(“ma in anonymous inner class”); }});

     class MyMaClass implements IA{ public void ma(){

     System.out.println(“ma in local inner class”); }

     }

     MyClass.method(new MyMaClass());

     }

     } 

2、写出下面代码输出结果

     public class TestString{ public static void main(String args[]){

     String str1 = “Hello”;

     String str2 = “Hello”;

     System.out.println(str1 == str2); System.out.println(str1.equals(str2));str1 = new String(“Hello”);

     str2 = new String(“Hello”);

     System.out.println(str1 == str2);

     System.out.println(str1.equals(str2)); }

     } 

3、写出下面程序运行的结果

     class Animal{} class Dog extends Animal{} public class TestGetClass{

     public static void main(String args[]){

     Animal a1 = new Dog();

     Animal a2 = new Animal();

     System.out.println(a1 instanceof Animal);

      System.out.println(a1.getClass() ==a2.getClass()); } 

4、写出Object 类中toString 方法的签名,以及equals 方法的签名

5、有以下代码

     class Super{ } class Sub extends Super{ public Sub(){} public Sub(Stringstr){

     super(str);

     }

     }

该程序应该如何修改才能编译通过?

 

 

答案解析:

1、in method

     ma in anonymous inner class

     in method

     ma in local inner class

2、true true false true

当直接使用”Hello”这样的字面值给一个字符串赋值时,会使用字符串常量池。在这个例子中,由于str1和str2都只用了字面值直接赋值,因此他们指向的是字符串常量池中同一个”Hello”对象。此时,str1和str2不论用equals比较还是用==比较,结果都为true。

当使用new关键字时,则不会使用常量池,而是直接创建一个新的字符串对象。因此,当str1和str2都指向用new创建出的新对象时,虽然对象值相同,但是两个引用并不指向同一个对象。因此,用equals关键字比较时,返回值为true,而用==比较返回值为false。

3、true false

第一个比较,判断的是a1引用所指向的对象,是否是Animal类型或者其子类。由于a1指向的对象是Dog类型,是Animal类型的子类,因此比较结果为true 

第二个比较,比较的是a1所指向的对象的实际类型,和a2所指向对象的实际类型是否相同。由于a1所指向的对象为Dog类型,而a2所指向的对象为Animal类型,因此这个比较返回值为false。

4、toString方法: public String toString() 

      equals方法: public boolean equals(Object obj) 

   注意:equals方法参数为Object类型

5、Super类中添加参数为String的构造函数

              class Super{

              String str;

              Super(){}

              Super(String str){

                    this.str=str;

              }

              }

              class Sub extends Super{

              public Sub(){

              }

              public Sub(String str){

                    super(str);

              }

              }

 

第一份面试真题试卷做完了,你能得到多少分呢?如果JAVA基础还没有搭建好,不要太着急转行大数据哦。

 
最新资讯更多+
内容推荐更多+
在线课堂
猜你喜欢