1 Java基础
1.1 Collection和Map
- 掌握Collection和Map的继承体系。Java Collection与map
- 掌握ArrayList、LinkedList、Vector、Stack、PriorityQueue、HashSet、LinkedHashSet、TreeSet、HashMap、LinkedHashMap、TreeMap、WeakHashMap、EnumMap、TreeMap(红黑树)、HashTable的特点和实现原理。
- 掌握CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMap的实现原理和适用场景。
- Java并发容器
1.2 IO
- 掌握InputStream、OutputStream、Reader、Writer的继承体系:
Java IO ,
Java 压缩 ,
Java XML与JSON,
Java序列化 - 掌握字节流(FileInputStream、DataInputStream、BufferedInputStream、FileOutputSteam、DataOutputStream、BufferedOutputStream)和 字符流(BufferedReader、InputStreamReader、FileReader、BufferedWriter、OutputStreamWriter、PrintWriter、FileWriter),并熟练运用。
- 掌握NIO实现原理及使用方法。
IO模式
Java NIO - Netty原理 这可能是目前最透彻的Netty原理架构解析
- IO理论 高性能网络编程
1.3 异常
- 掌握Throwable继承体系。深入理解java异常处理机制
- 掌握异常工作原理。
- 了解常见受检异常(比如FileNotFoundException)、非受检异常(比如NullPointerException)和错误(比如IOError)。
1.4 多线程
线程池的实现原理、参数配置、平滑关机
了解Executors可以创建的三种 (JAVA8增加了一种,共四种)线程池的特点及适用范围。
Java多线程5: 线程池掌握多线程同步机制,并熟练运用。
- CPU上下文切换、内核态和用户态
- CPU、操作系统锁机制与Java编译优化(指令重排与内存栅栏)
- 线程生命周期
- volatile
- monitor与Synchronized: 实现原理、偏向锁-轻型锁-重型锁
- Java中的偏向锁、轻量级锁、重量级锁的特点和跃升过程
- AQS
- CAS
- RetreentLock、ReadAndWriteLook
- CountDownLatch、Atomic、Semaphore
- Fork/Join
- 阻塞队列
- Disruptor队列
- 生产者消费者模式
- Java多线程2: Lock、信号量、原子量与队列
- Java多线程4: 同步锁与Java线程同步方法比较
- Java多线程6: Java阻塞队列与生产者消费者模式
- Java多线程7: 分段锁
- CompletableFuture 、深入解读CompletableFuture源码与原理
- Quartz定时任务内部实现
- Guava并发包
并发包
1.5 Socket
- 掌握Socket通信原理。Java Socket
- 熟练使用多线程结合Socket进行编程。
1.6 Stream API
- Lambda 实现原理
- 懒加载实现原理
2 Java虚拟机
2.1 JVM内存区域划分
- 掌握JMM分区: 程序计数器、堆、虚拟机栈、本地方法栈、方法区(JAVA8已移除)、元空间(JAVA8新增)的作用及基本原理。
- 掌握堆的划分:新生代(Eden、Survivor1、Survivor2)和老年代的作用及工作原理。
- 垃圾回收:常见算法与策略、CMS GC、G1
- [重点] 掌握JVM内存参数设置及调优
- Eden与Survivor分配
- JStack、Jstat、vmstat、jmap、jutil
- 线上排查
2.2 类加载
- 掌握类的加载阶段:加载、链接(验证、准备、解析)、初始化、使用、卸载。
- 掌握类加载器分类及其应用:启动类加载器、扩展类加载器、应用程序类加载器、自定义加载器。
- 双亲委派
- 动态加载
- CodeGen
3 J2EE
- 掌握JSP内置对象、动作及相关特点和工作原理。JSP
- 掌握Servlet的特点和工作原理。 Servlet
- Spring: IOC和AOP实现原理(控制反转和动态代理)。 Spring
- MVC框架(Spring MVC,Struts等)的工作原理,并熟练运用。 Struts2 Spring MVC工作原理、事务
- Spring MVC: 线程安全、请求原理、事务与传递、异步
- ORM框架(Hibernate,MyBatis等)的工作原理,并熟练运用。 Hibernate基本概念 Hibernate关联关系XML实现 Hibernate注解 MyBatis原理与缓存
4 数据结构与算法
- 掌握线性表和树的特点并熟练运用: B-Tree节点结构
- 掌握常用排序和查找算法:插入排序(直接插入排序、希尔排序)、选择排序(直接选择排序、堆排序)、交换排序(冒泡排序、快速排序)、归并排序,顺序查找、二分查找、二叉查找树、哈希查找。广度优先搜索(队列实现)
- 熟练运用常见排序和查找算法思想解决编程问题: Top K问题、大数组查找TopN、数组去重、跳台阶问题、不定长字符串转定长字符串
- 了解几大基本算法:贪心算法、分治策略、动态规划、蓄水池抽样
- LeetCode
5 计算机网络
- 掌握网络的分层结构,及每层的功能特点。计算机网络基础知识
- Http报文、状态码
- 掌握TCP/IP的通信原理(三次握手、四次挥手)
- HTTPS,
加密、验签与证书 - Https创建连接的过程
6 数据库
- 掌握复杂的SQL语句编写。MySQL 数据库设计
- 掌握数据库的优化(SQL层面和表设计层面)。MySQL 性能优化的最佳20多条经验
- MySQL
- InnoDB数据结构、索引
- InnoDB与MyASIM区别
- 行级锁与表级锁
- MySQL集群
- 集群
- 读写分离与实现
- 双写
- 熟悉高并发、大数据情况下的数据库开发。
7 Web技术
8 设计模式
- 熟悉常见的设计模式。
- 会将设计模式理论应用到实际开发中。
9 Linux
- 熟练运用Linux常见命令。
- 熟悉Linux操作系统基本概念及特点。
- 熟悉Shell脚本。
10 操作系统
- 掌握操作系统的进程管理。
- 了解操作系统的I/O。
- Linux系统调优: 命令与方法
- 用户态与核心态
11 正则表达式
- 掌握常见正则表达式符号。
- 熟练运用正则表达式解决实际问题(比如匹配电话号码、邮箱、域名等)。常用的正则表达式与Java中的运用
12 安全
13 分布式
- 分布式事务
- 分布式锁:基于DB事务、基于Redis、基于ZooKeeper
- ACID
- CAP、BASE
- TCC
- 微服务
- Nginx: 原理、负载均衡算法、动态切换
- 消息中间件 Kafka、ActiveMQ
- 分布式缓存及其集群: 雪崩、穿透、Master选举切换
- Redis:集群、并发竞争问题、事务与CAS操作、持久化、订阅、缓存失败策略
- Memcached: 数据结构
- ZooKeeper: 数据结构、集群、Master选举切换
- RPC:WebService: SOAP、UUDI、WSDL等
- 服务治理SOA框架的使用与原理
- Dubbo: 架构、雪崩、服务异常与逻辑异常追踪、服务降级、服务发现
- 分库分表
- 常见分库分表方案:水平分表与垂直分表的业务设计
- 扩容与迁移
- MyCat
- Sharding-JDBC
- 唯一主键生成器
- 算法: 一致性hash、轮询、Paxos、fast leader、raft
- 系统设计
- 高可用
- 可扩展
- 限流(滑动窗口、漏桶、令牌桶)
- 幂等
- 常见场景
- 电商
- Docker
14 大数据
- 复杂SQL语句
- 实时计算: 基数算法
- Storm 原理
- Hadoop
- NameNode动态切换
- MapReduce与shuffle、数据倾斜问题
- Yarn
- HBase
- Kylin
- Hive
- Lucene、solar、ElasticSearch
- 爬虫
- 推荐算法:协同过滤
- 画像系统原理
14.1 Flink
14.2 ES
14.3 Kafka
15 机器学习
16 其他
- Quartz 原理:调度与分布式
- 缓存: Ehcache、Spring Data cache、Guava-cache
- LRUCache
- FastLRUCache
- 连接池:Druid
- 虐菜
- 软件工程基本知识
- CORBAR
- WebSocket
- Tomcat实现原理
