美文网首页
Java高级面试题目

Java高级面试题目

作者: Lemonrel | 来源:发表于2019-12-02 18:18 被阅读0次
    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高级面试题目

          本文链接:https://www.haomeiwen.com/subject/gmvfgctx.html