这是一份超级详细的Java知识体系介绍,专门为面试准备和查缺补漏设计。我会按照从基础到高级、从核心概念到周边生态的结构来组织,并标记出面试中的高频考点。
Java 详细介绍(面试查缺补漏版)
下图清晰地展示了Java面试中需要掌握的核心知识体系与进阶路径:

一、Java 语言基础(务必滚瓜烂熟)
这部分是地基,虽然简单,但必须准确无误。
- Java 特点
- 面试高频:面向对象、平台无关性(”Write once, run anywhere” – JVM)、健壮性(垃圾回收机制)、多线程。
- 基本语法
- 数据类型:
- 基本数据类型:byte/short/int/long, float/double, char, boolean。要清楚它们的默认值和占用空间。
- 引用数据类型:类、接口、数组。
- 自动装箱与拆箱:Integer 和 int 的区别。Integer.valueOf() 的缓存机制(-128 ~ 127)。
- == 和 equals() 的区别:
- ==:对于基本类型比较值,对于引用类型比较内存地址。
- equals():默认行为也是比较地址,但一般会被重写(如 String、Integer)用于比较内容。
- 必须能手写一个 equals() 方法。
- String、StringBuilder、StringBuffer:
- String:不可变类,任何修改都会产生新对象。线程安全。
- StringBuffer:可变字符序列,线程安全(方法用 synchronized 修饰),效率较低。
- StringBuilder:可变字符序列,线程不安全,但效率最高。单线程环境下首选。
- 关键字:
- final:修饰变量(常量)、方法(不可重写)、类(不可继承)。
- static:修饰变量(类变量)、方法(类方法)、代码块、内部类。理解静态变量/方法属于类,而非实例。
- 面向对象编程(OOP) – 核心中的核心
- 三大特性:
- 封装:隐藏内部实现细节,提供公开的访问接口。通过 private 和 getter/setter 实现。
- 继承:extends,子类拥有父类的特性。Java是单继承。
- 多态:面试超高频。
- 编译时多态:方法重载。
- 运行时多态:方法重写。核心:父类引用指向子类对象 Parent obj = new Child();。调用方法时,实际执行的是子类重写后的方法。
- 抽象类 vs 接口:
- 抽象类:abstract,可以包含抽象方法和具体方法。有构造器,但不能实例化。
- 接口:interface。重点考察演变:
- Java 7:常量、抽象方法。
- Java 8:增加了默认方法 和静态方法。
- Java 9:增加了私有方法。
- 区别:
|
特性 |
抽象类 |
接口 |
|
成员变量 |
无限制 |
默认是 public static final |
|
方法 |
无限制 |
Java 8前只能是抽象方法 |
|
构造器 |
有 |
无 |
|
继承 |
单继承 |
多实现 |
|
设计目的 |
“is-a”关系,代码复用 |
“has-a”关系,定义行为契约 |
- 内部类:了解成员内部类、局部内部类、匿名内部类和静态内部的基本概念和用法。
二、Java 核心技术(面试主战场)
- 集合框架 – 必考
- 总体结构:分清 Collection 和 Map 两大体系。
- Collection:
- List(有序,可重复):
- ArrayList:基于动态数组。查询快,增删慢,线程不安全。
- LinkedList:基于双向链表。增删快,查询慢。
- Vector:古老的实现,线程安全,但效率低,已不推荐使用。
- Set(无序,不可重复):
- HashSet:基于 HashMap,无序。
- LinkedHashSet:维护插入顺序。
- TreeSet:基于红黑树,元素有序。
- Map(键值对):
- HashMap:面试绝对核心。
- 数据结构:JDK1.8 之前是数组+链表,1.8之后是数组+链表/红黑树。
- put 流程:1. 计算 key 的 hashCode。2. 高位运算和取模得到桶下标。3. 判断是否树化。必须能说个大致。
- 扩容机制:默认负载因子0.75,扩容为2倍。
- 线程不安全:在并发环境下可能形成循环链表。
- Hashtable:线程安全,但效率低,已淘汰。
- ConcurrentHashMap:线程安全的HashMap。必须掌握其原理:JDK1.7 采用分段锁,JDK1.8 采用 synchronized + CAS。
- LinkedHashMap:维护插入顺序或访问顺序(可用于实现LRU缓存)。
- 迭代器 Iterator:快速失败(fail-fast)和安全失败(fail-safe)机制。
- 异常处理
- 体系结构:Throwable -> Error(系统错误,不可处理) / Exception(异常,可处理)。
- Exception -> RuntimeException(运行时异常,非受检异常) / 其他(受检异常,必须处理)。
- try-catch-finally:finally 块一般用于释放资源,总是会执行(除非遇到 System.exit())。
- try-with-resources:Java 7 引入,自动关闭资源(资源必须实现 AutoCloseable 接口),推荐使用。
- 多线程与并发 – 难点和高薪敲门砖
- 线程创建:继承 Thread 类、实现 Runnable 接口(更推荐)、实现 Callable 接口(有返回值)。
- 线程状态:新建、就绪、运行、阻塞、等待、超时等待、终止。
- 线程同步:
- synchronized:核心关键字。修饰实例方法、静态方法、代码块。理解其锁的是对象(monitor)。
- volatile:保证变量的可见性和禁止指令重排,但不保证原子性。
- java.util.concurrent.locks.Lock:显式锁,如 ReentrantLock(可重入锁),比 synchronized 更灵活(可尝试非阻塞获取锁、可中断、公平锁等)。
- JUC包:
- Atomic 原子类:AtomicInteger,通过 CAS(Compare-And-Swap)实现无锁线程安全。
- ThreadLocal:为每个线程创建变量的副本,线程隔离。
- 线程池:必考。
- ThreadPoolExecutor 核心参数:核心线程数、最大线程数、存活时间、工作队列、拒绝策略。
- 常用线程池:Executors.newFixedThreadPool, newCachedThreadPool, newSingleThreadExecutor, newScheduledThreadPool。了解其适用场景和潜在问题。
- 并发容器:ConcurrentHashMap, CopyOnWriteArrayList。
- 同步工具类:CountDownLatch(闭锁), CyclicBarrier(栅栏), Semaphore(信号量)。
- JVM – 进阶必备
- 内存区域(运行时数据区):
- 程序计数器、Java虚拟机栈(栈帧、局部变量表)、本地方法栈。
- 堆:垃圾回收的主要区域。分为新生代(Eden, Survivor S0/S1)和老年代。
- 方法区:存储类信息、常量、静态变量。JDK1.8后称为元空间。
- 垃圾回收
- 判断对象是否可回收:引用计数法(Java未采用)、可达性分析算法(GC Roots)。
- 垃圾回收算法:标记-清除、标记-整理、复制算法。
- 垃圾收集器:了解 Serial, Parallel, CMS, G1, ZGC 等的特点和区别。
- 类加载机制:加载、验证、准备、解析、初始化。双亲委派模型(作用:避免类重复加载,保证核心类安全)。
- Java 新特性
- Java 8:
- Lambda 表达式:(parameters) -> expression。
- 函数式接口:@FunctionalInterface,如 Runnable, Comparator。
- Stream API:用于处理集合,提供过滤、映射、归约等操作。超级常用。
- Optional:优雅地处理 NullPointerException。
- 后续版本:了解模块化(Java 9)、局部变量类型推断 var(Java 10)、新的垃圾收集器等。
三、项目与生态(体现综合能力)
- 数据库与 SQL:JDBC,事务ACID特性,隔离级别,索引原理(B+树)。
- 常用框架:了解 Spring(IoC, AOP)、Spring MVC、MyBatis 的核心思想。
- 系统设计基础:了解 RESTful API、缓存(Redis)、消息队列(Kafka/RabbitMQ)的基本概念。
给面试者的提议
- 基础为王:不要好高骛远,把 Java 基础、集合、多线程的基础概念打牢。面试官很喜爱从基础问题深挖。
- 理解而非背诵:能说出 HashMap 的原理比能背出它的所有方法更重大。
- 结合项目:准备1-2个你熟悉的项目,思考项目中用到了哪些Java技术点,遇到了什么问题,如何解决的。例如:“我在项目里用 ThreadLocal 来存储用户信息,避免了参数在方法间传递”。
- 动手实践:
- 尝试手写单例模式(注意线程安全)、生产者-消费者模型。
- 看看 ArrayList、HashMap 的源码。
- 写一些 Demo 来验证多线程问题。
- 保持学习:关注 Java 社区和最新发展,体现出你的学习热烈。
这份清单超级全面,你可以用它来逐一检查自己的知识盲区。祝你面试顺利,拿到心仪的Offer!

© 版权声明
文章版权归作者所有,未经允许请勿转载。
收藏了,感谢分享