Java高级面试题目

  1. 必须深⼊了解的知识点:
    a. java集合数据结构
    b. jvm:gc、内存模型、堆分代
    c. 多线程:volatile、java.util.concurrent包
    d. spring:启动、时间
    e. redis:分布式锁、lua保证原⼦性、集群
    f. 消息队列:kafka
    g. Springcloud
    h. mysql搜索引擎,索引B+tree
  2. java基础:
    a. nio模型
    b. java反射
    c. java8特性
    d. java中有哪些集合?各⾃的数据结构?
    e. 说说你⽤过的设计模式
    f. jdk以及spring中看过哪些设计模式
  3. jvm:
    a. jvm结构,以及每⼀部分的作⽤
    b. jvm中哪些部分会出现oom,出现的可能原因
    c. 哪些对象会被存放到⽼年代?
    d. 什么时候触发full gc?
    e. GC算法分类
    f. 类加载机制以及类加载器,双亲委派机制。
    g. ⼀个对象被实例化后,在堆中的流转流程(堆结构以及GC流程)
    h. jvm调优,写调优参数。
  4. spring:
    a. spring bean的⽣命周期
    b. 如何实现spring aop?
    c. springboot启动流程?
    d. Spring中BeanFactory和FactoryBean有什么区别,factorybean原理?
    e. spring事件
    f. 作⽤域spring,如果是request⽅式,a依赖b,a是单例⽅式,b是request,回怎么样
  5. 多线程:
    a. 乐观锁、悲观锁
    b. 三种分布式锁原理
    c. 线程池原理,java有哪⼏种线程池?如何创建?
    d. synchronized特性
    e. volatile原理
    f. Threadlocal
    g. ConcurrentHashMap
    h. HashMap为何线程不安全
    i. java.util.concurrent包下有哪些类?
  6. 数据结构:
    a. HashMap数据结构?
    b. ConcurrentHashMap数据结构(jdk1.7 &1.8)?
    c. ⼆叉树、平衡树、红⿊树
    d. B-tree、B+tree
    e. TreeMap
  7. 微服务:
    a. 画springcloud⼯作原理图
    b. 描述各个组件的作⽤及原理
    c. ⼼跳机制
    d. 限流⽅法:
    e. 服务熔断、降级与隔离的实现原理f. eureka优缺点
    g. dubbo的负载均衡⽅式
  8. 数据库:
    a. mysql存储引擎有哪些?他们的区别?
    b. 数据库隔离级别有哪些,并说下什么是脏读、不可重复读、幻读?
    c. 数据库事务的四⼤特性ACID?
    d. mysql调优⽅案?
    e. 在代码中,我们如何实现事务?
    f. 如果在⼀个事务中,代码业务流程很⻓,会有什么问题吗?为什么会出现这种问题?
  9. zookeeper:
    a. 选举算法
    b. 分布式锁实现原理、优缺点
    c. 服务发现与移除原理
  10. redis:
    a. 实现机制
    b. 分布式锁,以及要考虑的问题
    c. 除了加锁,如何使多个redis命令具有原⼦性(lua脚本)
    d. redis持久化的原理
    e. 分布式锁,使⽤redis的⽅式,但是redis是集群的,会有不同步的问题,官⽅⽂档是怎么解决的
  11. 消息中间件:
    a. 常⻅消息中间件的区别
    b. kafka的实现原理
    c. RabbitMQ消息模型
    d. RabbitMQ如何保证消息可靠性
  12. 分布式:
    a. 介绍⼏种分布式事务,以及优缺点。
    b. 分布式服务的原则,什么情况下要使⽤分布式开发。
    c. 使⽤⾃增ID和UUID作为主键有什么不同
  13. 源码:说说你看过的源码,其中有⽤到什么思想,以及设计模式?
    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.。。。。。。

  1. ⽹络相关:
    a. tcp三次握⼿、四次挥⼿
    b. http机制
    c. https机制
  2. 项⽬亮点:
  3. 画架构图:
  4. 平时看过什么书?
    。。。
    ...
    面试题有些根据个人经验,一些由网上搜集,整理不易。对于文章有什么问题,欢迎大家指正。也可加入群聊,大家一起讨论。以及资料的分享。

你可能感兴趣的:(Java高级面试题目)