面试题:为什么 JDK 1.8 对 HashMap 进行了红黑树的改动?
JDK 1.8 对 HashMap 引入红黑树的主要目的是优化极端情况下哈希冲突导致的性能问题,通过将链表转换为红黑树,将最坏情况下的时间复杂度从 O(n) 降低到 O(log n),从而显著提升性能。以下是详细...
面试题:BigDecimal 为什么能保证精度不丢失?
BigDecimal 是 Java 中用于高精度数值计算的类,特别适用于金融、科学计算等对精度要求非常高的场景。它之所以能保证精度不丢失,主要依赖于其底层的设计原理和实现机制。 ✅ 一、为什么浮点数...
面试题:如何判断网页元素是否到达可视区域?
这是一个非常实用的前端面试题,常用于实现懒加载、无限滚动、埋点曝光等场景。判断元素是否进入可视区域有多种方法,从简单到高级逐步演进。 ✅ 方法一:使用 getBoundingClientRect()(兼容性...
面试题:Java 中 Thread.sleep(0) 的作用是什么?
在Java中,Thread.sleep(0) 的使用实际上是为了让当前线程放弃剩余的时间片,并允许具有相同优先级的其他线程有机会运行。这被称为“线程礼让”,尽管它并不能保证这些其他线程会立即执行,因为...
面试题:什么情况下会触发 Java 的 Full GC?
在Java中,Full GC指的是对整个堆(包括年轻代、老年代和永久代/元空间)进行垃圾回收的过程。触发Full GC的情况有多种,以下是一些常见的触发条件: 1. 老年代空间不足 当老年代没有足够的空间...
面试题:Java 中 HashMap 的扩容机制是怎样的?
在 Java 中,HashMap 的扩容机制是为了在键值对数量增加时,动态调整数组容量以减少哈希冲突并保持高效的查询和插入性能。以下是其核心原理和流程的详细解析: 1. 扩容触发条件 当 Ha...
面试题:Java 中的 synchronized 轻量级锁是否会进行自旋?
在 Java 中,synchronized 的实现涉及到几种不同的锁状态,包括无锁状态、偏向锁、轻量级锁和重量级锁。这些状态之间的转换是根据运行时的并发情况动态调整的。 对于轻量级锁来说,它并不直接涉...
面试题:Java 线程安全的集合有哪些?
在Java中,线程安全的集合类主要分为两类:传统线程安全集合和现代并发集合。以下是常见的线程安全集合及其特点: 1. 传统线程安全集合 这些集合通过 synchronized 关键字或全局锁实...
面试题:Java 的 synchronized 是怎么实现的?
Java 的 synchronized 关键字提供了一种简单而强大的机制来确保线程安全,它通过隐式的方式实现对象或类级别的锁控制。以下是 synchronized 实现机制的详细解释: 1. 锁的对象 实例方法:当 syn...
面试题:JavaScript 中如何合并对象?
这是一个非常实用的 JavaScript 面试题,考察对对象操作和 ES6+ 语法的掌握。合并对象有多种方法,从传统到现代逐步演进。 ✅ 方法一:Object.assign()(ES6,常用) const obj1 = { a: 1, b: 2...








