进阶篇部分是对 Java 基础篇的补充,这部分内容是我们熟读大数据框架的源码必备的技能,也是我们在面试高级职位的时候的面试重灾区。
JVM
- JVM 内存结构
class 文件格式、运行时数据区:堆、栈、方法区、直接内存、运行时常量池
- 堆和栈区别
Java 中的对象一定在堆上分配吗?
- Java 内存模型
计算机内存模型、缓存一致性、MESI 协议、可见性、原子性、顺序性、happens-before、内存屏障、synchronized、volatile、final、锁
- GC 算法:标记清除、引用计数、复制、标记压缩、分代回收、增量式回收、GC 参数、对象存活的判定、垃圾收集器(CMS、G1、ZGC、Epsilon)
- JVM 参数及调优
-Xmx、-Xmn、-Xms、Xss、-XX:SurvivorRatio、-XX:PermSize、-XX:MaxPermSize、-XX:MaxTenuringThreshold
- Java 对象模型
oop-klass、对象头
- HotSpot
即时编译器、编译优化
- 虚拟机性能监控与故障处理工具
jps、jstack、jmap、jstat、jconsole、 jinfo、 jhat、javap、btrace、TProfiler、Arthas
- 类加载机制
classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(jboss modules、osgi、jigsaw)
- 用户空间以及内核空间
Linux 网络 I/O 模型:阻塞 I/O (Blocking I/O)、非阻塞 I/O (Non-Blocking I/O)、I/O 复用(I/O Multiplexing)、信号驱动的 I/O (Signal Driven I/O)、异步 I/O
灵拷贝(ZeroCopy)
BIO 与 NIO 对比
缓冲区 Buffer
通道 Channel
反应堆
选择器
AIO
RPC
- 用户空间以及内核空间
- 常用的 RPC 框架:Thrift、Dubbo、SpringCloud
RPC 的应用场景和与消息队列的差别
- 常用的 RPC 框架:Thrift、Dubbo、SpringCloud
网友评论