面试题:你了解 Java 的逃逸分析吗?
逃逸分析是 Java 虚拟机(JVM)在运行时进行的一项动态分析技术,主要用于判断一个对象的引用是否可能“逃逸”出当前线程或方法的范围。 如果 JVM 能够确定一个对象不会逃逸到其他线程或方法中...
面试题:什么情况下会触发 Java 的 Full GC?
在Java中,Full GC指的是对整个堆(包括年轻代、老年代和永久代/元空间)进行垃圾回收的过程。触发Full GC的情况有多种,以下是一些常见的触发条件: 1. 老年代空间不足 当老年代没有足够的空间...
面试题:MySQL 中 VARCHAR(100) 和 VARCHAR(10) 的区别是什么?
在 MySQL 中,VARCHAR(10) 和 VARCHAR(100) 是变长字符串类型,它们的主要区别在于最大字符长度限制和性能影响。以下是详细对比: 1. 存储长度限制 VARCHAR(10) 最多存储 10 个字符。 插入的数...
面试题:Redis 性能瓶颈时如何处理?
当 Redis 出现性能瓶颈时,需要从多个维度进行分析和优化。以下是处理 Redis 性能瓶颈的系统性方法: 一、性能瓶颈的常见原因 内存瓶颈 原因:Redis 是内存数据库,内存不足会导致频繁的淘汰策...
面试题:Java 线程池中 shutdown 与 shutdownNow 的区别是什么?
在 Java 的 ExecutorService 接口中,shutdown() 和 shutdownNow() 都是用来关闭线程池的方法,但它们的行为和效果有所不同。理解两者之间的差异对于正确管理线程池的生命周期至关重要。 shutdo...
面试题:什么是分库分表?分库分表有哪些类型(或策略)?
分库分表的定义 分库分表是一种数据库优化技术,用于解决单库单表性能瓶颈的问题。当数据量过大或并发访问压力过高时,将原本集中存储的数据分散到多个数据库或多个表中,从而提升数据库的性能...
面试题:什么是 Java 的 CompletableFuture?
CompletableFuture 是 Java 8 引入的一个类,位于 java.util.concurrent 包中,它是对 Future 接口的扩展和增强。CompletableFuture 提供了一种更加灵活且强大的方式来处理异步编程任务,允许你...
面试题:Redis 字符串类型的最大值大小是多少?
在 Redis 中,字符串(String)类型的最大值大小为 512MB。这一限制是 Redis 的设计特性之一,旨在平衡性能、内存管理和系统稳定性。以下是详细解析: 一、Redis 字符串最大值的官方限制 技术实...
面试题:Synchronized 修饰静态方法和修饰普通方法有什么区别?
在 Java 中,synchronized 关键字可以用来修饰实例方法、静态方法或者代码块。当它用于修饰静态方法和普通(实例)方法时,存在一些重要的区别,主要体现在锁的对象以及锁定的范围上。 锁定对象...
面试题:为什么不推荐在 MySQL 中直接存储图片、音频、视频等大容量内容?
在MySQL中直接存储图片、音频、视频等大容量内容(通常称为BLOB/BIG BLOB数据)通常不被推荐,主要原因包括以下几点: 1. 性能问题 存储效率:存储大容量文件(如图片、音频、视频)会大幅增加...