Java 面试核心考点梳理
集合框架与数据结构
HashMap 内部结构
了解 HashMap 的内部结构、内部原理以及与 HashTable 的区别是基础。若发生 hash 碰撞,设计合理的遍历策略能显著提升效率。
ConcurrentHashMap
需掌握其线程安全实现机制及具体应用场景。
常用容器类
包括 ArrayList 等常见容器的特性与使用场景。
ArrayList 去重
去除重复元素可直接采用 HashSet 作为参数进行 addAll 操作。但这种方式不能保证原有顺序,若要求保持顺序,可使用 LinkedHashSet。
链表中间节点查找
对于访问链表中间节点的问题,常规思路是先遍历计算长度再二次遍历。若要求仅遍历一次,可采用快慢指针法:一个指针每次移动两个节点,另一个每次移动一个节点,当快指针到达空节点时,慢指针即指向中间位置。
JVM 虚拟机
内存结构与作用
熟悉 JVM 虚拟机内存结构及其各部分作用,这是理解 Java 性能调优的基础。
类加载过程
理解双亲委派模型及类加载流程,明确各个阶段的职责。
垃圾回收
涉及垃圾回收算法及触发条件,需掌握不同算法的优缺点。
并发编程
synchronized 与 Lock
对比两者的区别及使用场景,理解底层锁的实现差异。
volatile 关键字
理解其作用,为何会出现变量读取不一致的情况,以及与 synchronized 的区别。
多线程环境下的 ++i
分析 ++i 在多线程环境下是否存在问题,并掌握解决方案。
Thread.sleep() 与 Thread.yield()
区分两者的行为差异,理解它们在调度中的不同表现。
异常处理
Error 与 Exception
两者均继承自 Throwable。Error 通常指虚拟机相关严重问题(如系统崩溃、OOM),程序应终止;Exception 表示程序可处理的异常,支持捕获。
泛型
泛型擦除与应用
理解 Java 泛型擦除机制,主要解决类型安全问题。探讨如何利用泛型进行 JSON 解析。


