Java底层知识

字节码

class文件格式

CAFEBABE

位运算

用位运算实现加、减、乘、除、取余

设计模式

设计模式的六大原则

开闭原则

里氏代换原则

依赖倒转原则

接口隔离原则

迪米特法则(最少知道原则)

合成复用原则

创建型设计模式

单例模式

抽象工厂模式

建造者模式

工厂模式

原型模式

结构型设计模式

适配器模式

桥接模式

装饰模式

组合模式

外观模式

享元模式

代理模式

行为型设计模式

模板方法模式

命令模式

迭代器模式

观察者模式

中介者模式

备忘录模式

解释器模式

状态模式

策略模式

责任链模式

访问者模式

单例的七种写法

懒汉—线程不安全

懒汉—线程安全

饿汉

饿汉—变种

静态内部类

枚举

双重校验锁

为什么推荐使用枚举实现单例?

三种工厂模式的区别及联系

简单工厂

模板工厂

会使用常用的设计模式

适配器模式

策略模式

模板方法模式

观察者模式

外观模式

代理模式

不用synchronized和lock,实现线程安全的单例模式

nio和reactor设计模式

Spring中用的了哪些设计模式

网络编程知识

常用协议

tcp

udp

http

https

用Java实现FTP、SMTP协议

OSI七层模型

每一层的主要协议

TCP/UDP

三次握手与四次关闭

流量控制和拥塞控制

tcp粘包与拆包

TCP/IP

IPV4

IPV6

HTTP

http/1.0 http/1.1 http/2之间的区别

http和https的区别

http中get和post区别

常见的web请求返回的状态码

404、302、301、500分别代表什么

用Java写一个简单的静态文件的HTTP服务器

http/2

Java RMI,Socket,HttpClient

cookie与session

cookie被禁用,如何实现session

了解nginx和apache服务器的特性并搭建一个对应的服务器

进程间通讯的方式

什么是CDN?如何实现?

DNS

什么是DNS

记录类型

A记录

CNAME记录

AAAA记录等

域名解析

根域名服务器

DNS污染

DNS劫持

公共DNS

114 DNS

Google DNS

OpenDNS

代理

反向代理

正向代理

反向代理服务器

框架知识

Servlet

生命周期

线程安全问题

filter和listener

web.xml中常用配置及作用

Hibernate

什么是OR Mapping

Hibernate的缓存机制

Hibernate的懒加载

Hibernate/Ibatis/MyBatis之间的区别

MyBatis

MyBatis缓存机制

‘#{}’和’${}’的区别

mapper中传递多个参数

Mybatis的延迟加载

Spring

Bean的初始化

AOP原理

实现Spring的IOC

Spring四种依赖注入方式

Spring MVC

什么是MVC

Spring MVC与struts MVC的区别

Spring Boot

Spring Boot 2.0

起步依赖

自动配置

Spring Boot的starter原理

自己实现一个starter

为什么Spring Boot可以通过main启动web项目

Spring Security

Spring Cloud

服务发现与注册

Eureka

Zookeeper

Consul

负债均衡

Spring Cloud Loadbalance

服务配置

Spring Cloud Config

服务限流与熔断

Hystrix

服务链路追踪

Dapper

服务网关、安全、消息

应用服务器知识

JBoss

Tomcat

Jetty

Weblogic

工具

git & SVN

maven & gradle

git技巧

分支合并

冲突解决

提交回滚

maven技巧

依赖树

依赖仲裁

Intellij IDEA

常用插件

Maven Helper

FindBugs-IDEA

阿里巴巴代码规约检测

GsonFormat

Lombok plugin

.ignore

Mybatis plugin