苏木三少
错的不是你,而是这个世界。

JAVA面试总结

JAVA基础面试

一、Final、Finally、Finalize的区别

(1)、final修饰类(不能被继承),修饰方法(不能被重写),修饰变量(不能重新赋值),在我们平时使用的api中我们定义的功能不希望被改变,且为了安全性,健壮性,稳定性不可控,使用final修饰符使其不能更改。

(2)、finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常)

finally不一定被执行。(try/catch执行被中断,死机,中断)

关闭资源

释放锁

(3)、Finalize()定义在java.lang.Object类中

垃圾回收前被调用,在对象回收前释放资源

每个对象的Fianlize()方法会被GC调用一次

不推荐使用。

二、对象的四种引用

强引用

都不会被JVM垃圾回收器(Garbage Collector)回收,通过类似Object obj=new Object();的代码就可以创建一个引用,会有内存溢出的风险,(即使是面临着发生OutQfMerroryError异常的风险)

软引用

非必须引用,所指向的对象,在内存溢出前被回收。

弱引用

第二次垃圾回收之前,JVM每一次垃圾回收动作都会回收被弱引用所指向的对象。

虚引用(引用强度最弱)

垃圾回收时回收,无法通过引用取到对象值引用强度最弱的引用,也就是说一个java对象是否被回收和指向它的虚引用完全没有任何关系。

作用:一般配合云队列使用,

  1. 重要对象回收监听 进行日志统计
  2. 系统gc监听 因为虚引用每次GC都会被回收,那么我们就可以通过虚引用来判断gc的频率,如果频率过大,内存使用可能存在问题,才导致了系统gc频繁调用

1、不同引用对内存的需求不同强引用内存100%抛出异常,

2、软应用占用内存80%不抛出异常,

3、弱引用不抛出异常,

4、虚引用内存溢出和强引用一样,不影响对象生命周期。和没有使用一样。所以抛出异常。

三、Error和Exception的区别

首先,Error和Exception类都继承Throwable类

Error:

系统中的错误,程序员是不能改变和处理的,程序编译时出现的错误,只能通过修改程序才能修正。

一般是指与虚拟机相关的问题,如系统奔溃,虚拟机错误,内存空间不足等。

对与这类错误的导致的应用程序中段,仅靠程序本身无法恢复和预防,遇到这样的错误建议程序终止,

Exception:

表示程序可以处理异常,可以捕获且可能恢复。

遇到这类异常,应该尽可能处理异常,而不应该随意终止异常。

处理异常

赞(3) 打赏
有问题的朋友随时留言,或者加我为好友。我的QQ是805375353. <<苏木三少博客 » JAVA面试总结

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

十年之约