堆、栈、方法区、直接内存、堆和栈区别
内存可见性、重排序、顺序一致性、volatile、锁、final
内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定
oop-klass、对象头
即时编译器、编译优化
classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(jbossmodules、osgi、jigsaw)
jps,jstack,jmap、jstat,jconsole,jinfo,jhat,javap,btrace、TProfiler
编译与反编译
javac、javap、jad、CRF
Java基础知识
String、Integer、Long、Enum、BigDecimal、ThreadLocal、ClassLoader&URLClassLoader、ArrayList&LinkedList、HashMap&LinkedHashMap&TreeMap&CouncurrentHashMap、HashSet&LinkedHashSet&TreeSet
JDK6和JDK7中substring的原理及区别、
replaceFirst、replaceAll、replace区别、
String对“+”的重载、
String.valueOf和Integer.toString的区别、
字符串的不可变性
Integer的缓存机制
transient、instanceof、volatile、synchronized、final、static、const原理及用法。
常用集合类的使用
ArrayList和LinkedList和Vector的区别
SynchronizedList和Vector的区别
HashMap、HashTable、ConcurrentHashMap区别
apache集合处理工具类的使用
不同版本的JDK中HashMap的实现的区别以及原因
枚举的用法、枚举与单例、Enum类
bio、nio和aio的区别、三种IO的用法与原理、netty
反射与工厂模式、java.lang.reflect.*
什么是序列化与反序列化、为什么序列化
序列化底层原理
序列化与单例模式
protobuf
为什么说序列化并不安全
元注解、自定义注解、Java中常用注解使用、注解与反射的结合
什么是Java消息服务、JMS消息传送模型
java.lang.management.*、javax.management.*
泛型与继承
类型擦除
泛型中KTVE
object等的含义、泛型各种用法
junit、mock、mockito、内存数据库(h2)
java.lang.util.regex.*
commons.lang,commons.*...guava-librariesnetty
异常类型、正确处理异常、自定义异常
解决乱码问题、常用编码方式
Java中语法糖原理、解语法糖
Java并发编程
Thread、Runnable、Callable、ReentrantLock、ReentrantReadWriteLock、Atomic*、Semaphore、CountDownLatch、、ConcurrentHashMap、Executors
自己设计线程池、submit()和execute()
死锁、死锁如何排查、Java线程调度、线程安全和内存模型的关系
happens-before、编译器指令重排和CPU指令重
synchronized是如何实现的?
synchronized和lock之间关系
不使用synchronized如何实现一个线程安全的单例
守护线程和非守护线程的区别以及用法
二、进阶篇Java底层知识
用位运算实现加、减、乘、除、取余
设计模式
单例、策略、工厂、适配器、责任链。
网络编程
三次握手与四次关闭、流量控制和拥塞控制、OSI七层模型、tcp粘包与拆包
cookie被禁用,如何实现session
实现客户端缓存功能,支持返回304实现可并发下载一个文件使用线程池处理客户端请求使用nio处理客户端请求支持简单的rewrite规则上述功能在实现的时候需要满足“开闭原则”
框架知识
SpringBoot的starter原理,自己实现一个starter
应用服务器
工具
三、高级篇新技术
lambda表达式、StreamAPI、
Jigsaw、Jshell、ReactiveStreams
局部变量类型推断、G1的并行FullGC、ThreadLocal握手机制
响应式编程
性能优化
使用单例、使用Future模式、使用线程池、选择就绪、减少上下文切换、减少锁粒度、数据压缩、结果缓存
线上问题分析
线程Dump、内存Dump、gc情况
分析死锁、分析内存泄露
HeapOutOfMemory、YoungOutOfMemory、MethodAreaOutOfMemory、ConstantPoolOutOfMemory、DirectMemoryOutOfMemory、StackOutOfMemoryStackOverFlow
内存溢出、线程死锁、类加载冲突
当一个Java程序响应很慢时如何查找问题、
当一个Java程序频繁FullGC时如何解决问题、
如何查看垃圾回收日志、
当一个Java应用发生OutOfMemory时该如何解决、
如何判断是否出现死锁、
如何判断是否存在内存泄露
编译原理知识
操作系统知识
数据库知识
如何查看执行计划,如何根据执行计划进行SQL优化
事务的隔离级别、事务能不能实现锁的功能
行锁、表锁、使用数据库锁实现乐观锁、
h2
redis、memcached
数据结构与算法知识
栈、队列、链表、数组、哈希表、
二叉树、字典树、平衡树、排序树、B树、B+树、R树、多路树、红黑树
大数据知识
基本概念、常见用法
在linux上部署solr,solrcloud,,新增、删除、查询索引
在linux上部署storm,用zookeeper做协调,运行stormhelloworld,local和remote模式运行调试stormtopology。
HDFS、MapReduce
网络安全知识
XSS的防御
SQL注入、XML注入、CRLF注入
MD5,SHA1、DES、AES、RSA、DSA
memcached为什么可以导致DDos攻击、什么是反射型DDoS
四、架构篇分布式
数据一致性、服务治理、服务降级
2PC、3PC、CAP、BASE、可靠消息最终一致性、最大努力通知、TCC
服务注册、服务发现,服务治理
怎样打造一个分布式数据库、什么时候需要分布式数据库、mycat、otter、HBase
mfs、fastdfs
缓存一致性、缓存命中率、缓存冗余
微服务
SOA、康威定律
高并发
ActiveMQ
监控
CPU、内存、磁盘I/O、网络I/O等
进程监控、语义监控、机器资源监控、数据波动
日志、埋点
负载均衡
tomcat负载均衡、Nginx负载均衡
DNS
DNS原理、DNS的设计
CDN
数据一致性
五、扩展篇云计算
IaaS、SaaS、PaaS、虚拟化技术、openstack、Serverlsess
搜索引擎
Solr、Lucene、Nutch、Elasticsearch
权限管理
Shiro
区块链
哈希算法、Merkle树、公钥密码算法、共识算法、Raft协议、Paxos算法与Raft算法、拜占庭问题与算法、消息认证码与数字签名
挖矿、共识机制、闪电网络、侧链、热点问题、分叉
人工智能
数学基础、机器学习、人工神经网络、深度学习、应用场景。