- 必须深⼊了解的知识点:
a. java集合数据结构
b. jvm:gc、内存模型、堆分代
c. 多线程:volatile、java.util.concurrent包
d. spring:启动、时间
e. redis:分布式锁、lua保证原⼦性、集群
f. 消息队列:kafka
g. Springcloud
h. mysql搜索引擎,索引B+tree - java基础:
a. nio模型
b. java反射
c. java8特性
d. java中有哪些集合?各⾃的数据结构?
e. 说说你⽤过的设计模式
f. jdk以及spring中看过哪些设计模式 - jvm:
a. jvm结构,以及每⼀部分的作⽤
b. jvm中哪些部分会出现oom,出现的可能原因
c. 哪些对象会被存放到⽼年代?
d. 什么时候触发full gc?
e. GC算法分类
f. 类加载机制以及类加载器,双亲委派机制。
g. ⼀个对象被实例化后,在堆中的流转流程(堆结构以及GC流程)
h. jvm调优,写调优参数。 - spring:
a. spring bean的⽣命周期
b. 如何实现spring aop?
c. springboot启动流程?
d. Spring中BeanFactory和FactoryBean有什么区别,factorybean原理?
e. spring事件
f. 作⽤域spring,如果是request⽅式,a依赖b,a是单例⽅式,b是request,回怎么样 - 多线程:
a. 乐观锁、悲观锁
b. 三种分布式锁原理
c. 线程池原理,java有哪⼏种线程池?如何创建?
d. synchronized特性
e. volatile原理
f. Threadlocal
g. ConcurrentHashMap
h. HashMap为何线程不安全
i. java.util.concurrent包下有哪些类? - 数据结构:
a. HashMap数据结构?
b. ConcurrentHashMap数据结构(jdk1.7 &1.8)?
c. ⼆叉树、平衡树、红⿊树
d. B-tree、B+tree
e. TreeMap - 微服务:
a. 画springcloud⼯作原理图
b. 描述各个组件的作⽤及原理
c. ⼼跳机制
d. 限流⽅法:
e. 服务熔断、降级与隔离的实现原理f. eureka优缺点
g. dubbo的负载均衡⽅式 - 数据库:
a. mysql存储引擎有哪些?他们的区别?
b. 数据库隔离级别有哪些,并说下什么是脏读、不可重复读、幻读?
c. 数据库事务的四⼤特性ACID?
d. mysql调优⽅案?
e. 在代码中,我们如何实现事务?
f. 如果在⼀个事务中,代码业务流程很⻓,会有什么问题吗?为什么会出现这种问题? - zookeeper:
a. 选举算法
b. 分布式锁实现原理、优缺点
c. 服务发现与移除原理 - redis:
a. 实现机制
b. 分布式锁,以及要考虑的问题
c. 除了加锁,如何使多个redis命令具有原⼦性(lua脚本)
d. redis持久化的原理
e. 分布式锁,使⽤redis的⽅式,但是redis是集群的,会有不同步的问题,官⽅⽂档是怎么解决的 - 消息中间件:
a. 常⻅消息中间件的区别
b. kafka的实现原理
c. RabbitMQ消息模型
d. RabbitMQ如何保证消息可靠性 - 分布式:
a. 介绍⼏种分布式事务,以及优缺点。
b. 分布式服务的原则,什么情况下要使⽤分布式开发。
c. 使⽤⾃增ID和UUID作为主键有什么不同 - 源码:说说你看过的源码,其中有⽤到什么思想,以及设计模式?
a. spring启动时创建容器:
AnnotationConfigApplicationContext.refresh()
public void refresh() throws BeansException, IllegalStateException {
synchronized (this.startupShutdownMonitor) {
//设置环境配置参数
prepareRefresh();
//创建beanFactory(同步代码块,反射获取bean)
ConfigurableListableBeanFactory beanFactory =
obtainFreshBeanFactory();
// 给beanFactory注册⼀些标准组件,如ClassLoader,BeanPostProcess
prepareBeanFactory(beanFactory);
try {
//设置web⽣命周期管理的Scope
postProcessBeanFactory(beanFactory);
//调⽤所有BeanFactoryProcessor的postProcessBeanFactory()⽅法
invokeBeanFactoryPostProcessors(beanFactory);
//注册BeanPostProcessor,BeanPostProcessor作⽤是⽤于拦截Bean的创建
//如果我们需要在Spring容器完成Bean的实例化、配置和其他的初始化前后添加⼀些⾃⼰的逻辑处理,
//我们就可以定义⼀个或者多个BeanPostProcessor接⼝的实现,然后注册到容器中。
registerBeanPostProcessors(beanFactory);
//初始化消息Bean25 initMessageSource();
//初始化上下⽂的事件多播组件,ApplicationEvent触发时由multicaster通知给ApplicationListener
initApplicationEventMulticaster();
//ApplicationContext初始化⼀些特殊的bean
onRefresh();
// Check for listener beans and register them.
//注册事件监听器,事件监听Bean⼀注册到multicaster⾥头,ApplicationEvent事件触发后会由multicaster⼴播
registerListeners();
//⾮延迟加载的单例Bean实例化
finishBeanFactoryInitialization(beanFactory);
//最后⼀步,发布ContextRefreshedEvent事件
finishRefresh();
}
}
b.。。。。。。
网友评论