
1. Java基础面经二概述作为Java开发者面试的必备资料这份面经涵盖了Java基础知识的多个核心领域。不同于初级面经的入门内容本部分更侧重于考察开发者对Java语言特性的深入理解和实际应用能力。面试官通常会通过这些题目评估候选人的基本功是否扎实是否具备解决复杂问题的思维模式。2. 核心知识点解析2.1 Java内存模型与垃圾回收Java内存模型JMM是面试中的高频考点。理解JMM需要掌握以下几个关键点内存区域划分堆内存Heap存储对象实例是GC主要工作区域方法区Method Area存储类信息、常量、静态变量虚拟机栈VM Stack存储局部变量表、操作数栈等本地方法栈Native Method Stack程序计数器Program Counter Register垃圾回收算法标记-清除算法会产生内存碎片复制算法适合新生代需要双倍空间标记-整理算法适合老年代避免碎片分代收集算法商业虚拟机常用策略实际面试中常被问到的GC问题如何判断对象是否存活GC Roots包括哪些对象各种垃圾收集器的特点比较2.2 集合框架深度解析Java集合框架是日常开发中最常用的工具之一面试中常考察的点包括List接口实现比较ArrayList基于动态数组随机访问快LinkedList基于双向链表插入删除快Vector线程安全的ArrayList但性能较差Map实现类对比// HashMap示例代码 MapString, Integer map new HashMap(); map.put(a, 1); map.get(a);HashMap数组链表/红黑树非线程安全ConcurrentHashMap分段锁实现线程安全LinkedHashMap保持插入顺序TreeMap基于红黑树的有序MapFail-Fast与Fail-Safe机制ArrayList等集合的迭代器是Fail-Fast的CopyOnWriteArrayList是Fail-Safe的3. 多线程与并发编程3.1 线程基础创建线程的三种方式继承Thread类实现Runnable接口实现Callable接口可获取返回值线程状态转换NEW - RUNNABLE - BLOCKED - WAITING - TIMED_WAITING - TERMINATED3.2 线程同步机制synchronized关键字修饰实例方法锁是当前实例对象修饰静态方法锁是当前类的Class对象同步代码块可指定锁对象Lock接口及其实现Lock lock new ReentrantLock(); lock.lock(); try { // 临界区代码 } finally { lock.unlock(); }volatile关键字保证可见性禁止指令重排序不保证原子性4. Java 8新特性4.1 Lambda表达式Lambda表达式使代码更简洁ListString list Arrays.asList(a, b, c); list.forEach(s - System.out.println(s));4.2 Stream APIStream提供了强大的数据处理能力ListInteger numbers Arrays.asList(1, 2, 3, 4, 5); int sum numbers.stream() .filter(n - n % 2 0) .mapToInt(Integer::intValue) .sum();4.3 Optional类避免NullPointerException的优雅解决方案OptionalString optional Optional.ofNullable(getString()); String result optional.orElse(default);5. 异常处理机制5.1 异常体系结构ThrowableError系统级错误如OutOfMemoryErrorException检查型异常Checked Exception非检查型异常Unchecked Exception/RuntimeException异常处理最佳实践不要捕获Throwable不要忽略异常使用特定的异常类型记录完整的异常信息6. 设计模式应用6.1 单例模式实现饿汉式public class Singleton { private static final Singleton INSTANCE new Singleton(); private Singleton() {} public static Singleton getInstance() { return INSTANCE; } }双重检查锁public class Singleton { private volatile static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance null) { synchronized (Singleton.class) { if (instance null) { instance new Singleton(); } } } return instance; } }6.2 工厂模式简单工厂示例public class ShapeFactory { public Shape getShape(String shapeType) { if (shapeType null) return null; if (shapeType.equalsIgnoreCase(CIRCLE)) { return new Circle(); } else if (shapeType.equalsIgnoreCase(RECTANGLE)) { return new Rectangle(); } return null; } }7. JVM调优实战7.1 常见JVM参数堆内存设置-Xms初始堆大小-Xmx最大堆大小-Xmn新生代大小GC日志参数-XX:PrintGCDetails-XX:PrintGCDateStamps-Xloggc:/path/to/gc.log7.2 OOM问题排查内存泄漏定位步骤使用jmap生成堆转储文件使用MAT或VisualVM分析堆转储查找占用内存最大的对象分析对象的引用链常见OOM类型Java heap spacePermGen space/MetaspaceUnable to create new native threadGC overhead limit exceeded8. 面试实战技巧8.1 问题回答策略STAR法则Situation问题背景Task你的任务Action采取的行动Result取得的结果技术问题回答结构先给出简明定义解释核心原理结合实际应用场景可能的问题和解决方案8.2 编码题解题思路解题步骤明确问题需求分析输入输出设计算法思路考虑边界条件编写代码实现测试验证常用算法排序算法查找算法动态规划回溯算法贪心算法9. 常见问题与解决方案9.1 HashMap相关问题HashMap工作原理基于哈希表实现使用链表/红黑树解决哈希冲突扩容机制负载因子默认0.75为什么重写equals要重写hashCode保证对象相等时hashCode相同否则会导致HashMap等集合无法正常工作9.2 线程池使用问题核心参数corePoolSizemaximumPoolSizekeepAliveTimeworkQueuethreadFactoryhandler拒绝策略AbortPolicy默认CallerRunsPolicyDiscardPolicyDiscardOldestPolicy10. 进阶学习建议源码阅读JDK核心类库源码常用框架源码Spring、MyBatis等性能优化JVM调优数据库优化缓存策略分布式系统分布式锁分布式事务消息队列在实际面试准备过程中建议结合具体项目经验来理解这些概念面试官往往更看重候选人能否将理论知识应用到实际问题解决中。对于每个知识点不仅要知其然更要知其所以然这样才能在面试中游刃有余。