Java后端开发面试超高频基础题
总结Java基础的面试高频题,以下十一道几乎在面试中都会有出现的面试题。简单总结了些答案,想要面试后端的小伙伴是一定要滚瓜烂熟的。现在是ai时代,有需要准备面试的小伙伴也可以用ai优化一下答案进行系统性复习。
1.int 和 Integer有什么区别?
答:Integer是int类型的封装类
int是基本数据类型,不是对象。
Integer是引用类型,是对象。
2.为什么要拆箱和装箱?
简化基本类型与对象类型的转换,Java集合(如 ArrayList 、 HashMap )只能存储对象,无法直接容纳基本类型。装箱机制让基本类型可自动转换为包装类对象。
包装类可为 null ,而基本数据类型不能是null。自动装箱/拆箱在需要处理可能为 null 的值时更灵活,例如数据库查询结果可能为 null ,用包装类避免 NullPointerException 。(空指针异常
3.==和equals()的区别?
对于==,如果两边是数值,表示判断数值是否相等。如果两边是引用类型,表示对象是否相同。
equals(),判断两个对象的内容是否相同。
String s1 = "hello";
String s2 = new String("hello");
String s3 = new String("hello");
String s4 = "hello";
System.out.println(s1 == s2);//结果false
System.out.println(s3 == s2);//结果false
System.out.println(s1 == s4);//结果true
System.out.println(s1.equals(s2));//结果true
System.out.println(s2.equals(s3));//结果true
4.面向对象的三大特征?java是怎么体现的?
封装:
一个类就是一个封装体,封装了属性和方法,封装的好处就是隐藏实现细节。
继承:
java是单根继承,所有类都直接间接继承于Object类,继承的好处就是提高了代码的可重用性。
多态:
同一种行为在不同的对象上有不同的表现形式。
前提是:
1.有继承关系
2.重写
3.父类的引用指向子类对象
5.java中的指针和C语言的指针有什么区别?
引用的是更安全的指针
C的没用好很容易内存泄漏,java中引用类型不允许++运算,得不到真实得内存地址。
C的可以指向任意的内存空间,得到的是真实的内存地址。
6.String与StringBuffer,StringBuilder的区别?
少量数据用String,StringBuilder线程不安全的,单线程字符串缓冲区操作大量数据。
StringBuffer线程安全的,多线程字符串缓冲区操作大量数据。
7.final/finalize/finally区别?
final关键字:
是关键字,可以修饰类,修饰变量。
如果修饰类表示类不能被继承,比如:String类。
如果修饰基本类型,表示值不能改变;如果修饰引用类型,表示对象不能改变。
finalize:
Object类中的基本方法,销毁对象的时候自动调用。
finally:
结合try...catch...finally使用,通常完成资源的释放。
8.抽象类和接口的区别?
抽象类:xxx is a xxx 的关系(本质)
接口:xxx has a xxx的关系(功能)
类似于智能手机类设计?
智能手机是手机,手机类是抽象类。
智能手机有哪些功能?设计智能手机接口。
上网、拍照、安装OS
关键区别:
-
抽象类强调"是什么",接口强调"能做什么"
-
抽象类可以有构造方法,接口不能
-
抽象类可以有各种成员变量,接口只能有常量
-
一个类只能继承一个抽象类,但可以实现多个接口
-
抽象类的方法可以有具体实现,接口方法默认都是抽象的(Java 8前)
9.重写和重载的区别?
Overload:方法重载,所谓方法重载是指方面的名字相同,方法的参数的个数、类型、次序不同。
Override:方法重写,子类重写了从父类继承过来的方法。
Overload一般在同一个类中,没有继承,没有重写。
Override一般有继承,有重写。|
10.sleep()和wait()的区别?
sleep()交出cpu时间片,休眠指定时间后,重新进入可运行状态,wait()释放CPU资源,进入等待队列后积极地等待被唤醒。
sleep()不会释放对象的锁,wait()释放对象的锁。
sleep()属于Thread类的静态方法,wait()属于Object类的成员方法。
sleep()可以在任何地方调用,wait()只能在同步代码块中调用。
11.HashMap和HashTable的区别?
Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;
Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的,但效率比Hashtable高。
hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
hashMap允许空键值,而hashTable不允许。
更多推荐



所有评论(0)