排序
面试题:为什么 Java 8 移除了永久代(PermGen)并引入了元空间(Metaspace)?
在Java 8中,永久代(PermGen)被移除,并引入了元空间(Metaspace),这一变化主要是为了解决一些与类元数据存储相关的限制和问题。以下是Java 8做出这一改变的主要原因: 1. 内存管理改进 动...
面试题:为什么 JDK 9 中将 String 的 char 数组改为 byte 数组?
在JDK 9中,String的内部表示从使用char[]数组改为使用byte[]数组,这一改变主要是为了优化内存使用和提高性能。 具体来说,之前的String实现使用的是char[]数组,每个字符占用2个字节(16位)...
面试题:什么是 Java 的多态特性?
Java 的多态特性是面向对象编程(OOP)中的一个核心概念,它允许一个接口或父类类型的引用指向其不同的子类实例,并根据实际的对象类型调用相应的方法实现。多态性提高了代码的灵活性和可扩展性...
面试题:什么是 Java 中的 ABA 问题?
在Java中,ABA问题是出现在使用无锁算法(如CAS操作,Compare-And-Swap)时的一种潜在的竞争条件问题。 这个问题通常发生在多线程环境下,当一个线程尝试进行CAS操作时,它会检查某个值是否仍然...
面试题:说说 AQS 吧?
当然可以,AQS(AbstractQueuedSynchronizer) 是 Java 并发包 java.util.concurrent(简称 JUC)中非常核心的一个抽象类,是构建各种同步器(如 ReentrantLock、Semaphore、CountDownLatch、Re...
面试题:常用的 JVM 配置参数有哪些?
JVM(Java虚拟机)提供了丰富的配置参数,用于调整其运行时行为以优化性能或解决特定问题。以下是一些常用的JVM配置参数: 堆内存设置 -Xms<size>:设置JVM启动时的初始堆大小。 -Xmx<siz...
面试题:什么是 Java 中的直接内存(堆外内存)?
在Java中,直接内存(也称为堆外内存)是指不位于JVM堆空间中的内存区域。它独立于Java堆之外,通常通过java.nio.ByteBuffer的allocateDirect方法或其他NIO工具类进行分配。直接内存允许数据存...
面试题:什么是 BIO、NIO、AIO?
BIO、NIO和AIO代表了Java中不同类型的I/O模型,它们各自针对不同的应用场景提供了不同的解决方案。理解这三种模型的区别对于开发高效的应用程序至关重要。 1. BIO(Blocking I/O,阻塞I/O) 概...
面试题:Java 泛型的作用是什么?
Java中的泛型(Generics)提供了一种让类型(类、接口)成为参数的机制,允许编写可以处理不同类型数据的代码而无需在具体使用时进行类型转换。以下是泛型的主要作用: 1. 提高类型安全性 泛型...
面试题:Java 中的 TreeMap 是什么?
TreeMap 是 Java 中 Map 接口的一种实现,它位于 java.util 包中。与 HashMap 不同,TreeMap 使用红黑树(Red-Black tree)这种自平衡二叉查找树的数...