
1. 项目背景与价值解析最近在整理Java技术团队的面试题库时我把这些年积累的122道基础面试题做了系统梳理。这些题目覆盖了从语法基础到集合框架的核心知识点都是实际面试中出现频率最高的必考题。不同于网上那些零散的题目集合这个题库特别注重考察候选人对原理的理解深度——比如为什么String要设计成不可变对象HashMap扩容机制如何避免死循环提示建议读者先自行思考每道题的答案再看解析效果更佳。我在每道题后都标注了星级难度★基础 ★★进阶 ★★★深度2. 核心题目分类解析2.1 Java基础语法32题典型例题// 题目下面代码输出什么为什么 Integer a 100, b 100; System.out.println(a b); // true Integer c 200, d 200; System.out.println(c d); // false深度解析涉及知识点Integer缓存机制-128~127扩展考察自动装箱拆箱原理实战建议永远使用equals()比较包装类避坑指南注意final变量的初始化时机静态代码块与构造方法执行顺序运算符优先级常见误区2.2 面向对象特性28题典型例题抽象类与接口的应用场景区别参考答案维度抽象类接口设计目的代码复用行为契约方法实现可有具体方法JDK8前必须抽象多继承不支持支持多实现字段可定义实例变量常量字段设计模式应用模板方法模式→抽象类策略模式→接口3. 集合框架精选题35题3.1 HashMap底层原理连环追问示例哈希冲突解决方法拉链法为什么链表转红黑树的阈值是8泊松分布多线程下可能产生什么问题环形链表源码级回答技巧// JDK1.8的resize()关键代码片段 if (oldTab ! null) { for (int j 0; j oldCap; j) { NodeK,V e; if ((e oldTab[j]) ! null) { oldTab[j] null; if (e.next null) newTab[e.hash (newCap - 1)] e; else if (e instanceof TreeNode) ((TreeNodeK,V)e).split(this, newTab, j, oldCap); else { // 保持原有顺序 NodeK,V loHead null, loTail null; NodeK,V hiHead null, hiTail null; // ...省略迁移逻辑 } } } }3.2 ConcurrentHashMap优化之道版本对比JDK7分段锁16个SegmentJDK8CASsynchronized优化关键参数LOAD_FACTOR0.75f4. 异常处理与IO流18题高频陷阱题try { Files.copy(src, dst); } catch (IOException e) { throw new RuntimeException(文件操作失败); } finally { // 这里可能抛出未处理的异常 stream.close(); }最佳实践使用try-with-resources语法异常屏蔽问题处理方案自定义异常设计原则5. 多线程核心题25题5.1 线程状态转换面试画图题新建→就绪←→运行→阻塞→等待→超时等待→终止常见追问wait()和sleep()的本质区别为什么notify()可能导致死锁ThreadLocal的内存泄漏问题5.2 JUC工具类实战CountDownLatch典型场景// 模拟多任务并行初始化 CountDownLatch latch new CountDownLatch(3); executor.execute(()-{ initDB(); latch.countDown(); }); executor.execute(()-{ initCache(); latch.countDown(); }); executor.execute(()-{ initMQ(); latch.countDown(); }); latch.await(5, TimeUnit.SECONDS); // 超时保护6. 题目使用建议面试官指南根据岗位级别调整题目难度配比技术追问建议采用剥洋葱式提问避免死记硬背关注解题思路候选人准备每天精研5道题延伸知识点建立自己的错题本配合《Java编程思想》查漏补缺这套题库经过3次迭代优化目前在我们团队的面试中准确率能达到82%。特别建议结合项目实际场景进行变形提问比如你们项目中HashMap的使用场景有哪些遇到过扩容问题吗