hashmap默认初始容量为16、负载因子为0.75,是空间利用率与查询性能长期权衡的工程最优解:16为2的幂以支持高效位运算索引计算,且兼顾避免过早扩容与内存浪费;0.75则平衡哈希冲突概率与内存使用率,使首次扩容阈值为12,保障o(1)平均查找性能。

直接看核心原理,别堆题海。
八股文要懂逻辑,不是背答案
比如问 HashMap,重点不是复述“数组+链表+红黑树”,而是讲清楚:
• 为什么初始容量是16、负载因子是0.75?
• put 时如何计算 hash、定位桶、处理哈希冲突?
• 链表转红黑树的阈值(8)和树化条件(桶内节点≥8且数组长度≥64)背后的设计权衡是什么?
死记硬背容易被追问“如果改成0.6会怎样?”——答不上来就露馅。
对比类问题抓本质差异
像 ArrayList 和 LinkedList,别只列“数组 vs 链表”,要落到实际影响:
• 随机读取快(ArrayList O(1))但中间插入慢(O(n));
• 频繁头尾增删快(LinkedList O(1))但遍历慢(CPU缓存不友好);
• 内存上,ArrayList 预分配空间省内存,LinkedList 每个节点多存两个引用,更费空间。
面试官想听的是你用过、想过、权衡过。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
JVM 和并发不能脱离场景
光说“CMS 是老年代垃圾收集器”没用,得结合问题:
• 线上服务突然卡顿,GC 日志显示频繁 Full GC,你会先查什么?(堆大小、对象生命周期、是否有大对象/内存泄漏)
• 多线程抢资源,synchronized 和 ReentrantLock 怎么选?(简单同步用 synchronized;需超时、可中断、公平锁时选 Lock)
• AQS 是怎么用 state + CLH 队列实现锁和同步器的?(state 控制状态,队列管理等待线程)
原理必须能接住“如果线上出问题,你怎么查?”这一问。
新特性要会用,更要懂边界
Java 8 的 Stream 和 Optional 不是加分项,是基本要求:
• Stream 并行流不是万能的,数据量小或操作耗时低时反而更慢;
• Optional.of(null) 直接抛 NPE,Optional.empty() 才安全;
• 不要用 Optional 当参数或返回 List,它不是容器,设计初衷是避免 null 判断。
用错比不用更危险,面试官一眼就能看出你有没有真实写过业务代码。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










