面试题: 为什么 HashMap 在 Java 中扩容时采用 2 的 n 次方倍?
在 Java 的 HashMap 中,扩容时采用 2 的 n 次方倍 的设计是出于 性能优化 和 算法效率 的考虑,主要基于以下几个核心原因: 1. 索引计算的高效性:位运算替代取模 索引计算公式: HashMap 通过...
面试题:什么是 Java 中的指令重排?
在Java中,指令重排(Instruction Reordering)是指编译器或处理器为了优化程序性能而对程序中的指令顺序进行调整的过程。 尽管这种重排通常不会改变单线程程序的行为,但在多线程环境下可能导...
面试题:Java 线程池内部任务出异常后,如何知道是哪个线程出了异常?
在 Java 中,当你使用线程池(如 ThreadPoolExecutor 或其更高级别的封装如 Executors.newFixedThreadPool() 等)执行任务时,如果任务内部抛出了未捕获的异常,默认情况下这个异常不会直接反馈...
面试题:什么是 Java 的 AOT(Ahead-Of-Time)?
Java的AOT(Ahead-Of-Time)编译是指在程序运行之前将Java字节码转换成本地机器代码的过程,与之相对的是JIT(Just-In-Time)编译,它是在程序运行时动态地进行编译。 AOT编译的主要目标是提高...
面试题:MySQL 中 VARCHAR(100) 和 VARCHAR(10) 的区别是什么?
在 MySQL 中,VARCHAR(10) 和 VARCHAR(100) 是变长字符串类型,它们的主要区别在于最大字符长度限制和性能影响。以下是详细对比: 1. 存储长度限制 VARCHAR(10) 最多存储 10 个字符。 插入的数...
面试题:MySQL 中如果发生死锁应该如何解决?
在 MySQL 中,死锁是指两个或多个事务在等待对方释放资源,从而导致这些事务永远处于等待状态的情况。MySQL 的 InnoDB 存储引擎能够自动检测到死锁,并回滚其中一个事务来解决这个问题。 然而,...
面试题:Redis 中的内存碎片化是什么?如何进行优化?
Redis 中的内存碎片化是指 Redis 内存中存在大量无法被有效利用的空闲内存块,导致内存利用率下降。其核心问题在于 内部碎片 和 外部碎片: 一、内存碎片化的定义 内部碎片(Int...
面试题:Redis 的 Pipeline 功能是什么?
Redis 的 Pipeline(管道) 是一种客户端批量操作技术,用于减少客户端与 Redis 服务器之间的网络通信开销,从而显著提升批量操作的性能。以下是对其原理、优势、使用场景及注意事项...
面试题:CSS 的 flex 布局有什么好处?
这是一个非常经典且重要的 CSS 面试题,考察对现代布局技术的理解。Flexbox(弹性盒子布局)是 CSS3 中引入的强大布局模型,它极大地简化了复杂布局的实现。 核心好处总结 Flexbox 的主要优势在...
面试题:常见的 CSS 布局单位有哪些?
面试题:常见的 CSS 布局单位有哪些? CSS 提供了丰富的长度和布局单位,用于控制元素的尺寸、间距、字体等。根据使用场景,这些单位可分为 绝对单位 和 相对单位 两大类。掌握它们的特性有助于...









