前言

我相信大多 Java 开发的程序员或多或少经历过BAT一些大厂的面试,也清楚一线互联网大厂 Java 面试是有一定难度的,小编经历过多次面试,有满意的也有备受打击的。因此呢小编想把自己这么多次面试经历以及近期的面试真题来个汇总分析,阐述下如何去准备,去回答面试官的提问,可以和面试官有个愉快的交谈。

小编分享的这份BAT必考Java真题合集包含了性能调优、并发编程、框架源码、分布式框架、微服务架构、项目实战、互联网工具等七个大专题技术点真题模块分享,都是小编在各个大厂面试总结出来的面试真题,已经有很多粉丝靠这份真题合集拿下金三银四的面试,今天小编在这里总结分享给到大家!

image

小编这篇分享篇幅可能有点长,观看的朋友可以先了解一下目录

一、性能调优

  1. JVM面试题
  2. MySQL面试题
  3. Tomcat调优面试题
  4. Nginx调优面试题

二、并发编程

  1. 并发同步(乐观锁、悲观锁、重入锁、公平锁、非公平锁及锁的粒度详解)
  2. Executor线程池面试题

三、框架源码

  1. Spring ioc面试题
  2. Spring aop面试题
  3. Spring mvc面试题
  4. Spring面试题
  5. Mybatis面试题

四、分布式框架(分布式中间件)

  1. RabbitMQ面试题
  2. RocketMQ面试题
  3. Kafka面试题
  4. Redis面试题
  5. Zookeeper面试题
  6. Dubbo面试题
  7. Netty面试题

五、微服务架构

  1. Spring Boot面试题
  2. Spring cloud面试题

六、项目实战

七、互联网工具

  1. Linux面试题

一、性能调优

JVM面试题

[图片上传失败...(image-118f58-1614497340881)]

1、什么情况下会发生栈内存溢出。

java中的栈一般存储的是栈帧。
所以栈内存溢出就是栈帧的数量太多超过了系统预先设定的值,所以导致内存溢出。

可能的原因就是方法循环调用,栈帧充满了整个栈后溢出。

2、说一下 JVM 的主要组成部分及其作用?

image

  • 类加载器:加载类文件到内存。Class loader只管加载,只要符合文件结构就加载,至于能否运行,它不负责,那是有Exectution Engine 负责的。
  • 执行引擎:也叫解释器,负责解释命令,交由操作系统执行。
  • 本地库接口:本地接口的作用是融合不同的语言为java所用
  • 运行时数据区:

image

3、详解JVM内存模型

java定义内存模型的目的是:为了屏蔽各种硬件和操作系统的内存访问之间的差异。 java内存模型规定了所有的变量都存储在主内存中,每条线程拥有自己的工作内存,工作内存保存了主内存中变量的副本。

4、说一下 JVM 运行时数据区

5、JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。

6、深拷贝和浅拷贝

7、为什么要分为Eden和Survivor?为什么要设置两个Survivor区?

8、说一下堆栈的区别?

9、你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点。

10、队列和栈是什么?有什么区别?

11、HotSpot虚拟机对象探秘

12、JVM内存模型的相关知识了解多少,比如重排序,内存屏障,happen-before,主内存,工作内存。

13、对象的创建

14、简单说说你了解的类加载器,可以打破双亲委派么,怎么打破。

15、为对象分配内存

16、什么是类加载器?

17、处理并发安全问题

18、为什么需要双亲委派模型?

19、对象的访问定位

20、说说你知道的几种主要的JVM参数

21、句柄访问

22、怎么打破双亲委派模型?

23、直接指针

24、内存溢出异常

25、怎么打出线程栈信息

26、Java会存在内存泄漏吗?请简单描述

27、垃圾收集器

28、垃圾收集器与内存分配策略

29、简述Java垃圾回收机制

30、GC是什么?为什么要GC

31、虚拟机性能监控与故障处理工具

32、垃圾回收的优点和原理。并考虑2种回收机制

33、垃圾回收器的基本原理是什么?

34、Java 中都有哪些引用类型?

35、怎么判断对象是否可以被回收?

36、垃圾回收器可以马上回收内存吗?

37、有什么办法主动通知虚拟机进行垃圾回收?

38、在Java中,对象什么时候可以被垃圾回收

39、JVM中的永久代中会发生垃圾回收吗

40、说一下 JVM 有哪些垃圾回收算法?

41、标记-清除算法标记无用对象,然后进行清除回收。

42、复制算法

43、标记-整理算法

44、分代收集算法

45、虚拟机类加载机制

46、说一下 JVM 有哪些垃圾回收器?

47、详细介绍一下 CMS 垃圾回收器?

48、虚拟机字节码执行引擎

49、新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别?

50、类加载及执行子系统的案例与实战

60、简述分代垃圾回收器是怎么工作的?

61、线程安全与锁优化

62、内存分配策略

63、大对象直接进入老年代

64、对象优先在 Eden 区分配

65、虚拟机类加载机制

66、描述一下JVM加载Class文件的原理机制

67、长期存活对象将进入老年代

68、简述java内存分配与回收策率以及Minor GC和Major GC

69、简述java类加载机制?

70、说一下类装载的执行过程?

71、什么是类加载器,类加载器有哪些?

72、JVM调优

73、什么是双亲委派模型?

74、常用的 JVM 调优的参数都有哪些?

75、说一下 JVM 调优的工具?

MySQL面试题

image

1、为什么要使用数据库

2、MySQL 中有哪几种锁?

3、数据保存在文件的优缺点?

4、MySQL 中有哪些不同的表格?

5、什么是SQL?

6、简述在MySQL 数据库中 MyISAM 和InnoDB 的区别

7、数据库三大范式是什么

8、MySQL 中InnoDB 支持的四种事务隔离级别名称,以及逐

9、MySQL的binlog有有几种录入格式?分别有什么区别?

10、CHAR 和VARCHAR 的区别?

11、列对比运算符是什么?

12、什么是索引?

13、主键和候选键有什么区别?

14、myisamchk 是用来做什么的?

15、InnoDB引擎的4大特性

16、你怎么看到为表格定义的所有索引?

17、如果一个表有一列定义为TIMESTAMP,将发生什么?

18、MySQL_fetch_array 和MySQL_fetch_object 的区别是什么?

19、索引有哪些优缺点?

20、BLOB 和TEXT 有什么区别?

21、可以使用多少列创建索引?

22、索引使用场景(重点)

23、MyISAM 表格将在哪里存储,并且还提供其存储格式?

24、MySQL 如何优化DISTINCT?

25、如何显示前 50 行?

26、MySQL 里记录货币用什么字段类型好

27、索引有哪几种类型?

28、什么是非标准字符串类型?

29、索引的数据结构(b树,hash)

30、MySQL 支持事务吗?

31、NOW()和 CURRENT_DATE()有什么区别?

32、MySQL 有关权限的表都有哪几个?

33、列的字符串类型可以是什么?

34、什么是通用 SQL 函数?

35、MySQL 数据库作发布系统的存储,一天五万条以上的增量, 预计运维三年,怎么优化?

36、锁的优化策略

37、索引的底层实现原理和优化

38、存储时期

39、什么情况下设置了索引但无法使用

40、实践中如何优化 MySQL

41、完整性约束包括哪些?

42、优化数据库的方法

43、简单描述 MySQL 中,索引,主键,唯一索引,联合索引

44、数据库中的事务是什么?

45、Myql 中的事务回滚机制概述

46、SQL 注入漏洞产生的原因?如何防止?

47、为表中得字段选择合适得数据类型

48、索引算法有哪些?

49、SQL 语言包括哪几部分?每部分都有哪些操作关键字?

50、对于关系型数据库而言,索引是相当重要的概念,请回答

51、解释 MySQL 外连接、内连接与自连接的区别

读者福利:获取完整面试题和答案解析可以关注公众号:麒麟改bug,获取上述答案解析

Tomcat调优面试题

1、Tomcat是什么?

2、Tomcat的缺省端口是多少,怎么修改?

3、Tomcat工作模式?

4、tomcat 有哪几种Connector 运行模式(优化)?

5、Tomcat顶层架构

6、Tomcat有几种部署方式?

7、Connector和Container的微妙关系

8、Tomcat一个请求的完整过程

9、tomcat容器是如何创建servlet类实例?用到了什么原理?

10、Container架构分析

11、tomcat 如何优化?

12、Container如何处理请求的

13、打印类的加载情况及对象的回收情况

14、垃圾回收策略调优

15、共享session处理

16、关于Tomcat的session数目

17、添加JMS远程监控

18、专业点的分析工具有

19、监视Tomcat的内存使用情况

20、内存调优

21、Tomcat历史

22、Tomcat总体架构

23、创建Server

24、你怎样给 tomcat 去调优?

25、如何加大 tomcat 连接数

26、tomcat 中如何禁止列目录下的文件

Nginx调优面试题

image

1、为什么Nginx性能这么高?

2、什么是Nginx?

3、什么是正向代理和反向代理?

4、为什么要用Nginx?

5、Nginx怎么处理请求的?

6、Nginx应用场景?

7、使用“反向代理服务器的优点是什么?

8、Nginx的优缺点?

9、Nginx目录结构有哪些?

10、Nginx静态资源?

11、如何用Nginx解决前端跨域问题?

12、基于虚拟主机配置域名

13、location的作用是什么?

14、Nginx配置文件nginx.conf有哪些属性模块?

15、Nginx虚拟主机怎么配置?

16、基于端口的虚拟主机

17、限流怎么做的?

18、location的语法能说出来吗?

19、Location正则案例

20、限制并发连接数

21、为什么要做动静分离?

22、漏桶流算法和令牌桶算法知道?

23、突发限制访问频率(突发流量):

24、Nginx负载均衡的算法怎么实现的?策略有哪些?

25、怎么限制浏览器访问?

26、Rewrite全局变量是什么?

27、正常限制访问频率(正常流量):

28、Nginx怎么判断别IP不可访问?

29、Nginx怎么做的动静分离?

二、并发编程

image

多线程面试题:

1、什么是多线程,多线程的优劣?

2、并发编程的优缺点:

3、在 Java 程序中怎么保证多线程的运行安全?

4、并行和并发有什么区别?

5、并发编程有什么缺点

6、并发编程三要素是什么?

7、进程与线程的区别?

8、什么是线程和进程?

9、为什么要使用并发编程?

10、什么是上下文切换?

11、如何在 Windows 和 Linux 上查找哪个线程cpu利用率最高?

12、线程和进程区别

13、什么是线程死锁?

14、如何避免线程死锁?

15、守护线程和用户线程有什么区别呢?

16、创建线程有哪几种方式?

17、说一下 runnable 和 callable 有什么区别?

18、线程的 run()和 start()有什么区别?

19、形成死锁的四个必要条件是什么?

20、说说线程的生命周期及五种基本状态?

21、为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?

22、什么是 Callable 和 Future?

23、什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )?

24、sleep() 和 wait() 有什么区别?

25、你是如何调用 wait() 方法的?使用 if 块还是循环?为什么?

26、请说出与线程同步以及线程调度相关的方法。

27、什么是 FutureTask?

28、为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里?

29、Java 中用到的线程调度算法是什么?

30、线程的调度策略

31、Thread 类中的 yield 方法有什么作用?

32、为什么 Thread 类的 sleep()和 yield ()方法是静态的?

33、Java 中 interrupted 和 isInterrupted 方法的区别?

34、如何停止一个正在运行的线程?

35、什么是阻塞式方法?

36、为什么 wait(), notify()和 notifyAll()必须在同步方法或者同步块中被调用?

37、线程的 sleep()方法和 yield()方法有什么区别?

38、如何在两个线程间共享数据?

39、Java 如何实现多线程之间的通讯和协作?

40、Java 中你怎样唤醒一个阻塞的线程?

41、在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?

42、notify() 和 notifyAll() 有什么区别?

43、同步方法和同步块,哪个是更好的选择?

44、在 Java 程序中怎么保证多线程的运行安全?

45、如果你提交任务时,线程池队列已满,这时会发生什么

46、什么叫线程安全?servlet 是线程安全吗?

47、线程类的构造方法、静态块是被哪个线程调用的

48、什么是线程同步和线程互斥,有哪几种实现方式?

49、一个线程运行时发生异常会怎样?

50、synchronized 的作用?

51、说说自己是怎么使用 synchronized 关键字,在项目中用到了吗

52、Java 中怎么获取一份线程 dump 文件?你如何在 Java 中获取线程堆栈?

53、你对线程优先级的理解是什么?

54、Java 线程数过多会造成什么异常?

55、什么是自旋?

56、当一个线程进入一个对象的 synchronized 方法 A 之后,其它线程是否可进入此对象的 synchronized 方法 B?

57、线程 B 怎么知道线程 A 修改了变量

58、synchronized、volatile、CAS 比较

59、synchronized 和 ReentrantLock 区别是什么?

60、说一下 synchronized 底层实现原理?

61、synchronized 和 Lock 有什么区别?

62、多线程中 synchronized 锁升级的原理是什么?

63、volatile 能使得一个非原子操作变成原子操作吗?

64、volatile 关键字的作用

65、volatile 修饰符的有过什么实践?

66、Java 中能创建 volatile 数组吗?

67、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?

68、什么是 CAS?

69、什么是死锁?

70、volatile 变量和 atomic 变量有什么不同?

71、synchronized 和 volatile 的区别是什么?

72、CAS 的会产生什么问题?

73、产生死锁的条件是什么?怎么防止死锁?

74、死锁与活锁的区别,死锁与饥饿的区别?

75、多线程锁的升级原理是什么?

76、乐观锁和悲观锁的理解及如何实现,有哪些实现方式?

Executor线程池面试题

1、什么是 Executor 框架?

2、有哪几种创建方式?

3、在 Java 中 Executor 和 Executors 的区别?

4、线程池有什么优点?

5、为什么使用 Executor 框架?

6、什么是线程组,为什么在 Java 中不推荐使用?

7、什么是线程池?

8、你知道怎么创建线程池吗?

9、ThreadPoolExecutor构造函数重要参数分析?

10、线程池中 submit() 和 execute() 方法有什么区别?

11、线程池都有哪些状态?

12、ThreadPoolExecutor饱和策略?

13、Executors和ThreaPoolExecutor创建线程池的区别?

14、在 Java Concurrency API 中有哪些原子类(atomic classes)?

15、什么是原子操作?

16、说一下 atomic 的原理?

17、并发工具之CountDownLatch与CyclicBarrier

18、在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?

19、ScheduledThreadPoolExecutor详解FutureTask详解?

20、Semaphore 有什么作用

21、什么是线程间交换数据的工具Exchanger

22、并发工具之Semaphore与Exchanger

23、常用的并发工具类有哪些?

三、框架源码

image

Spring ioc面试题

1、在配置类上写@CompentScan 注解来进行包扫描

2、你对spring ioc容器的定义:

3、xml 配置文件的形式 和配置类的形式的区别

4、FilterType.CUSTOM 自定义类型如何使用?

5、排除用法 excludeFilters

6、说说@ComponentScan.Filter type 的类型

7、什么是 bean 的生命周期?

8、如何@Scope 指定的作用域方法取值?

9、如何通过实现 FacotryBean 接口来实现注册组件?

10、AnnotationConfigApplicationContex 的创建为我们做了什么?

11、如何通过 InitializingBean 和 DisposableBean 的二个接口实现?

12、我们自己的组件如何使用 Spring Ioc 底层组件?

13、控制反转(IOC)有什么作用

14、IOC的优点是什么?

15、Spring IOC 的实现机制

Spring aop面试题

1、什么是Spring AOP?

2、简述一下Spring AOP的设计原理

3、代理如何进行创建和调用的?

4、Spring中有哪些通知类型(advice)?

5、在Spring AOP中关注点和横切关注点有什么不同?

6、Spring AOP的代理是什么?

7、说说AspectJAutoProxyRegistrar 类是用来干什么的?

8、代理对象创建

9、代理对象调用目标方法

Spring mvc面试题

1、Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?

2、什么是Spring MVC?简单介绍下你对Spring MVC的理解?

3、什么是Spring MVC框架的控制器?

4、Spring MVC的主要组件?

5、请描述Spring MVC的工作流程?

6、什么是DispatcherServlet

7、描述一下 DispatcherServlet 的工作流程?

8、Spring MVC的优点

9、注解原理是什么

10、SpingMvc中的控制器的注解一般用哪个,有没有别的注解可以替代?

11、MVC框架

12、MVC是什么?MVC设计模式的好处有哪些

13、@RequestMapping注解的作用

14、@ResponseBody注解的作用

15、Spring MVC常用的注解有哪些?

16、@PathVariable和@RequestParam的区别

17、Spring MVC与Struts2区别

18、@Controller注解的作用

19、Spring MVC怎么和AJAX相互调用的?

20、Spring MVC的异常处理?

21、如果在拦截请求中,我想拦截get方式提交的方法,怎么配置

22、怎样在方法里面得到Request,或者Session?

23、Spring MVC中函数的返回值是什么?

24、Spring MVC怎么样设定重定向和转发的?

25、Spring MVC用什么对象从后台向前台传递数据的?

26、Spring MVC里面拦截器是怎么写的

27、如何解决POST请求中文乱码问题,GET的又如何处理呢?

28、如果想在拦截的方法里面得到从前台传入的参数,怎么得到?

29、如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?

30、怎么样把ModelMap里面的数据放入Session里面?

Spring面试题

image

1、Spring的优缺点是什么?

2、什么是spring?

3、Spring框架的设计目标,设计理念,和核心是什么

4、Spring的俩大核心概念

5、Spring 应用程序有哪些不同组件?

6、Spring 框架中都用到了哪些设计模式?

7、Spring框架中有哪些不同类型的事件

8、详细讲解一下核心容器(spring context应用上下文) 模块

9、Spring有哪些应用场景

10、Spring由哪些模块组成?

11、什么是基于Java的Spring注解配置? 给一些注解的例子

12、怎样开启注解装配?

13、@Required 注解有什么作用

14、使用 Spring 有哪些方式?

15、@Autowired和@Resource之间的区别

16、@RequestMapping 注解有什么用?

17、解释对象/关系映射集成模块

18、spring DAO 有什么用?

19、spring JDBC API 中存在哪些类?

20、使用Spring通过什么方式访问Hibernate?

21、Spring事务的实现方式和实现原理

22、Spring支持的事务管理类型, spring 事务实现方式有哪些?

23、@Qualifier 注解有什么作用

24、使用 Spring 访问 Hibernate 的方法有哪些?

25、Spring框架的事务管理有哪些优点?

26、解释JDBC抽象和DAO模块

Mybatis面试题

1、传统JDBC开发存在的问题

2、MyBatis是什么?

3、MyBatis框架适用场景

4、ORM是什么

5、Mybatis优缺点

6、为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?

7、Hibernate 和 MyBatis 的区别

8、MyBatis编程步骤是什么样的?

9、JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?

10、MyBatis的功能架构是怎样的

11、为什么需要预编译

12、请说说MyBatis的工作原理

13、Mybatis都有哪些Executor执行器?它们之间的区别是什么?

14、MyBatis的解析和运行原理

15、Mybatis中如何指定使用哪一种Executor执行器?

16、模糊查询like语句该怎么写

17、MyBatis的框架架构设计是怎么样的

18、在mapper中如何传递多个参数

19、如何获取生成的主键

20、什么是MyBatis的接口绑定?有哪些实现方式?

21、Mapper 编写有哪几种方式?

22、当实体类中的属性名和表中的字段名不一样 ,怎么办

23、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?

24、使用MyBatis的mapper接口调用时有哪些要求?

25、简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?

26、简述Mybatis的插件运行原理,以及如何编写一个插件。

27、Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?

28、Mybatis如何执行批量操作

29、Mybatis映射文件中,如果A标签通过include引用了B标签的内容,请问,B标签能否定义在A标签的后面,还是说必须定义在A标签的前面?

30、Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?

31、Mybatis是否可以映射Enum枚举类?

32、Mybatis的一级、二级缓存

33、Mybatis是如何进行分页的?分页插件的原理是什么?

34、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?

35、Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不?

36、MyBatis实现一对一,一对多有几种方式,怎么操作的?

image

四、分布式框架(分布式中间件)

RabbitMQ面试题

1、解耦、异步、削峰是什么?

2、什么是MQ?

3、你们公司生产环境用的是什么消息中间件?

4、MQ的优点?

5、Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?

2021年突破年薪百万难关!吃透这套Java真题合集

6、消息队列有什么缺点

7、rabbitmq 的使用场景

8、什么是RabbitMQ?

9、RabbitMQ的工作模式

10、MQ 有哪些常见问题?如何解决这些问题?

11、 消息如何分发?

12、RabbitMQ基本概念

13、消息基于什么传输?

14、如何保证RabbitMQ消息的顺序性?

15、如何保证消息不被重复消费?或者说,如何保证消息消费时的幂等性?

16、如何保证RabbitMQ消息的可靠传输?

17、如何保证高可用的?RabbitMQ 的集群

18、消息怎么路由?

19、如何解决消息队列的延时以及过期失效问题?

20、消息队列满了以后该怎么处理?有几百万消息持续积压几小时,怎么办?

21、 为什么不应该对所有的 message 都使用持久化机制?

22、如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?

23、设计MQ思路

读者福利:获取完整面试题和答案解析可以关注公众号:麒麟改bug,获取上述答案解析

RocketMQ面试题

1、中小型公司首选RabbitMQ的原因是?

2、消息低延迟的原因?

3、Broker的Buffer满了怎么办?

4、回溯消息:

5、消息中间件的主要功能是?

6、RabbitMQ是什么?

7、RabbitMQ物理部署结构?

8、RabbitMQ的逻辑结构?

9、RabbitMQ数据存储结构是怎么样的?

10、RabbitMQ的使用场景?

11、RabbitMQ的基本概念?

12、RabbitMQ的工作模式?

Kafka面试题

1、producer 是否直接将数据发送到 broker 的 leader(主节点)?

2、Kafka 的设计时什么样的呢?

3、Kafka 消息是采用 Pull 模式,还是 Push 模式?

4、Kafka 高效文件存储设计特点:

5、Kafka 判断一个节点是否还活着有那两个条件?

6、Kafa consumer 是否可以消费指定分区消息?

7、数据传输的事物定义有哪三种?

8、Kafka 存储在硬盘上的消息格式是什么?

9、Kafka 新建的分区会在哪个目录下创建

10、kafka 的 ack 机制

11、消费者负载均衡策略

12、Kafka 的消费者如何消费数据

13、Kafka 与传统消息系统之间有三个关键区别

14、partition 的数据如何保存到硬盘

15、Kafka 创建 Topic 时如何将分区放置到不同的 Broker 中

16、kafaka 生产数据时数据的分组策略

17、数据有序

18、数据一致性保证

Redis面试题

image

1、Redis回收使用的是什么算法?

2、什么是Redis?

3、Redis有哪些数据类型

4、Redis有哪些优缺点?

5、Redis回收进程如何工作的?

6、使用redis有哪些好处?

7、为什么要用 Redis / 为什么要用缓存

8、假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?

9、Redis为什么这么快

10、Redis的应用场景

11、为什么要用 Redis 而不用 map/guava 做缓存?

12、如何选择合适的持久化方式

13、使用Redis做过异步队列吗,是如何实现的

14、Redis key的过期时间和永久有效分别怎么设置?

15、我们知道通过expire来设置key 的过期时间,那么对过期的数据怎么处理呢?

16、Redis如何实现延时队列

17、持久化

18、Redis 的持久化机制是什么?各自的优缺点?

19、Redis主要消耗什么物理资源?

20、Redis的内存淘汰策略有哪些

21、Redis持久化数据和缓存怎么做扩容?

22、Redis的过期键的删除策略

23、Redis的内存用完了会发生什么?

24、什么是事务?

25、MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据

26、事务管理(ACID)概述

27、Redis如何做内存优化?

28、Redis事务保证原子性吗,支持回滚吗

29、哨兵模式

30、基于客户端分配

31、Redis线程模型

32、Redis事务支持隔离性吗

33、Redis事务的概念

34、Redis集群之间是如何复制的?

35、Redis事务的三个阶段

36、Redis事务相关命令

37、Redis事务其他实现

38、Redis集群最大节点个数是多少?

39、官方Redis Cluster 方案(服务端路由查询)

40、为什么要做Redis分区?

41、基于代理服务器分片

42、说说Redis哈希槽的概念?

43、Redis集群会有写操作丢失吗?为什么?

44、生产环境中的 redis 是怎么部署的?

45、Redis集群的主从复制模型是怎样的?

46、Redis是单线程的,如何提高多核CPU的利用率?

47、Redis 主从架构

48、Redis实现分布式锁

49、Redis官方为什么不提供Windows版本?

50、Redis集群如何选择数据库?

51、Redis如何做大量数据插入?

52、Redis分区有什么缺点?

53、一个字符串类型的值能存储最大容量是多少?

54、什么是redis穿透?

55、如何解决 Redis 的并发竞争 Key 问题

56、什么是redis穿透?

57、Redis和Redisson有什么关系?

58、你知道有哪些Redis分区实现方案?

59、什么是 RedLock

60、缓存热点key

61、Redis与Memcached的区别

62、什么是redis雪崩?

63、Redis常见性能问题和解决方案?

64、缓存预热

65、缓存降级

66、分布式Redis是前期做还是后期规模上来了再做好?为什么?

67、如何保证缓存与数据库双写时的数据一致性?

68、Redis支持的Java客户端都有哪些?官方推荐用哪个?

69、Jedis与Redisson对比有什么优缺点?

70、热点数据和冷数据

Zookeeper面试题

1、集群支持动态添加机器吗?

2、 ZooKeeper 是什么?

3、 集群最少要几台机器,集群规则是怎样的?

4、 Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的?

5、Zookeeper 文件系统

7、 Zookeeper Watcher 机制 -- 数据变更通知

8、 Zookeeper 的典型应用场景

9、说说ZooKeeper文件系统

10、Zookeeper节点宕机如何处理?

11、说几个 zookeeper 常用的命令。

12、Zookeeper 有哪几种几种部署模式?

13、ZooKeeper 提供了什么?

14、Zookeeper的java客户端都有哪些?

15、Zookeeper有哪几种几种部署模式?

16、ZAB 协议?

17、Zookeeper的典型应用场景?

18、 ZAB 和 Paxos 算法的联系与区别?

19、四种类型的数据节点 Znode

20、Znode有哪些类型

21、客户端注册 Watcher 实现

22、 ACL 权限控制机制

23、服务端处理Watcher的流程?

24、客户端回调 Watcher流程?

25、客户端回调 Watcher

26、说一下Zookeeper Watcher机制

27、Zookeeper对节点的 watch监听通知是永久的吗?为什么不是永久的?

28、客户端注册Watcher的流程?

29、说说ACL权限控制机制

30、Chroot 特性

31、 zookeeper 负载均衡和 nginx 负载均衡区别

32、Zookeeper 下 Server 工作状态

33、Zookeeper 下 Server工作状态有哪些?

34、ZooKeeper和dubbo的区别?

35、zookeeper 是如何保证事务的顺序一致性的?

36、分布式集群中为什么会有 Master?

Dubbo面试题

  1. 为什么要用 Dubbo?

  2. Dubbo 是什么?

  3. Dubbo 的使用场景有哪些?

  4. Dubbo 核心功能有哪些?

  5. Dubbo 核心组件有哪些?

  6. Dubbo 服务器注册与发现的流程?

  7. Dubbo 的整体架构设计有哪些分层?

  8. Dubbo Monitor 实现原理?

  9. Dubbo 类似的分布式框架还有哪些?

  10. Dubbo 和 Spring Cloud 有什么关系?

  11. Dubbo 和 Spring Cloud 有什么哪些区别?

  12. Dubbo 和 Dubbox 之间的区别?

  13. Dubbo 有哪些注册中心?

  14. Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?

  15. Dubbo集群提供了哪些负载均衡策略?

  16. Dubbo的集群容错方案有哪些?

  17. Dubbo 配置文件是如何加载到 Spring 中的?

  18. 说说核心的配置有哪些?

  19. Dubbo 超时设置有哪些方式?

  20. 服务调用超时会怎么样?

  21. Dubbo 用到哪些设计模式?

  22. 服务上线怎么兼容旧版本?

  23. Dubbo telnet 命令能做什么?

  24. Dubbo 支持服务降级吗?

  25. Dubbo 支持服务降级吗?

  26. Dubbo SPI 和 Java SPI 区别?

  27. Dubbo 支持分布式事务吗?

  28. Dubbo 可以对结果进行缓存吗?

  29. Dubbo 必须依赖的包有哪些?

  30. Dubbo 支持哪些序列化方式?

  31. Dubbo 在安全方面有哪些措施?

  32. 服务调用是阻塞的吗?

  33. 服务提供者能实现失效踢出是什么原理?

  34. 同一个服务多个注册的情况下可以直连某一个服务吗?

  35. Dubbo 服务降级,失败重试怎么做?

38.Dubbo 使用过程中都遇到了些什么问题?

  1. 为什么要有RPC

  2. 什么是RPC

  3. PRC架构组件

  4. RPC和SOA、SOAP、REST的区别

image

Netty面试题

1、Netty 线程模型和 Reactor 模式

2、Netty 是什么?

3、Netty 设计模式

4、Netty 的特点是什么?

5、Netty 单机百万实战

6、Netty 支持哪些心跳类型设置?

7、JDK原生NIO程序的问题

8、Netty常见使用场景

9、Netty 发送消息有几种方式?

10、如何选择序列化协议?

11、Netty 和 Tomcat 的区别?

12、Netty 的优势有哪些?

13、Netty解码器 Decoder

14、Netty 的应用场景有哪些?

15、TCP 粘包/拆包的原因及解决方法?

16、Netty 高性能表现在哪些方面?

17、BIO、NIO和AIO的区别?

18、NIO的组成?

19、Netty 中有哪种重要组件?

20、Netty的线程模型?

21、NIOEventLoopGroup源码?

22、什么是 Netty 的零拷贝?

23、了解哪几种序列化协议?

24、默认情况 Netty 起多少线程?

25、何时启动?

五、微服务架构

image

读者福利:获取完整面试题和答案解析可以关注公众号:麒麟改bug,获取上述答案解析

Spring Boot面试题

1、 Spring Boot 中如何实现定时任务 ?

2、SpringBoot 实现热部署有哪几种方式?

3、 Spring Boot 有哪些优点?

4、 SpringBoot Starter的工作原理

5、 Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?

6、 Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

7、Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?

8、 SpringBoot支持什么前端模板,

9、 Spring Boot 需要独立的容器运行吗?

10、 spring-boot-starter-parent 有什么用 ?

11、 SpringBoot如何实现打包

12、开启 Spring Boot 特性有哪几种方式?

13、运行 Spring Boot 有哪几种方式?

14、Spring Boot 2.X 有什么新特性?与 1.X 有什么区别?

15、如何在 Spring Boot 启动的时候运行一些特定的代码?

16、spring boot 核心配置文件是什么?bootstrap.properties 和 application.properties 有何区别 ?

17、Spring Boot 是否可以使用 XML 配置 ?

18、Async异步调用方法

19、 什么是 Spring Profiles?

20、SpringBoot的缺点

21、Spring Boot 有哪几种读取配置的方式?

  1. 什么是 YAML?

23、什么是 Spring Boot?

24、 你如何理解 Spring Boot 配置加载顺序?

25、 什么是 JavaConfig?

26、SpringBoot与SpringCloud 区别

27、YAML 配置的优势在哪里 ?

28、SpringBoot事物的使用

29、 SpringBoot的自动配置原理是什么

30、为什么要用SpringBoot

31、 SpringBoot微服务中如何实现 session 共享 ?

32、 SpringBoot多数据源拆分的思路

33、 我们如何监视所有 Spring Boot 微服务?

34、 如何实现 Spring Boot 应用程序的安全性?

35、 保护 Spring Boot 应用有哪些方法?

36、 比较一下 Spring Security 和 Shiro 各自的优缺点 ?

37、 SpringBoot性能如何优化

38、您使用了哪些 starter maven 依赖项?

39、 Spring Boot 中如何解决跨域问题 ?

40、 Spring Boot 中的监视器是什么?

41、SpringBoot多数据源事务如何管理

42、 如何使用 Spring Boot 实现全局异常处理?

43、 Spring Boot 中的 starter 到底是什么 ?

44、 如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?Spring Boot项目如何热部署?

Spring cloud面试题

image

1、SpringBoot和SpringCloud的区别?

2、什么是微服务架构

3、 使用 Spring Boot 开发分布式微服务时,我们面临什么问题?

4、 Spring Cloud 是什么

5、 Spring Cloud和SpringBoot版本对应关系

5、 SpringCloud的优缺点

6、 Spring Cloud 和dubbo区别?

7、 什么是Eureka

8、 为什么需要学习Spring Cloud

9、SpringCloud由什么组成

10、 什么是Eureka的自我保护模式,

11、Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别

  1. 网关的作用是什么

18、服务注册和发现是什么意思?Spring Cloud 如何实现?

19、 DiscoveryClient的作用

20、 什么是Spring Cloud Zuul(服务网关)

21、 Eureka怎么实现高可用

22、 网关与过滤器有什么区别

23、 既然Nginx可以实现网关?为什么还需要使用Zuul框架

24、Zuul网关如何搭建集群

25、什么是网关?

26、 常用网关框架有那些?

27、 Ribbon是什么?

28、Zuul与Nginx有什么区别?

29、 如何实现动态Zuul网关路由转发

30、 Ribbon底层实现原理

31、ZuulFilter常用有那些方法

32、谈谈服务雪崩效应

33、服务雪崩效应产生的原因

34、 Nginx与Ribbon的区别

35、 负载平衡的意义什么?

36、 如何设计一套API接口

37、谈谈服务降级、熔断、服务隔离

38、在微服务中,如何保护服务?

39、什么是 Spring Cloud Bus?

40、什么是断路器

41、什么是Spring Cloud Confifig?

42、SpringCloud有几种调用接口方式

43、Ribbon和Feign调用服务的区别

44、分布式配置中心的作用?

45、服务降级底层是如何实现的?

46、分布式配置中心有那些框架?

47、什么是Feign?

48、什么是Spring Cloud Gateway?

49、SpringCloud Confifig 可以实现实时刷新吗?

六、项目实战

1、Spring Cloud Confifig

2、Spring Cloud Netflflix(重点,这些组件用的最多)

3、Spring Cloud Security

4、Spring Cloud Consul

5、Spring Cloud Task

6、Spring Cloud Sleuth

7、Spring Cloud Stream

8、Spring Cloud和SpringBoot版本对应关系

9、Spring Cloud OpenFeign

10、Spring Cloud Gateway

11、Spring Cloud Zookeeper

12、Spring Cloud的版本关系

13、Spring Cloud Bus

14、Spring Cloud和各子项目版本对应关系

七、互联网工具

Linux面试题

1、如何规划一台 Linux 主机,步骤是怎样?

2、什么是Linux

3、Linux 性能调优都有哪几种方法?

4、什么是 Linux 内核?

5、BASH和DOS之间的基本区别是什么?

6、Windows和Linux的区别

7、 请问当用户反馈网站访问慢,你会如何处理?

8、 Unix和Linux有什么区别?

9、Linux的基本组件是什么?

10、 Linux 开机启动过程?

11、 Linux 使用的进程间通信方式?

12、Linux 的体系结构

13、 Linux系统安装多个桌面环境有帮助吗?

14、什么是BASH?

15、 什么是root帐户

16、 Linux系统缺省的运行级别?

17、什么是GUI?

18、 Linux 有哪些系统日志文件?

19、开源的优势是什么?

20、 Linux 的目录结构是怎样的?

21、什么是交换空间?

22、什么是硬链接和软链接?

23、 什么是LILO?

24、 一台 Linux 系统初始化环境后需要做一些什么安全工作?

25、 GNU项目的重要性是什么?

26、 什么是CLI?

27、 RAID 是什么?

28、 Shell 脚本是什么?

29、 什么是 inode ?

30、简单 Linux 文件系统?

31、什么是网站数据库注入?

32、如何选择 Linux 操作系统版本?

以上就是小编分享的BAT必考Java真题合集,由于篇幅有限,小编已经把每个专题对应的面试题(附答案解析)整理成了文档,下面是整理的真题合集。

该资料获取方式:关注公众号:麒麟改bug,获取上述答案解析!

最后

小编分享的BAT必考Java真题合集整理不易,欢迎大家一起交流,喜欢文章记得关注我点赞哟,感谢支持!重要的事情说三遍,转发+转发+转发,一定要记得转发哦!!!