Java如何实现的平台无关性的
JVM还支持哪些语言(Kotlin、Groovy、JRuby、Jython、Scala)
值传递、引用传递
为什么说Java中只有值传递
什么是多态
方法重写与重载
Java的继承与实现
Java的继承与组合
构造函数与默认构造函数
类变量、成员变量和局部变量
成员变量和方法作用域
7种基本数据类型:整型、浮点型、布尔型、字符型
整型中byte、short、int、long的取值范围
什么是浮点型?
什么是单精度和双精度?
为什么不能用浮点型表示金额?
什么是包装类型、什么是基本类型、什么是自动拆装箱
Integer的缓存机制
字符串的不可变性
JDK 6和JDK 7中substring的原理及区别
replaceFirst、replaceAll、replace区别、
String对“+”的重载
字符串拼接的几种方式和区别
String.valueOf和Integer.toString的区别
switch对String的支持
字符串池、常量池(运行时常量池、Class常量池)、intern
transient、instanceof、volatile、synchronized、final、static、const 原理及用法。
常用集合类的使用
ArrayList和LinkedList和Vector的区别
SynchronizedList和Vector的区别
HashMap、HashTable、ConcurrentHashMap区别
Set和List区别?
Set如何保证元素不重复?
Java 8中stream相关用法
apache集合处理工具类的使用
不同版本的JDK中HashMap的实现的区别以及原因
Collection和Collections区别
Arrays.asList获得的List使用时需要注意什么
Enumeration和Iterator区别
fail-fast 和 fail-safe
CopyOnWriteArrayList
ConcurrentSkipListMap
枚举的用法
枚举的实现
枚举与单例
Java枚举如何比较
switch对枚举的支持
枚举的序列化如何实现
枚举的线程安全性问题
字符流、字节流
输入流、输出流
同步、异步
阻塞、非阻塞
Linux 5种IO模型
BIO、NIO和AIO的区别、三种IO的用法与原理
Netty
反射与工厂模式
反射有什么作用
Class类
java.lang.reflect.*
静态代理
动态代理
动态代理和反射的关系
动态代理的几种实现方式
AOP
什么是序列化与反序列化
为什么序列化
序列化底层原理
序列化与单例模式
为什么说序列化并不安全
protobuf
元注解
自定义注解
Java中常用注解使用
注解与反射的结合
如何自定义一个注解?
Spring常用注解
什么是Java消息服务、JMS消息传送模型
java.lang.management.*、 javax.management.*
泛型与继承
类型擦除
泛型中K、T、V、E、?、Object等的含义
泛型各种用法
限定通配符和非限定通配符
上下界限定符extends 和 super
List和原始类型List之间的区别?
List<?>和List之间的区别是什么?
junit、mock、mockito、内存数据库(h2)
java.lang.util.regex.*
commons.lang, commons.*... guava-libraries netty
API
API和SPI的关系和区别
如何定义SPI
SPI的实现原理
异常类型
正确处理异常
自定义异常
Error和Exception
异常链、try-with-resources
finally和return的执行顺序
时区、冬令时和夏令时、时间戳、Java中时间API
格林威治时间、CET,UTC,GMT,CST几种常见时间的含义和关系
SimpleDateFormat的线程安全性问题
Java 8中的时间处理
如何在东八区的计算机上获取美国时间
Unicode、有了Unicode为啥还需要UTF-8
GBK、GB2312、GB18030之间的区别
UTF8、UTF16、UTF32区别
URL编解码、Big Endian和Little Endian
如何解决乱码问题
Java中语法糖原理、解语法糖
语法糖:switch 支持 String 与枚举、泛型、自动装箱与拆箱、方法变长参数、枚举、内部类、条件编译、 断言、数值字面量、for-each、try-with-resource、Lambda表达式、
String、Integer、Long、Enum、BigDecimal、ThreadLocal、ClassLoader & URLClassLoader、ArrayList & LinkedList、 HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap、HashSet & LinkedHashSet & TreeSet
什么是并发
什么是并行
并发与并行的区别
线程的实现、线程的状态、优先级、线程调度、创建线程的多种方式、守护线程
线程与进程的区别
自己设计线程池、submit() 和 execute()、线程池原理
为什么不允许使用Executors创建线程池
死锁?
死锁如何排查
线程安全和内存模型的关系
CAS、乐观锁与悲观锁、数据库相关锁机制、分布式锁、偏向锁、轻量级锁、重量级锁、monitor、
锁优化、锁消除、锁粗化、自旋锁、可重入锁、阻塞锁、死锁
死锁的原因
死锁的解决办法
synchronized是如何实现的?
synchronized和lock之间关系、不使用synchronized如何实现一个线程安全的单例
synchronized和原子性、可见性和有序性之间的关系
happens-before、内存屏障、编译器指令重排和CPU指令重排
volatile的实现原理
volatile和原子性、可见性和有序性之间的关系
有了symchronized为什么还需要volatile
Thread、Runnable、Callable、ReentrantLock、ReentrantReadWriteLock、Atomic*、Semaphore、CountDownLatch、、ConcurrentHashMap、Executors
class文件格式、运行时数据区:堆、栈、方法区、直接内存、运行时常量池、
堆和栈区别
Java中的对象一定在堆上分配吗?
计算机内存模型、缓存一致性、MESI协议
可见性、原子性、顺序性、happens-before、
内存屏障、synchronized、volatile、final、锁
GC算法:标记清除、引用计数、复制、标记压缩、分代回收、增量式回收
GC参数、对象存活的判定、垃圾收集器(CMS、G1、ZGC、Epsilon)
-Xmx、-Xmn、-Xms、Xss、-XX:SurvivorRatio、
-XX:PermSize、-XX:MaxPermSize、-XX:MaxTenuringThreshold
oop-klass、对象头
即时编译器、编译优化
jps, jstack, jmap、jstat, jconsole, jinfo, jhat, javap, btrace、TProfiler
Arthas
classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(jboss modules、osgi、jigsaw)
什么是编译(前端编译、后端编译)、什么是反编译
JIT、JIT优化(逃逸分析、栈上分配、标量替换、锁优化)
编译工具:javac
反编译工具:javap 、jad 、CRF
用位运算实现加、减、乘、除、取余
设计模式的六大原则:
开闭原则(Open Close Principle)、里氏代换原则(Liskov Substitution Principle)、依赖倒转原则(Dependence Inversion Principle)
接口隔离原则(Interface Segregation Principle)、迪米特法则(最少知道原则)(Demeter Principle)、合成复用原则(Composite Reuse Principle)
创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。
单例的七种写法:懒汉——线程不安全、懒汉——线程安全、饿汉、饿汉——变种、静态内部类、枚举、双重校验锁
工厂模式、适配器模式、策略模式、模板方法模式、观察者模式、外观模式、代理模式等必会
三次握手与四次关闭、流量控制和拥塞控制、OSI七层模型、tcp粘包与拆包
http中 get和post区别
常见的web请求返回的状态码
404、302、301、500分别代表什么
cookie被禁用,如何实现session
什么是DNS 、记录类型:A记录、CNAME记录、AAAA记录等
域名解析、根域名服务器
DNS污染、DNS劫持、公共DNS:114 DNS、Google DNS、OpenDNS
正向代理、反向代理
反向代理服务器
生命周期
线程安全问题
filter和listener
web.xml中常用配置及作用
什么是OR Mapping
Hibernate的缓存机制
Hibernate的懒加载
Hibernate/Ibatis/MyBatis之间的区别
Bean的初始化
AOP原理
实现Spring的IOC
spring四种依赖注入方式
什么是MVC
Spring mvc与Struts mvc的区别
Spring Boot 2.0、起步依赖、自动配置、
Spring Boot的starter原理,自己实现一个starter
服务发现与注册:Eureka、Zookeeper、Consul
负载均衡:Feign、Spring Cloud Loadbalance
服务配置:Spring Cloud Config
服务限流与熔断:Hystrix
服务链路追踪:Dapper
服务网关、安全、消息
常用插件:Maven Helper 、FindBugs-IDEA、阿里巴巴代码规约检测、GsonFormat
Lombok plugin、.ignore、Mybatis plugin
lambda表达式、Stream API、时间API
Jigsaw、Jshell、Reactive Streams
局部变量类型推断、G1的并行Full GC、ThreadLocal握手机制
ZGC、Epsilon、增强var、
响应式编程
使用单例、使用Future模式、使用线程池、选择就绪、减少上下文切换、减少锁粒度、数据压缩、结果缓存
线程Dump、内存Dump、gc情况
分析死锁、分析内存泄露
jstack、jstat、jmap、jhat、Arthas
HeapOutOfMemory、 Young OutOfMemory、MethodArea OutOfMemory、ConstantPool OutOfMemory、DirectMemory OutOfMemory、Stack OutOfMemory Stack OverFlow
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
javap 、jad 、CRF
生产者消费者问题、哲学家就餐问题、读者写者问题
如何查看执行计划,如何根据执行计划进行SQL优化
Hash索引、B树索引(B+树、和B树、R树)
普通索引、唯一索引
覆盖索引、最左前缀原则、索引下推
事务的隔离级别、事务能不能实现锁的功能
行锁、表锁、使用数据库锁实现乐观锁、
内连接,左连接,右连接
h2
redis、memcached
栈、队列、链表、数组、哈希表、
栈和队列的相同和不同之处
栈通常采用的两种存储结构
二叉树、字典树、平衡树、排序树、B树、B+树、R树、多路树、红黑树
大根堆、小根堆
有向图、无向图、拓扑
稳定的排序:冒泡排序、插入排序、鸡尾酒排序、桶排序、计数排序、归并排序、原地归并排序、二叉排序树排序、鸽巢排序、基数排序、侏儒排序、图书馆排序、块排序
不稳定的排序:选择排序、希尔排序、Clover排序算法、梳排序、堆排序、平滑排序、快速排序、内省排序、耐心排序
各种排序算法和时间复杂度
分治,hash映射,堆排序,双层桶划分,Bloom Filter,bitmap,数据库索引,mapreduce等。
基本概念、常见用法
在linux上部署storm,用zookeeper做协调,运行storm hello world,local和remote模式运行调试storm topology。
HDFS、MapReduce
XSS的防御
SQL注入、XML注入、CRLF注入
对称加密、非对称加密、哈希算法、加盐哈希算法
MD5,SHA1、DES、AES、RSA、DSA
彩虹表
DOS攻击、DDOS攻击
memcached为什么可以导致DDos攻击、什么是反射型DDoS
如何通过Hash碰撞进行DOS攻击
数据一致性、服务治理、服务降级
2PC、3PC、CAP、BASE、 可靠消息最终一致性、最大努力通知、TCC
服务注册、服务发现,服务治理
http://dubbo.apache.org/zh-cn/
怎样打造一个分布式数据库、什么时候需要分布式数据库、mycat、otter、HBase
glusterfs
缓存一致性、缓存命中率、缓存冗余
Hystrix、Sentinal
共识算法、Raft协议、Paxos 算法与 Raft 算法、拜占庭问题与算法
2PC、3PC
SOA、康威定律
sidecar
ActiveMQ
CPU、内存、磁盘I/O、网络I/O等
进程监控、语义监控、机器资源监控、数据波动
日志、埋点
tomcat负载均衡、Nginx负载均衡
四层负载均衡、七层负载均衡
DNS原理、DNS的设计
数据一致性
Serverlsess
Lucene、Elasticsearch
Shiro
哈希算法、Merkle树、公钥密码算法、共识算法、Raft协议、Paxos 算法与 Raft 算法、拜占庭问题与算法、消息认证码与数字签名
挖矿、共识机制、闪电网络、侧链、热点问题、分叉