猿辅导Java面试真实经历与深度总结(一)

猿辅导Java面试 的文章,结构清晰、列出的几个核心问题,并附详细答案。文章既适合复习,也适合面试现场讲解。 ​编辑


猿辅导Java面试核心知识点解析

Java面试中,垃圾回收、锁机制以及高并发集合类是常考知识点。本文将结合实际面试题,系统讲解这些内容。

---​编辑

一、垃圾收集器(Garbage Collector, GC)

概念

垃圾收集器负责自动管理内存,回收无用对象,避免内存泄漏和程序崩溃。Java虚拟机中,垃圾收集器主要作用于堆内存。​编辑

常见垃圾收集器

  1. Serial GC:单线程,适合客户端环境。
  2. Parallel GC:多线程收集,追求吞吐量。
  3. CMS(Concurrent Mark Sweep):低延迟,采用标记-清除算法,适合对响应时间敏感的应用。
  4. G1(Garbage First):分代收集,适合大堆内存,并通过并发和分区来平衡延迟和吞吐量。

二、G1 和 CMS 的区别

特性 CMS G1
内存划分 年轻代 + 老年代 整个堆划分为多个Region
收集方式 并发标记 + 清除 并发标记 + 回收
碎片问题 易产生碎片 通过Region整理碎片,减少Full GC
停顿时间 较低,但存在Concurrent Mode Failure风险 低停顿,可预测停顿时间
适用场景 老应用,响应时间敏感 大内存应用,需要控制停顿时间

三、为什么 G1 可以在保证用户吞吐量的情况下进行垃圾收集

G1 的核心优势在于 Region 分区 + 并发标记 + 并行回收

  1. Region 分区:将堆划分成多个小块,允许回收一部分Region,而不是整个老年代。
  2. 混合回收(Mixed GC):优先回收垃圾最多的Region,减少不必要的停顿。
  3. 预测停顿时间:G1 会根据停顿时间目标(Pause Time Goal)选择回收Region数量,从而平衡吞吐量和停顿时间。

总结:G1 通过局部回收、并发标记和停顿预测,实现低延迟且尽量不影响应用吞吐量。


四、Java中实现加锁的方式

Java中主要的锁机制:

  1. 内置锁(Synchronized)
    • 修饰方法或代码块
    • 基于 JVM 对象头的 Mark Word 和 Monitor 实现
  2. 显示锁(Lock)
    • ReentrantLockReentrantReadWriteLock
    • 提供更灵活的锁操作,例如可中断、可尝试获取
  3. CAS(Compare-And-Swap)
    • 无锁机制,多用于原子操作类(AtomicInteger
  4. 偏向锁 / 轻量级锁 / 重量级锁
    • JVM 锁优化策略,通过不同状态减少锁竞争开销

五、Synchronized 及锁升级过程

Synchronized 工作原理

  • 对象头中有 Mark Word指向 Monitor 的指针
  • 不同状态下锁的表现不同:
锁状态 说明 获取方式
偏向锁 偏向单线程,减少无竞争锁开销 线程首次获取后 Mark Word 记录线程ID
轻量级锁 多线程竞争,但未发生阻塞 使用 CAS 尝试获取锁,失败则膨胀为重量级锁
重量级锁 高竞争线程阻塞 使用操作系统互斥量(Mutex)阻塞线程

锁升级顺序 :偏向锁 → 轻量级锁 → 重量级锁​编辑


六、AQS(AbstractQueuedSynchronizer)底层实现原理

AQS 是 Java 并发锁的核心框架,支持 ReentrantLockSemaphore 等。

原理

  1. 状态维护 :AQS 内部通过 int state 表示锁的状态
  2. 队列机制 :等待线程通过 双向队列(CLH 队列) 排队
  3. 独占/共享模式
    • 独占锁:一次只有一个线程持有
    • 共享锁:多个线程可同时持有(如 Semaphore)
  4. 核心方法
    • tryAcquire() / tryRelease():尝试获取或释放锁
    • acquire() / release():带阻塞的获取/释放方法

AQS 的队列保证了公平性和线程阻塞唤醒机制,是 Java 高并发锁的基础。


七、ConcurrentHashMap

概念

  • 并发哈希表,线程安全的 HashMap
  • JDK1.7 采用 分段锁(Segment),每段独立加锁
  • JDK1.8 采用 CAS + synchronized,通过链表/红黑树存储桶节点

特点

  • 高并发读无需加锁(volatile + CAS)
  • 写操作仅锁定桶节点或进行 CAS
  • JDK1.8 支持链表转红黑树,优化高碰撞场景

总结

猿辅导 Java 面试常考的知识点主要围绕:

  1. GC机制:G1/CMS的区别、G1低停顿原理
  2. 锁机制:Synchronized、锁升级、AQS原理
  3. 高并发集合:ConcurrentHashMap的实现

掌握这些核心原理,不仅能回答面试题,还能在面试中深入分析场景问题,展示扎实的Java基础。


相关推荐
SomeB1oody4 分钟前
【RustyML入门】5.0. 模型评估
开发语言·后端·机器学习·rust·教程
唐青枫35 分钟前
别只把 enum 当常量列表:Zig 枚举、状态机与 Tagged Union 实战
后端
2601_963870211 小时前
【计算机毕业设计】基于Spring Boot的非遗文创产品交易平台的设计与实现
java·spring boot·后端
lv__pf1 小时前
Spring之AOP底层源码解析(下)【TL spring14】
java·后端·spring
苍何1 小时前
保姆级教程,Codex 接入 DeepSeek V4 Pro 和 Grok 4.6,6 种方法全整理
后端
我一定会有钱1 小时前
打造完美工作流:Git 配置”一次推送,三端同步”(Gitee/GitCode/GitHub)
开发语言·windows·vscode·搜索引擎·gitlab·github·visual studio code
苍何1 小时前
全球首款原生全模态交互式世界模型来了,AI 视频终于能“玩”了
后端
一只叫煤球的猫1 小时前
Spring AI 2.0 源码解析(一):一次 ChatClient 调用到底经历了什么?
后端·面试·ai编程
andongni2031 小时前
后端参数校验
spring boot·后端·mybatis