排序
面试题:JDK 和 JRE 有什么区别?
JDK 和 JRE 是 Java 平台的两个主要组件,它们各自有着不同的用途和功能。以下是它们之间的主要区别: JDK(Java Development Kit) 定义:JDK 是 Java 开发工具包,是为开发人员提供的一个环境...
面试题:Java 中 ArrayList 和 LinkedList 有什么区别?
在 Java 中,ArrayList 和 LinkedList 都实现了 List 接口,但它们基于不同的数据结构实现,因此在性能、内存使用和适用场景方面存在显著差异。以下是它们的主要区别: 1. 数据结构基础 ArrayLi...
面试题:你了解 Java 中的读写锁吗?
是的,Java 中的读写锁(ReadWriteLock)是一种并发控制机制,它允许多个线程同时读取共享资源,但写操作必须独占锁。这种设计在“读多写少”的场景下能显著提高并发性能。以下是关于 Java 中读...
面试题:如何合理地设置 Java 线程池的线程数?
合理设置 Java 线程池的线程数是优化应用程序性能的关键步骤之一。这涉及到对任务类型的理解(I/O 密集型 vs CPU 密集型)、系统资源限制以及应用的具体需求。下面是一些指导原则和建议,帮助你...
面试题:为什么 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...