排序
面试题:简述 Excption 与 Error 包结构 ?
在 Java 中,Exception 和 Error 都是 Throwable 类的子类,用于表示程序运行过程中可能出现的异常或错误。它们的包结构如下: 1. Exception 包结构 包路径...
面试题:Java 中的 synchronized 轻量级锁是否会进行自旋?
是的,Java 中的 synchronized 轻量级锁在竞争时会进行 自旋。 1. 轻量级锁的背景 轻量级锁是 JVM 为了减少线程阻塞和上下文切换的开销而引入的一种优化机制。它的核心思想是:当多个线程竞争锁...
面试题:简述 OOM 你遇到过哪些情况,SOF 你遇到过哪些情况 ?
1. OOM(OutOfMemoryError) OOM 是 Java 中一种严重的错误,表示 JVM 内存不足,无法分配更多资源。常见的 OOM 情况包括: 1.1 堆内存溢出(Heap Space OOM) 原因: 堆内存中对象过多,超出了 ...
面试题:为什么 Java 中的 ThreadLocal 对 key 的引用为弱引用?
在 Java 的 ThreadLocal 实现中,ThreadLocalMap 使用弱引用(WeakReference)来引用 ThreadLocal 对象作为键(key)。这种设计主要是为了解决内存泄漏问题,以下是具体原因和机制: 1. 弱引用...
面试题:RabbitMQ 如何通过插件扩展功能?常用的插件有哪些?
RabbitMQ 提供了插件机制,允许用户通过安装和启用插件来扩展其功能。插件可以增强 RabbitMQ 的核心功能,例如支持新的协议、提供监控和管理工具、增加安全性等。以下是关于 RabbitMQ 插件扩展...
面试题:Java 中使用 ThreadLocal 的最佳实践是什么?
ThreadLocal 是 Java 中用于实现线程本地存储的强大工具,但如果使用不当,可能会导致内存泄漏或其他问题。以下是使用 ThreadLocal 的最佳实践: 1. 显式调用 remove(...
面试题: 为什么 Java 中某些新生代和老年代的垃圾收集器不能组合使用?比如 ParNew 和 Parallel Old
在Java中,年轻代(Young Generation)和老年代(Old Generation)的垃圾收集器(GC)需要协同工作,以确保整个堆内存的高效管理。然而,并不是所有的年轻代和老年代收集器都可以组合使用。某些...
面试题:如何在 RabbitMQ 中实现消息的持久化?
在 RabbitMQ 中,消息的持久化是为了确保消息在 RabbitMQ 服务重启后不会丢失。 以下是使用 Java 实现消息持久化的详细步骤和代码示例: 1. 实现消息持久化的关键点 为了保证消息的持久化,需要...
面试题:JVM 有那几种情况会产生 OOM(内存溢出)?
在 Java 虚拟机(JVM)中,OutOfMemoryError(OOM)是一种常见的运行时错误,表示 JVM 无法分配足够的内存来满足程序的需求。以下是几种常见的 OOM 情况: Java 堆内存溢出(OutOfMemoryError: ...
面试题:Spring IOC 有什么好处?
Spring IOC(Inversion of Control,控制反转) 是 Spring 框架的核心特性之一,它通过将对象的创建、依赖管理和生命周期交给 Spring 容器来管理,从而为开发者带来了许多好处。以下是 Spr...