ohmyblog

#Java 后端

经典题解析:JVM 堆内存为什么分成 Eden 和两个 Survivor

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。「堆内存为什么分代、为什么是两个 Survivor」是 JVM 面试的常驻题——能画出 Eden、S0、S1 的人很多,能讲清「为什么这么设计」的人不多。

经典题解析:Java 内存模型的 happen-before,到底在保证什么

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。happen-before 是 Java 并发面试里最容易「背得出、讲不清」的概念——能背规则的人一抓一把,能说清它到底在保证什么的人不多。

经典题解析:CMS 和 G1 垃圾收集器,区别和选型怎么说

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料(见文末来源说明),与任何公司的当前招聘无关。CMS 与 G1 的对比是 JVM 方向的经典题,但这道题有一个常被忽略的时效点:CMS 已经在 JDK 14 中被正式移除,G1 从 JDK 9 起就是默认收集器。

经典题解析:volatile 保证了什么,为什么还要 AtomicLong

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料(见文末来源说明),与任何公司的当前招聘无关。「volatile 保证了什么」几乎人人会答「可见性」,面试官真正的落点是下一句:「那用它做计数器行不行?为什么?」

经典题解析:synchronized 和 Lock 到底有什么区别,用哪个

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料(见文末来源说明),与任何公司的当前招聘无关。「synchronized 和 Lock 的区别」是 Java 并发面试的保留曲目,人人都能背出两三条,面试官真正想看的是你能不能把差异组织成一张有结构的对比表,并落到「什么场景…

经典题解析:线程池这几个参数搞不懂,面试肯定挂

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料(见文末来源说明),与任何公司的当前招聘无关。线程池是 Java 并发面试的高频题,但它的真正考点不是背七个参数的名字,而是能不能讲清楚一个新任务提交之后,线程池内部的决策顺序——这条流程线串起了所有参数的意义。

经典题解析:HashMap 为什么线程不安全,并发场景该用什么

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料(见文末来源说明),与任何公司的当前招聘无关。这道题表面考一个类的用法,实际考的是你对「并发读写共享数据」这件事有没有工程直觉。

经典并发题:程序为什么会死锁?原因、排查、预防一次答全

想象面试现场:面试官问,多线程程序为什么会死锁?线上碰见了怎么排查?写代码时又怎么预防?这道题属于经典题解析(历史题目复盘,见文末来源说明),它看起来基础,但能一层层追问下去——只背出「四个必要条件」的候选人,和能讲清排查动作、预防策略的候选人,差距立刻拉开。