一、Java底层核心机制
🔥 问题1:谈谈对Java的理解?
📌 核心技术特性
-
平台无关性
-
"一次编译,到处运行":通过JVM实现跨平台兼容
-
字节码(.class)作为中间语言,屏蔽操作系统差异
-
-
自动内存管理(GC)
-
对比C++手动内存管理,避免内存泄漏风险
-
不同GC算法特点(标记-清除 vs 复制算法 vs G1)
-
-
语言特性
// Lambda表达式示例 List<String> list = Arrays.asList("Java", "Spring", "JVM"); list.forEach(s -> System.out.println(s.toUpperCase()));
-
泛型:类型安全集合操作(
List<String>
vs 原始类型) -
反射:动态获取类信息(
Class.forName()
应用场景)
-
-
面向对象三大特性
特性 实践案例 设计意义 封装 私有字段+公有getter/setter 数据访问控制 继承 Spring模板方法模式实现 代码复用+扩展 多态 List接口的不同实现类 接口抽象化编程 -
核心类库
-
JUC并发包:
ReentrantLock
vssynchronized
性能对比 -
NIO网络编程模型:Selector多路复用机制
-
🔥 问题2:如何实现"Compile Once, Run Anywhere"?
实现原理拆解
graph LRA[Java源码] --> B{编译期}B --> C[字节码文件.class]C --> D{运行期}D --> E[Windows JVM]D --> F[Linux JVM]D --> G[MacOS JVM]E --> H[机器指令]F --> HG --> H
关键技术环节
-
编译阶段
-
使用
javac
生成标准化字节码 -
反编译验证:
javap -c Demo.class > Demo.txt
-
-
运行阶段
-
JVM解释器逐行解释字节码
-
JIT编译器热点代码优化(分层编译策略)
-
🔥 问题3:JVM如何加载.class文件?
加载过程全解析
-
类加载器体系
// 双亲委派机制代码示例 ClassLoader cl = Thread.currentThread().getContextClassLoader(); while(cl != null){System.out.println(cl.getClass().getName());cl = cl.getParent(); }
-
启动类加载器(Bootstrap)→ 扩展类加载器(Extension)→ 应用类加载器(App)
-
-
运行时数据区
-
执行引擎关键机制
-
解释执行 vs 编译执行
-
Native方法栈与JNI交互原理
-
🔥 问题4:Java反射机制深度剖析
核心API实战
// 反射修改私有字段示例
public class SecretHolder {private String secret = "initial";
}Class<?> clazz = Class.forName("com.example.SecretHolder");
Object instance = clazz.newInstance();Field field = clazz.getDeclaredField("secret");
field.setAccessible(true); // 突破访问限制
field.set(instance, "modified");System.out.println(field.get(instance)); // 输出:modified
反射应用场景
-
Spring IoC容器依赖注入
-
MyBatis Mapper接口动态代理
-
JUnit测试框架用例发现
二、Spring框架高频考点
🌟 问题1:什么是Spring?
核心设计理念
graph TDA[Spring核心] --> B[DI]A --> C[AOP]B --> D[松耦合]C --> E[横切关注点分离]D --> F[可测试性]E --> F
四大关键策略解析
-
POJO编程模型
-
对比EJB的侵入式编程
-
示例:普通Java类通过注解成为Spring Bean
-
-
依赖注入实践
// 构造器注入 vs Setter注入 @Service public class UserService {private final UserRepository repo;@Autowiredpublic UserService(UserRepository repo) {this.repo = repo;} }
-
AOP实现原理
-
JDK动态代理与CGLIB字节码增强对比
-
切面执行流程:Before → Around → After
-
-
模板方法模式应用
-
JdbcTemplate简化数据库操作
-
RestTemplate声明式HTTP调用
-