01
新技术
→ Java 8
lambda 表达式、Stream API、时间 API
→ Java 9
Jigsaw、Jshell、Reactive Streams
→ Java 10
局部变量类型推断、G1 的并行 Full GC、ThreadLocal 握手机制
→ Java 11
ZGC、Epsilon、增强 var
→ Spring 5
响应式编程
→ Spring Boot 2.0
→ HTTP/2
→ HTTP/3
02
性能优化
使用单例、使用 Future 模式、使用线程池
选择就绪、减少上下文切换、减少锁粒度、数据压缩、结果缓存
03
线上问题分析
→ dump 获取
线程 Dump、内存 Dump、gc 情况
→ dump 分析
分析死锁、分析内存泄露
→ dump 分析及获取工具
jstack、jstat、jmap、jhat、Arthas
→ 自己编写各种 outofmemory,stackoverflow 程序
HeapOutOfMemory、 Young OutOfMemory、
MethodArea OutOfMemory、ConstantPool OutOfMemory、
DirectMemory OutOfMemory、Stack OutOfMemory Stack OverFlow
→ Arthas
jvm 相关、class/classloader 相关、monitor/watch/trace 相关、
options、管道、后台异步任务
文档:https://alibaba.github.io/arthas/advanced-use.html
→ 常见问题解决思路
内存溢出、线程死锁、类加载冲突
→ 使用工具尝试解决以下问题,并写下总结
当一个 Java 程序响应很慢时如何查找问题
当一个 Java 程序频繁 FullGC 时如何解决问题
如何查看垃圾回收日志
当一个 Java 应用发生 OutOfMemory 时该如何解决
如何判断是否出现死锁
如何判断是否存在内存泄露
使用 Arthas 快速排查 Spring Boot 应用404/401问题
使用 Arthas 排查线上应用日志打满问题
利用 Arthas 排查 Spring Boot 应用 NoSuchMethodError
04
编译原理知识
→ 编译与反编译
→ Java 代码的编译与反编译
→ Java 的反编译工具
javap 、jad 、CRF
→ 即时编译器
→ 编译过程
词法分析,语法分析(LL 算法,递归下降算法,LR 算法)
语义分析,运行时环境,中间代码,代码生成,代码优化
05
操作系统知识
→ Linux 的常用命令
→ 进程间通信
→ 进程同步
生产者消费者问题、哲学家就餐问题、读者写者问题
→ 缓冲区溢出
→ 分段和分页
→ 虚拟内存与主存
→ 虚拟内存管理
→ 换页算法
06
数据库知识
→ MySQL 执行引擎
→ MySQL 执行计划
如何查看执行计划,如何根据执行计划进行 SQL 优化
→ 索引
Hash 索引、B 树索引(B+树、和B树、R树)
普通索引、唯一索引
覆盖索引、最左前缀原则、索引下推
→ SQL 优化
→ 数据库事务和隔离级别
事务的隔离级别、事务能不能实现锁的功能
→ 数据库锁
行锁、表锁、使用数据库锁实现乐观锁、
→ 连接
内连接,左连接,右连接
→ 数据库主备搭建
→ binlog
→ redolog
→ 内存数据库
h2
→ 分库分表
→ 读写分离
→ 常用的 NoSql 数据库
redis、memcached
→ 分别使用数据库锁、NoSql 实现分布式锁
→ 性能调优
→ 数据库连接池
07
数据结构与算法知识
→ 简单的数据结构
栈、队列、链表、数组、哈希表、
栈和队列的相同和不同之处
栈通常采用的两种存储结构
→ 树
二叉树、字典树、平衡树、排序树、
B 树、B+ 树、R 树、多路树、红黑树
→ 堆
大根堆、小根堆
→ 图
有向图、无向图、拓扑
→ 排序算法
稳定的排序:冒泡排序、插入排序、鸡尾酒排序、桶排序、计数排序、归并排序、原地归并排序、二叉排序树排序、鸽巢排序、基数排序、侏儒排序、图书馆排序、块排序
不稳定的排序:选择排序、希尔排序、Clover 排序算法、梳排序、堆排序、平滑排序、快速排序、内省排序、耐心排序
各种排序算法和时间复杂度
→ 两个栈实现队列,和两个队列实现栈
→ 深度优先和广度优先搜索
→ 全排列、贪心算法、KMP 算法、hash 算法
→ 海量数据处理
分治,hash 映射,堆排序,双层桶划分,Bloom Filter,bitmap,数据库索引,mapreduce 等。
08
大数据知识
→ Zookeeper
基本概念、常见用法
→ Solr,Lucene,ElasticSearch
在 linux 上部署 solr,solrcloud,新增、删除、查询索引
→ Storm,流式计算,了解 Spark,S4
在 linux 上部署 storm,用 zookeeper 做协调,运行 storm hello world,local 和 remote 模式运行调试 storm topology。
→ Hadoop,离线计算
HDFS、MapReduce
→ 分布式日志收集 flume,kafka,logstash
→ 数据挖掘,mahout
09
网络安全知识
→ XSS
XSS 的防御
→ CSRF
→ 注入攻击
SQL 注入、XML 注入、CRLF 注入
→ 文件上传漏洞
→ 加密与解密
对称加密、非对称加密、哈希算法、加盐哈希算法
MD5,SHA1、DES、AES、RSA、DSA
彩虹表
→ DDOS攻击
DOS 攻击、DDOS 攻击
memcached 为什么可以导致 DDos 攻击、什么是反射型 DDoS
如何通过 Hash 碰撞进行 DOS 攻击
→ SSL、TLS,HTTPS
→ 用 openssl 签一个证书部署到 apache 或 nginx