面试题.02

1. 基本数据类型和引用数据类型的区别

  • 存储位置:基本数据类型的值直接存储在变量中;引用数据类型的变量存储的是对象的引用,对象本身存储在堆内存中。
  • 变量内容:基本数据类型变量包含值本身;引用数据类型变量包含对象的地址。
  • 传递方式:基本数据类型传递的是值的副本;引用数据类型传递的是引用的副本。

2. Java中的异常处理机制有哪些

try-catch:

  • try 块:包含可能会抛出异常的代码段。
  • catch 块:用于捕获并处理 try 块中抛出的异常。

throw 和 throws:

  • throw:用于手动抛出异常对象。通常在方法内部使用,将异常传递给调用者处理。
  • throws:用于在方法声明中指定可能抛出的异常类型。如果一个方法可能抛出某些类型的异常,但是该方法本身不处理这些异常,可以使用throws关键字将异常传播给调用者处理。

3. String str = new String("str"); 这个语句会创建几个对象

1个或2个,如果常量池中存在"str"只会在堆中创建一个,如果常量池中不存在则会先在常量池中创建一个"str"对象,再在堆中创建一个"str"对象

4. 线程的生命周期

  • New(新建状态):线程杠被创建还没有开始运行,调用start()前
  • Runable(就绪状态):线程正在运行或者准备好了去运行,调用start()后
  • Blocked(阻塞状态):锁竞争导致的阻塞
  • Waiting(等待状态):线程等待某个条件完成,例如输入,调用不带时间参数的join(),wait()
  • Time_Waiting(定时等待状态):线程等待某个条件完成,但是超过设定时间就不等了,调用带时间参数的join(),wait()
  • Terminated(终止状态):线程执行完其 run() 方法或者因异常而提前结束时进入终止状态

5. Java gc过程

  • 标记阶段:通过可达性分析算法标记每个能到达的对象为活动对象
  • 清除阶段:GC遍历整个堆内存把未标记的对象空间标记为可用也就是释放内存
  • 压缩阶段:移动活动对象减少内存碎片

6. Java中的引用分为哪几种?有什么用途

  • 强引用:最常见的引用类型,如果一个对象具有强引用,即使堆内存空间不足,jvm也不会回收这个对象
  • 软引用:如果一个对象只有软引用,当堆内存空间不足时,jvm会回收这个对象,可以用于存一些当前用不到但可能会用到的缓存数据,例如非本界面的图片。
  • 弱引用:如果一个对象只有弱引用,那么只要GC扫描到这个对象就会回收它,用于只希望在对象有强引用时才有效的场景,例如ThreadLocal
  • 虚引用:如果一个对象有虚引用,这个对象被回收时会被加入一个队列中做特殊处理,例如NIO中的DirectByteBuffer管理

7. 什么是ThreadLocal?是如何实现的?

ThreadLocal可以理解为一个容器,其中可以存放对象,一个线程只能访问到自身存入其中的对象。

在Thread类中有一个属性为ThreadLocalMap,一个线程往ThreadLocal中存对象时,实际上是存入了自己的ThreadLocalMap中,ThreadLocal对象为Key,存入的对象为Value,所以每个线程只能访问自己存入ThreadLocal中的对象。

8. 直接把ThreadLocal引用置为空会引起什么问题?为什么?正确做法是什么?

ThreadLocalMap中的Key对ThreadLocal的引用是一个弱引用,当把ThreadLocal直接置为null时,ThreadLocal 对象只剩Key的虚引用,所以Key也会被置为null,此时的Value引用的对象就无法通过get()方法访问到了,所以会引起内存泄漏,正确的做法是先调用remove方法清除存在ThreadLocal中的对象再把ThreadLocal引用置为null

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ting-yu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值