Java最常见面试真题

时间:2016-12-20 编辑:蔡娟 手机版

  Java最常见面试真题你都看过了吗?面试之前看看真题会对您的求职更有利哦。更多内容请关注应届毕业生考试网!

  面向对象编程(OOP)

  1、面向对象的特征有哪些方面?

  封装,继承,多态和抽象。下面我们会逐个分析这些特性。

  封装 给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。

  下面列出了使用封装的一些好处:

  通过隐藏对象的属性来保护对象内部的状态。

  提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。

  禁止对象之间的不良交互提高模块化。

  多态 是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。

  继承 给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。

  抽象 是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java支持创建只暴漏接口而不包含方法实现的抽象的类。这种抽象技术的主要目的是把类的行为和实现细节分离开。

  抽象和封装的不同点

  抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。

  常见的Java问题

  1.访问修饰符public,private,protected以及不写(默认)时的区别?

  修饰符 当前类 同 包 子 类 其它包

  public √ √ √ √

  protected √ √ √ ×

  private √ × × ×

  default √ √ × ×

  类的成员不写访问修饰时默认为default。

  默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符可以是以上四种。

  2.JDK和JRE的区别是什么?

  Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。

  3.Java支持的数据类型有哪些?什么是自动拆装箱?

  Java语言为每个原始类型提供了包装类型:

  - 原始类型: boolean,char,byte,short,int,long,float,double

  - 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

  自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。

  class AutoUnboxingTest {

  public static void main(String[] args) {

  Integer a = new Integer(4);

  Integer b = 4;                  // 将4自动装箱成Integer类型

  int c = 4;

  System.out.println(a == b);     // false 两个引用没有引用同一对象

  System.out.println(a == c);     // true a自动拆箱成int类型再和c比较

  }

  }

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  4.阐述final、finally、finalize的区别。

  - final:修饰符(关键字)有三种用法:如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承,因此它和abstract是反义词。将变量声明为final,可以保证它们在使用中不被改变,被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改。被声明为final的方法也同样只能使用,不能在子类中被重写。

  - finally:通常放在try…catch…的后面构造总是执行代码块,这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都能执行,可以将释放外部资源的代码写在finally块中。

  - finalize:Object类中定义的方法,Java中允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的,通过重写finalize()方法可以整理系统资源或者执行其他清理工作。

  5.Java中是否可以覆盖(override)一个private或者是static的方法?

  static 关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

  Java中static方法不能被覆盖,static修饰的方法是静态绑定的,而方法覆盖是为了实现多态,是动态绑定,所以static修饰的方法不需要被覆盖。

  无法重写被private修饰的方法,因为被private修饰的父类方法在子类中是不可见的。

  6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

  Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

本文已影响
Java最常见面试真题相关推荐