Java进阶

1. JVM进阶

  1. JVM 基础知识、Java 字节码技术、JVM 类加载器、JVM 内存模型、JVM 启动参数详解;

  2. JDK 内置命令行工具、JDK 内置图形界面工具、JDWP 简介、JMX 与相关工具;

  3. 常见的 JVM GC 算法(Parallel GC/CMS GC/G1 GC)基本原理和特点;

  4. 新一代 GC 算法(Java11 ZGC/Java12 Shenandoah) 和 Oracle GraalVM;

  5. GC 日志解读与分析、JVM 的线程堆栈等数据分析、内存 dump 和内存分析工具;

  6. fastThread 相关工具以及面临复杂问题时的几个高级工具的使用;

  7. JVM 问题排查分析的常用手段、性能调优的最佳实践经验等;

  8. JVM 相关的常见面试问题必知必会、全面分析。

2. NIO 技术

  1. 同步/异步、阻塞/非阻塞、BIO、NIO、AIO、Reactor/Proactor;

  2. ByteBuff/Acceptor/Channel/Handler、NioEventLoopGroup/EventLoop、bossGroup/workerGroup;

  3. Netty 的启动和执行过程、线程模型、事件驱动、服务端和客户端的使用方式;

  4. 常见的 API Gateway/HTTP Server、SEDA 原理、业务 API 网关的功能和结构;

  5. Throughout/TPS/QPS、Latency/P99/P95/P90、ApacheBench/Wrk/JMeter/LoadRunner。

3. 并发编程

  1. Java 多线程基础:线程、锁、synchronized、volatile/final、sleep/await/notify/fork/join;

  2. Java 并发包基础:线程池 Executor、AQS/CAS、Atomic 原子操作、Lock/ReadWriteLock/Condition、Callable/Future;

  3. Java 并发容器与工具:BlockingQueue/CopyOnWriteList/ConcurrentHashMap、CountDownLatch/CyclicBarrier/Semaphore等;

  4. 其他:万金油 ThreadLocal,化繁为简 Java8 parallelStream 等。

4. 开发框架

  1. Spring 技术体系(Spring Core/Web/MVC/Data/Messaging、Spring Boot 等);

  2. ORM 技术体系(JPA、Hibernate、MyBatis 等)。

5. 系统性能优化

  1. 系统可观测性(日志、调用链跟踪、指标度量),80/20 优化原则,CPU、内存、磁盘/网络 IO 等分析;

  2. MySQL 的锁、事务、索引、并发级别、死锁、执行计划、慢 SQL 统计、缓存失效、参数优化;

  3. 库表设计优化,引擎选择,表结构优化设计,列类型选择,索引设计,外键等;

  4. SQL 查询优化,索引选择,连接优化,聚合查询优化,Union 优化,子查询优化,条件优化等;

  5. 场景分析,主键生成与优化,高效分页,快速导入导出数据,解决死锁问题等。

6. 超越分库分表

  1. MySQL 主从复制,Binlog,Row/Statement 模式,主从切换,读写分离,数据库扩容;

  2. 数据库垂直拆分与水平拆分,分库分表,分布式主键,分表算法,SQL 限制,数据迁移,实时同步;

  3. Spring 动态切换数据库,TDDL/Sharding-JDBC 框架,MyCat/Sharding-Proxy 中间件;

  4. 数据库拆分的最佳实践,分布式事务最佳实践,多租户的最佳实践。

7. 分布式服务

  1. 基础知识:RPC、通信与数据协议、WebService、Hessian、REST、gRPC、Protocol Buffers 等;

  2. 服务化:服务治理、配置管理、注册发现、服务分组、版本管理、集群管理、负载均衡、限流与降级熔断等;

  3. 框架:Apache Dubbo 的功能与原理分析,Spring Cloud 体系,具体的案例实践;

  4. 微服务:微服务架构的 6 个最佳实践,从微服务到服务网格、云原生的介绍。

8. 分布式缓存

  1. 缓存的应用场景,缓存加载策略与失效策略,缓存与数据库同步等;

  2. 缓存预热、缓存失效、缓存击穿、缓存雪崩、多级缓存、缓存与 Spring+ORM 框架集成;

  3. 缓存中间件,Redis(几种常用数据结构、分布式锁、Lua 支持、集群),Hazelcast(Java 数据结构、内存网格、事务支持、集群);

  4. 缓存的应用场景,排行数据展示,分布式 ID 生成,Session 共享,热点账户操作等。

9. 分布式消息

  1. 消息队列的基本知识,Broker 与 Client,消息模式(点对点、发布订阅),消息协议(STOMP、JMS、AMQP、OpenMessaging 等),消息 QoS(最多一次、最少一次、有且仅有一次),消息重试,延迟投递,事务性,消息幂等与去重;

  2. 消息中间件:ActiveMQ 的简单入门,Kafka 的基本功能与使用,高可用(集群、分区、副本)、性能,RabbitMQ 和 RocketMQ,Pulsar 的简单介绍;

  3. 消息的 4 个主要功能,搭建一个 Kafka 集群,实现常用的消息发送、消息消费功能;

  4. 典型使用场景,使用 MQ 实现交易订单的处理,动手实现一个简化版的消息队列。

10. 业务系统重构

  1. 分析系统现状,给出明确的各项指标,了解各方对指标的期望和差距;

  2. 给出多个可选的改造或重做方案,明确各方案的优缺点,提供决策依据;

  3. 方案上的适当妥协,各方达成一致,快速推动重构工作启动和展开;

  4. 细化具体的方案细节,形成路径,争取足够的资源,恰当的时间窗口;

  5. 小步快跑,迅速取得阶段性成果,不影响业务整体的规划和发展;

  6. 保持业务连续性,多做监控、兼容和特性开关,给改造加上保险丝和缓冲区;

  7. 及时评估改进进展,更新方案和路线、资源和时间,推动改造顺利进行;

  8. 复盘总结相关经验,提出更多建议和改进办法,实现经验分享,方法复用。

11. 架构师修炼之道

  1. 分享我个人的成长第一手经验,升级打怪,成为架构师、技术专家、技术总监;

  2. 六个硬能力:技术能力、设计能力、抽象能力、管理能力、结构化思考能力、系统化分析能力;

  3. 七个软实力:大局观能力、沟通协作能力、持续学习能力、关注力、探索力、决策力、自我驱动力。

最后更新于