关于java:2021最新BAT资深Java-面经合集CMS红黑树线程状态事务隔离中间件

7次阅读

共计 1648 个字符,预计需要花费 5 分钟才能阅读完成。


马上进入求职招聘顶峰,总结了一份 BAT(阿里、百度、字节跳动、美团等) 资深 Java 相干的面试题合集给到大家。

文末有相干的 2021 最新 BAT 资深 java 面试题答案~ 用于参考

JVM

  • JVM 内存模型构造
  • 办法区和间接内存什么时候会 oom?
  • JVM 收集器 G1 的内存模型和 CMS 的内存模型有什么不同?
  • jvm 调优用过吗?
  • 如何查看 java 内存应用状况(jconsole、命令 jmap、jstack 等等)

    汇合

  • Arraylist、linkedlist 差别,利用场景;
  • HashMap 在 JDK1.8 有哪些改变?
  • HashCurrentMap 和 HashMap 的区别在哪里?
  • Hashmap 什么时候应用红黑树?

    多线程

  • 线程的几种状态,请画出具体的状态流转图?
  • Java wait、sleep 的区别?
  • volatile 如何实现指令重排序?
  • 线程池中的阻塞队列如果满了怎么办(回绝策略)?
  • Synchronized 和 AQS 异同,AQS 偏心非偏心如何实现;
  • 多线程外面对一个整型做加减为啥不能用 volatile;
  • voliatile 和 synchonized 有什么区别?synchonized 和 jdk 提供的 Lock 包又有什么区别?

    算法

  • 二叉树宽度遍历
  • 红黑树
  • 数据结构的话,链表,树,图的基本知识得懂
  • 理解树的先序遍历,中序遍历,后序遍历。图的广度优先搜索算法,深度优先搜索算法。

    Spring

  • Bean 的生命周期;
  • 什么是 DI、为什么 DI、DI 的类型(结构器注入、办法注入);
  • Spring boot 和 spring 的差异,tomcat 如何嵌入 spring boot 的 /spring boot 中的 tomcat 是如何启动的;
  • Spring 如何解决循环依赖问题;

    数据库

  • Join(inner、left、right)的区别?
  • Union 和 union all 区别?
  • ACID,具体是啥意思?
  • 事务隔离级别?
  • 幻读和不可反复读的区别?
  • Mysql 和 mongodb 有啥区别?

    计算机网路

  • RPC 和 http 的区别
  • 详细描述 TCP 四次挥手过程
  • 中间件
  • 秒杀我的项目会应用到哪些中间件?
  • 为什么 Redis 是单线程?
  • 如何保障 Redis 和数据库双写统一?
  • 如何设计一个音讯队列中间件?
  • 分库分表后,id 主键如何解决?
  • 如何设计一个相似 Dubbo 的 RPC?

Redis

  • Redis 五种根本数据类型的应用场景
  • 缓存穿透、缓存击穿、缓存雪崩
  • Redis 的过期策略和内存淘汰机制
  • Redis 的 zset 底层数据结构,为什么用跳跃表而不必红黑树

设计模式

  • 代理模式(利用:一是创立多线程的形式之应用 Runnable 接口利用了动态代理;二是 Spring AOP 利用了动静代理)
  • 适配器模式(利用:一是创立多线程的形式之应用 Callable 接口;二是 SpringMVC 中的 HandleAdapter)
  • 工厂模式(利用:一是 Spring IOC;二是 Mybatis 中的 SqlSessionFactory 就用到了简略工厂模式)
  • 单例模式(个别会须要手撕单例模式的代码,次要谈 DCL 模式对于指令重排的问题,以及反射能够毁坏除枚举以外的几种形式;单例模式的利用有:一是 Spring Bean 的作用域默认就是应用单例模式;二是 Mybatis 中的 ErrorContext 类也应用了单例模式,这个类用于记录线程执行环境的错误信息)
  • 装璜器模式(利用:JAVA 的 IO 流就用到了装璜器模式)
  • 装璜器模式和代理模式的区别?
  • 策略模式(利用:Arrays 类的 sort 办法就用到了策略模式,Comparator 接口就是一个策略接口,将排序办法定义成一个策略,用户能够自定义排序策略,能够是升序也能够是降序)
  • 观察者模式与公布订阅模式的区别?(JDK 源码曾经为咱们提供好了一套观察者模式,Observer 就是观察者接口,Observable 类是被观察者,是一个具体类,提供了一个寄存所有观察者角色的汇合,并且也提供了增加观察者、移除观察者、告诉观察者等办法)

还有很多面试题我在这里就不一一展现了,须要上述 BAT 资深 Java 面试题答案可【点击此处】获取!以下还有一些 Java 学习笔记以及 BAT 高频面试题可供参考~

正文完
 0