写点什么

2021 年金三银四 Java 面试突击大全,吃透这套 Java 真题合集,突破 BAT 面试官这道“防线”

用户头像
云流
关注
发布于: 2021 年 02 月 27 日

前言

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

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




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

读者福利:获取完整面试题和答案解析可以【见下图添加上小助手即可获取到了】



一、性能调优

  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 面试题



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

java 中的栈一般存储的是栈帧。

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

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

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



  • 类加载器:加载类文件到内存。Class loader 只管加载,只要符合文件结构就加载,至于能否运行,它不负责,那是有 Exectution Engine 负责的。

  • 执行引擎:也叫解释器,负责解释命令,交由操作系统执行。

  • 本地库接口:本地接口的作用是融合不同的语言为 java 所用

  • 运行时数据区:



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 面试题



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 外连接、内连接与自连接的区别


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 调优面试题



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 怎么做的动静分离?

二、并发编程



多线程面试题:

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、常用的并发工具类有哪些?

三、框架源码



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 面试题



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 实现一对一,一对多有几种方式,怎么操作的?



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

RabbitMQ 面试题

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

2、什么是 MQ?

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

4、MQ 的优点?

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



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 思路

读者福利:获取完整面试题和答案解析可以关注+转发后私信 关键字【真题合集】获取

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 面试题



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. 服务调用超时会怎么样?

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

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

25. Dubbo telnet 命令能做什么?

26. Dubbo 支持服务降级吗?

26. Dubbo 支持服务降级吗?

28. Dubbo SPI 和 Java SPI 区别?

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

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

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

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

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

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

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

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

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

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

39. 为什么要有 RPC

40. 什么是 RPC

41. PRC 架构组件

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



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、何时启动?

五、微服务架构



读者福利:获取完整面试题和答案解析可以【见下图添加上小助手即可】获取



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 有哪几种读取配置的方式?

22. 什么是 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 面试题



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 都可以提供服务注册与发现的功能,请说说两个的区别

17. 网关的作用是什么

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 真题合集,由于篇幅有限,小编已经把每个专题对应的面试题(附答案解析)整理成了文档,下面是整理的真题合集。

该资料获取方式:见下图添加上小助手即可获取上述答案解析!




最后

小编分享的 BAT 必考 Java 真题合集整理不易,欢迎大家一起交流,喜欢文章记得关注我点赞哟,感谢支持!!!


用户头像

云流

关注

还未添加个人签名 2020.09.02 加入

还未添加个人简介

评论

发布
暂无评论
2021年金三银四Java面试突击大全,吃透这套Java真题合集,突破BAT面试官这道“防线”