八维教育IT培训学校

八维教育IT培训学校七大校区

首页 > 新闻资讯 > >

Java 基础高频面试题

发布时间:2023-02-14 16:39:37 点击:

  网上的 Java 基础面试题文章有非常多,但是大部分都比较老了。很多题目早已不是当前的热门题目,没有必要在这些题目上花太多时间。很多答案放现在已经不准确,可能会误导新人,今天八维教育整理了一些较为新版的Java 基础高频面试题,希望能够帮助正在找工作的同学们!

  Java面试题

  1、面向对象的三个基本特征?

  面向对象的三个基本特征是:封装、继承和多态。

  继承:让某个类型的对象获得另一个类型的对象的属性的方法。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

  封装:隐藏部分对象的属性和实现细节,对数据的访问只能通过外公开的接口。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。

  多态:对于同一个行为,不同的子类对象具有不同的表现形式。多态存在的3个条件:1)继承;2)重写;3)父类引用指向子类对象。

  2、&和&&的区别?

  &&:逻辑与运算符。当运算符左右两边的表达式都为 true,才返回 true。同时具有短路性,如果第一个表达式为 false,则直接返回 false。

  &:逻辑与运算符、按位与运算符。

  按位与运算符:用于二进制的计算,只有对应的两个二进位均为1时,结果位才为1 ,否则为0。

  逻辑与运算符:& 在用于逻辑与时,和 && 的区别是不具有短路性。所在通常使用逻辑与运算符都会使用 &&,而 & 更多的适用于位运算。

  3、String 是 Java 基本数据类型吗?

  答:不是。Java 中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type),剩下的都是引用类型(reference type)。

  基本数据类型:数据直接存储在栈上。引用数据类型区别:数据存储在堆上,栈上只存储引用地址。

  4、String 类可以继承吗?

  不行。String 类使用 final 修饰,无法被继承。

  5、String和StringBuilder、StringBuffer的区别?

  String:String 的值被创建后不能修改,任何对 String 的修改都会引发新的 String 对象的生成。

  StringBuffer:跟 String 类似,但是值可以被修改,使用 synchronized 来保证线程安全。

  StringBuilder:StringBuffer 的非线程安全版本,没有使用 synchronized,具有更高的性能,推荐优先使用。

  6、两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?

  不对。hashCode() 和 equals() 之间的关系如下:

  当有 a。equals(b) == true 时,则 a。hashCode() == b。hashCode() 必然成立,

  反过来,当 a。hashCode() == b。hashCode() 时,a。equals(b) 不一定为 true。

  7、什么是反射?

  反射是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能称为反射机制。

  8、深拷贝和浅拷贝区别是什么?

  数据分为基本数据类型和引用数据类型。基本数据类型:数据直接存储在栈中;引用数据类型:存储在栈中的是对象的引用地址,真实的对象数据存放在堆内存里。

  浅拷贝:对于基础数据类型:直接复制数据值;对于引用数据类型:只是复制了对象的引用地址,新旧对象指向同一个内存地址,修改其中一个对象的值,另一个对象的值随之改变。

  深拷贝:对于基础数据类型:直接复制数据值;对于引用数据类型:开辟新的内存空间,在新的内存空间里复制一个一模一样的对象,新老对象不共享内存,修改其中一个对象的值,不会影响另一个对象。深拷贝相比于浅拷贝速度较慢并且花销较大。