Java期末复习提高篇
多线程与并发
理解线程的创建方式:继承Thread类或实现Runnable/Callable接口。
掌握线程同步机制:synchronized关键字、ReentrantLock、volatile变量。
熟悉线程池的使用:通过ExecutorService创建固定或缓存线程池。
// 示例:线程池任务提交 ExecutorService executor = Executors.newFixedThreadPool(4); executor.submit(() -> System.out.println("Task executed by thread pool")); executor.shutdown();集合框架优化
分析ArrayList与LinkedList的适用场景,理解扩容机制。
掌握HashMap的底层原理:哈希冲突解决、红黑树优化。
使用Collections工具类进行排序、线程安全包装。
// 示例:HashMap的并发安全处理 Map<String, Integer> syncMap = Collections.synchronizedMap(new HashMap<>());JVM内存管理
理解堆、栈、方法区的内存划分与垃圾回收算法(如G1、CMS)。
熟悉常见OOM错误场景:堆溢出、栈溢出、元空间溢出。
通过JVM参数调优:-Xms、-Xmx、-XX:MaxMetaspaceSize。
设计模式实践
单例模式的双重检查锁定实现:
public class Singleton { private static volatile Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } }工厂模式与Spring IoC容器的结合理解。
反射与动态代理
通过反射获取类信息、调用私有方法:
Class<?> clazz = Class.forName("com.example.Demo"); Method method = clazz.getDeclaredMethod("privateMethod"); method.setAccessible(true); method.invoke(clazz.newInstance());掌握JDK动态代理与CGLIB的实现差异。
网络编程进阶
NIO的非阻塞模型:理解Selector、Channel、Buffer的核心组件。
实现简单的HTTP服务器:处理多路复用IO事件。
性能调优工具
使用jstack分析线程死锁。
通过jmap导出堆内存快照,结合MAT工具分析内存泄漏。jstat监控GC频率与耗时。
单元测试与调试
JUnit 5的进阶用法:参数化测试、断言组合。
Mockito模拟依赖对象的行为:
List<String> mockList = Mockito.mock(List.class); Mockito.when(mockList.get(0)).thenReturn("Mocked");函数式编程
Lambda表达式的简化写法:
List<Integer> numbers = Arrays.asList(1, 2, 3); numbers.stream().filter(n -> n % 2 == 0).forEach(System.out::println);掌握Stream API的聚合操作:map、reduce、collect。
综合案例分析
结合数据库事务与并发控制,实现高一致性场景(如库存扣减)。
设计分布式ID生成器:雪花算法(Snowflake)的实现原理。
