一、基础语法与核心机制
1.1 数据类型与内存分配
Java数据类型分为基本类型(8种)和引用类型。基本类型存储在栈内存,引用类型对象存储在堆内存。例如:
int num = 10; // 基本类型,栈存储String str = "Hello"; // 引用类型,堆存储
面试常考点:自动装箱拆箱的陷阱(如Integer a=127与Integer b=127的比较)、字符串常量池机制。建议掌握==与equals()的区别,以及String、StringBuilder、StringBuffer的性能差异。
1.2 异常处理体系
Java异常继承自Throwable,分为Error(JVM错误)和Exception(程序可处理异常)。关键点:
- 运行时异常(
RuntimeException)无需捕获 - 编译时异常必须处理
- 自定义异常需继承
Exception或RuntimeExceptiontry {// 可能抛出异常的代码} catch (IOException e) {e.printStackTrace();} finally {// 必执行代码块}
二、面向对象核心特性
2.1 封装、继承与多态
封装通过访问修饰符实现(private/protected/public)。继承使用extends关键字,注意Java单继承限制。多态的实现方式:
- 方法重写(Override)
- 接口实现
- 父类引用指向子类对象
class Animal {public void sound() { System.out.println("Animal sound"); }}class Dog extends Animal {@Overridepublic void sound() { System.out.println("Bark"); }}// 多态示例Animal animal = new Dog();animal.sound(); // 输出"Bark"
2.2 接口与抽象类
接口(interface)与抽象类(abstract class)的区别:
| 特性 | 接口 | 抽象类 |
|——————-|—————————————|———————————|
| 方法实现 | Java8+支持默认方法 | 可包含具体方法 |
| 变量定义 | 只能是public static final | 无限制 |
| 继承/实现 | 多实现 | 单继承 |
三、集合框架深度解析
3.1 List接口实现类
ArrayList:基于动态数组,查询快(O(1)),增删慢(O(n))LinkedList:双向链表,增删快(O(1)),查询慢(O(n))Vector:线程安全,性能较差
3.2 Map接口实现类
HashMap:哈希表实现,允许null键值TreeMap:红黑树实现,按键排序ConcurrentHashMap:分段锁技术,线程安全
关键面试点:HashMap的扩容机制(负载因子0.75)、哈希冲突解决(链表+红黑树)、线程安全问题。
四、JVM核心原理
4.1 内存模型
JVM内存分为:
- 程序计数器:线程私有,存储字节码指令地址
- 虚拟机栈:线程私有,存储局部变量表等
- 本地方法栈:Native方法调用
- 堆:所有线程共享,存储对象实例
- 方法区:存储类信息、常量池等
4.2 垃圾回收机制
常见GC算法:
- 标记-清除:产生内存碎片
- 复制算法:适合新生代(Eden:Survivor=8
1) - 标记-整理:适合老年代
调优参数示例:
-Xms256m -Xmx1024m -XX:NewRatio=2
五、并发编程实战
5.1 线程创建方式
- 继承
Thread类 - 实现
Runnable接口 - 使用
Callable+FutureTask(支持返回值)ExecutorService executor = Executors.newFixedThreadPool(5);Future<Integer> future = executor.submit(new Callable<Integer>() {@Overridepublic Integer call() {return 42;}});
5.2 同步机制
synchronized:方法锁/代码块锁ReentrantLock:可中断、可公平锁- 条件变量:
wait()/notify()
5.3 并发集合
ConcurrentHashMap:分段锁CopyOnWriteArrayList:写时复制BlockingQueue:生产者消费者模型
六、设计模式应用
6.1 单例模式实现
// 双重检查锁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 工厂模式分类
- 简单工厂:一个工厂类创建所有产品
- 工厂方法:每个产品对应一个工厂
- 抽象工厂:创建产品族
七、备战建议
- 系统学习:按照”基础语法→核心类库→并发编程→JVM原理→设计模式”的路径学习
- 代码实践:每个知识点配套编写Demo代码
- 模拟面试:使用LeetCode、牛客网等平台进行专项训练
- 项目复盘:准备2-3个能体现技术深度的项目案例
- 软技能提升:练习清晰表达技术思路,掌握STAR法则
建议每天投入2-3小时进行专题突破,重点攻克并发编程、JVM调优等高阶知识点。面试前可参考《Effective Java》《Java并发编程实战》等经典书籍进行查漏补缺。