Java后端真题总结500+附答案整理分享(2021最新版)

这是一份全面的Java后端面试资料,涵盖Java中间件(如Zookeeper、RabbitMQ)、微服务、并发编程、Java基础、Spring Boot、Redis、Spring MVC、Spring Cloud、MySQL优化、JVM、Linux、Mybatis、网络编程、设计模式、大数据等多个关键领域的面试真题与答案。内容包括各种技术点的深入解析,如Zookeeper的会话管理、RabbitMQ的工作模式、Spring Boot的常用注解、并发编程中的线程池与并发工具类、JVM内存模型及调优、Elasticsearch的索引和搜索过程等。这份资料旨在帮助读者准备Java后端开发的面试,提高面试成功率。
摘要由CSDN通过智能技术生成

目录

前言

1、Java中间件

Zookeeper

RabbitMQ

2、微服务

3、并发编程

并发理论

线程池

并发容器

并发队列

并发工具类

4、Java基础

Java概述

基础语法

数据类型

编码

注释

访问修饰符

运算符

关键字

流程控制语句

面向对象

面向对象概述

面向对象三大特性

变量与方法

内部类

重写与重载

对象相等判断

值传递

Java包

IO流

反射

常用API

5、Spring Boot

6、Redis

7、Spring MVC

概述

核心组件

工作原理

MVC框架

常用注解

其他

8、Spring Cloud

什么是微服务架构

Eureka

Zuul

Ribbon

Hystrix

Feign

Bus

Config

Gateway

SpringCloud主要项目

9、MySQL优化

10、JVM

11、Linux

12、Mybatis

13、网络编程

1 TCP / UDP

2 Socket

3. HTTP

14、设计模式

15、大数据

选择题

面试题

16、Tomcat

17、多线程

18、Nginx

19、Memcache

20、Java异常

Java异常架构与异常关键字

 Java异常处理

Java异常常见面试题

Java异常处理最佳实践

21、Java虚拟机精选专题

Java内存模型

垃圾回收机制及算法

垃圾收集器以及新生代、老年代、永久代

内存分配策略

JVM调优

22、Java集合

集合容器概述

List接口

Set接口

Map接口

辅助工具类

23、Git常用命令

配置操作

本地操作

分支操作

变更历史

标签操作

远端交互

24、Elasticsearch

25、Dubbo

基础知识

架构设计

分布式框架

注册中心

集群

配置

通信协议

设计模式

运维管理

SPI

其他

RPC

最后


前言

本编分享的Java后端开发面试总结:包含了JavaOOP、Java集合容器、Java异常、并发编程、Java反射、Java序列化、JVM、Redis、Spring MVC、MyBatis、MySQL数据库、消息中间件MQ、Dubbo、Linux、ZooKeeper、 分布式&数据结构与算法等25个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份PDF拿下众多大厂的offer,今天在这里总结分享给到大家!

1、Java中间件

Zookeeper

1. ZooKeeper 是什么?

2. ZooKeeper 提供了什么?

3.Zookeeper 文件系统

4. ZAB 协议?

5. 四种类型的数据节点 Znode

6. Zookeeper Watcher 机制 -- 数据变更通知

7. 客户端注册 Watcher 实现

8. 服务端处理 Watcher 实现

9. 客户端回调 Watcher

10. ACL 权限控制机制

11. Chroot 特性

12. 会话管理

13. 服务器角色

14. Zookeeper 下 Server 工作状态

15. 数据同步

16. zookeeper 是如何保证事务的顺序一致性的?

17. 分布式集群中为什么会有 Master?

18. zk 节点宕机如何处理?

19. zookeeper 负载均衡和 nginx 负载均衡区别

20. Zookeeper 有哪几种几种部署模式?

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

22. 集群支持动态添加机器吗?

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

24. Zookeeper 的 java 客户端都有哪些?

25. chubby 是什么,和 zookeeper 比你怎么看?

26. 说几个 zookeeper 常用的命令。

27. ZAB 和 Paxos 算法的联系与区别?

28. Zookeeper 的典型应用场景

RabbitMQ

1. 什么是MQ

2. MQ的优点

3. 解耦、异步、削峰是什么?。

4. 消息队列有什么缺点

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

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

7. MQ 有哪些常见问题?如何解决这些问题?

8. 什么是RabbitMQ?

9. rabbitmq 的使用场景

10. RabbitMQ基本概念

11. RabbitMQ的工作模式

12. 如何保证RabbitMQ消息的顺序性?

13. 消息如何分发?

14. 消息怎么路由?

15. 消息基于什么传输?

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

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

18. 如何保证RabbitMQ消息的可靠传输?

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

20. 如何保证高可用的?RabbitMQ 的集群

21. 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,怎么办?

22. 设计MQ思路

23.RoctetMq的架构

24. RocketMq消息模型(专业术语)

25.核心问题

Rocket MQ 使用排查指南

RocketMQ原理及快速入门

发送问题排查

消费问题排查

其他问题排查

《RocketMQ技术内幕》

Kafka知识汇总

基础概念

Rebalance (重平衡)

日志索引

高性能, 高吞吐

Page Cache & MMap

Java中间件面试题答案解析

2、微服务

1、不同版本的 Spring Framework 有哪些主要功能?

2、什么是 Spring Framework?

3、列举 Spring Framework 的优点。

4、Spring Framework 有哪些不同的功能?

5、Spring Framework 中有多少个模块,它们分别是什么?

6、什么是 Spring 配置文件?

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

8、使用 Spring 有哪些方式?

9、什么是 Spring IOC 容器?

10、什么是依赖注入?

11、可以通过多少种方式完成依赖注入? 

​12、区分构造函数注入和 setter 注入。

​13、spring 中有多少种 IOC 容器? 

​14、区分 BeanFactory 和 ApplicationContext。 15、列举 IoC 的一些好处。 

​15、列举 IoC 的一些好处。

16、Spring IoC 的实现机制。 

​17、什么是 spring bean? 

​18、spring 提供了哪些配置方式? 

​19、spring 支持集中 bean scope? 

​20、spring bean 容器的生命周期是什么样的? 

​21、什么是 spring 的内部 bean? 

​22、什么是 spring 装配 

​23、自动装配有哪些方式? 

​24、自动装配有什么局限? 

​25、什么是基于注解的容器配置

26、如何在 spring 中启动注解装配?

 ​27、@Component, @Controller, @Repository,@Service 有何区别? 

​28、@Required 注解有什么用? 

​29、@Autowired 注解有什么用? 

30、@Qualifier 注解有什么用? 

​31、@RequestMapping 注解有什么用?

​32、spring DAO 有什么用?

​33、列举 Spring DAO 抛出的异常。

​34、spring JDBC API 中存在哪些类? 

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

 ​36、列举 spring 支持的事务管理类型

​37、spring 支持哪些 ORM 框架 

​38、什么是 AOP? 

​39、什么是 Aspect? 

​40、什么是切点(JoinPoint) 

​41、什么是通知(Advice)? 

​42、有哪些类型的通知(Advice)? 

​43、指出在 spring aop 中 concern 和 cross-cuttingconcern的不同之处。 

​44、AOP 有哪些实现方式? 

​45、Spring AOP and AspectJ AOP 有什么区别? 

​46、如何理解 Spring 中的代理? 

​47、什么是编织(Weaving)? 

​48、Spring MVC 框架有什么用?

49、描述一下 DispatcherServlet 的工作流程 

​50、介绍一下 WebApplicationContext 

​51、什么是 spring? 

​52、使用 Spring 框架的好处是什么? 

​53、Spring 由哪些模块组成? 

​54、核心容器(应用上下文) 模块。 

​55、BeanFactory – BeanFactory 实现举例。 

66、XMLBeanFactory 

​67、解释 AOP 模块 

​69、解释对象/关系映射集成模块。 

​70、解释 WEB 模块。 

​72、Spring 配置文件 

​73、什么是 Spring IOC 容器? 

​74、IOC 的优点是什么? 

​75、ApplicationContext 通常的实现是什么? 

​76、Bean 工厂和 Application contexts 有什么区别? 

​77、一个 Spring 的应用看起来象什么? 

​78、什么是 Spring 的依赖注入? 

​79、有哪些不同类型的 IOC(依赖注入)方式?

 ​80、哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入? 

​81.什么是 Spring beans?

82、一个 Spring Bean 定义 包含什么? 

​83、如何给 Spring 容器提供配置元数据? 

​84、你怎样定义类的作用域? 

​85、解释 Spring 支持的几种 bean 的作用域。 

​86、Spring 框架中的单例 bean 是线程安全的吗?

87、解释 Spring 框架中 bean 的生命周期。 

​88、哪些是重要的 bean 生命周期方法?你能重载它们吗? 

​89、什么是 Spring 的内部 bean? 

​90、在 Spring 中如何注入一个 java 集合? 

​91、什么是 bean 装配?

92、什么是 bean 的自动装配? 

​93、解释不同方式的自动装配 。 

94.自动装配有哪些局限性 ? 

​95、你可以在 Spring 中注入一个 null 和一个空字符串吗?

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

​97、什么是基于注解的容器配置? 

​98、怎样开启注解装配? 

​99、@Required 注解 

​100、@Autowired 注解 

​101、@Qualifier 注解 

​102.在 Spring 框架中如何更有效地使用 JDBC?

103、JdbcTemplate 

​104、Spring 对 DAO 的支持 

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

​106、Spring 支持的 ORM 

​107. 如何通过 HibernateDaoSupport 将 Spring 和 Hibernate 结合起来? 

​108、Spring 支持的事务管理类型 

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

​110、你更倾向用那种事务管理类型? 

​111、解释 AOP 

​112、Aspect 切面

​113、在 Spring AOP 中,关注点和横切关注的区别是什么? 

​114、连接点 

​115、通知 

​116、切点 

​117、什么是引入? 

118、什么是目标对象? 

119、什么是代理? 

120、有几种不同类型的自动代理?

121、什么是织入。什么是织入应用的不同点? 

​122、解释基于 XML Schema 方式的切面实现。 

123、解释基于注解的切面实现 

124、什么是 Spring 的 MVC 框架? 

125、DispatcherServlet 

126、WebApplicationContext 

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

128、@Controller 注解 

129、@RequestMapping 注解 

Java微服务面试题附答案解析

3、并发编程

1. 为什么要使用并发编程

2. 多线程应用场景

3. 并发编程有什么缺点

4. 并发编程三个必要因素是什么?

5. Java 程序中怎么保证多线程的运行安全?

6. 并行和并发有什么区别?

7. 什么是多线程

8. 多线程的好处

9. 多线程的劣势:

10. 线程和进程区别

11. 什么是上下文切换?

12. 守护线程和用户线程有什么区别呢?

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

14. 什么是线程死锁

15. 形成死锁的四个必要条件是什么

16. 如何避免线程死锁

17. 创建线程的四种方式

19. 线程的 run()和 start()有什么区别?

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

21. 什么是 Callable 和 Future?

22. 什么是 FutureTask

23. 线程的状态

24. Java 中用到的线程调度算法是什么?

25. 线程的调度策略

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

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

28. sleep() 和 wait() 有什么区别?

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

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

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

32. Thread 类中的 yield 方法有什么作用?

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

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

35. 如何停止一个正在运行的线程?

36. Java 中 interrupted 和 isInterrupted 方法的区别?

37. 什么是阻塞式方法?

38. Java 中你怎样唤醒一个阻塞的线程?

39. notify() 和 notifyAll() 有什么区别?

40. 如何在两个线程间共享数据?

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

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

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

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

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

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

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

48. 你对线程优先级的理解是什么?

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

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

51. 一个线程运行时发生异常会怎样?

52. Java 线程数过多会造成什么异常?

53. 多线程的常用方法

并发理论

1. Java中垃圾回收有什么目的?什么时候进行垃圾回收?

2. 线程之间如何通信及线程之间如何同步

3. Java内存模型

4. 如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?

5. finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?

6. 什么是重排序

7. 重排序实际执行的指令步骤

8. 重排序遵守的规则

9. as-if-serial规则和happens-before规则的区别

10. 并发关键字 synchronized ?

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

12. 单例模式了解吗?给我解释一下双重检验锁方式实现单例模式!”

13. 说一下 synchronized 底层实现原理?

14. synchronized可重入的原理

15. 什么是自旋

16. 多线程中 synchronized 锁升级的原理是什么?

17. 线程 B 怎么知道线程 A 修改了变量

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

19. synchronized、volatile、CAS 比较

20. synchronized 和 Lock 有什么区别?

21. synchronized 和 ReentrantLock 区别是什么?

22. volatile 关键字的作用

23. Java 中能创建 volatile 数组吗?

24. volatile 变量和 atomic 变量有什么不同?

25. volatile 能使得一个非原子操作变成原子操作吗?

26. synchronized 和 volatile 的区别是什么?

27. final不可变对象,它对写并发应用有什么帮助?

28. Lock 接口和synchronized 对比同步它有什么优势?

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

30. 什么是 CAS

31. CAS 的会产生什么问题?

32. 什么是原子类

33. 原子类的常用类

34. 说一下 Atomic的原理?

35. 死锁与活锁的区别,死锁与饥饿的区别?

线程池

1. 什么是线程池?

2. 线程池作用?

3. 线程池有什么优点?

4. 什么是ThreadPoolExecutor?

5. 什么是Executors?

6. 线程池四种创建方式?

7. 在 Java 中 Executor 和 Executors 的区别?

8. 四种构建线程池的区别及特点?

9. 线程池都有哪些状态?

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

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

12. ThreadPoolExecutor饱和策略有哪些?

13. 如何自定义线程线程池?

14. 线程池的执行原理?

15. 如何合理分配线程池大小?

并发容器

1. 你经常使用什么并发容器,为什么?

2. 什么是Vector

3. ArrayList和Vector有什么不同之处?

4. 为什么HashTable是线程安全的?

5. 用过ConcurrentHashMap,讲一下他和HashTable的不同之处?

6. Collections.synchronized * 是什么?

7. Java 中 ConcurrentHashMap 的并发度是什么?

8. 什么是并发容器的实现?

9. Java 中的同步集合与并发集合有什么区别?

10. SynchronizedMap 和 ConcurrentHashMap 有什么区别?

11. CopyOnWriteArrayList 是什么?

12. CopyOnWriteArrayList 的使用场景?

13. CopyOnWriteArrayList 的缺点?

14. CopyOnWriteArrayList 的设计思想?

并发队列

1. 什么是并发队列:

2. 并发队列和并发集合的区别:

3. 怎么判断并发队列是阻塞队列还是非阻塞队列

4. 阻塞队列和非阻塞队列区别

5. 常用并发列队的介绍:

并发队列的常用方法

并发工具类

1. 常用的并发工具类有哪些?

2021最新版Java并发编程面试题(附答案解析)

4、Java基础

Java概述

1. 何为编程

2. 什么是Java

3. jdk1.5之后的三大版本

4. Jdk和Jre和JVM的区别

5. 什么是跨平台性?原理是什么

6. Java语言有哪些特点

7. 什么是字节码?采用字节码的最大好处是什么

8. 什么是Java程序的主类?应用程序和小程序的主类有何不同?

9. Java应用程序与小程序之间有那些差别?

10. Java和C++的区别

11. Oracle JDK 和 OpenJDK 的对比

基础语法

数据类型

12. Java有哪些数据类型

13. switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上

14. 用最有效率的方法计算 2 乘以 8

15. Math.round(11.5) 等于多少?Math.round(-11.5)等于多少

16. float f=3.4;是否正确

17. short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗

编码

18. Java语言采用何种编码方案?有何特点?

注释

19. 什么Java注释

访问修饰符

20. 访问修饰符 public,private,protected,以及不写(默认)时的区别

运算符

21. &和&&的区别

关键字

22. Java 有没有 goto

23. final 有什么用?

24. final finally finalize区别

25. this关键字的用法

26. super关键字的用法

27. this与super的区别

28. static存在的主要意义

29. static的独特之处

30. static应用场景

31. static注意事项

流程控制语句

32. break ,continue ,return 的区别及作用

33. 在 Java 中,如何跳出当前的多重嵌套循环

面向对象

面向对象概述

34. 面向对象和面向过程的区别

面向对象三大特性

35. 面向对象的特征有哪些方面

36. 什么是多态机制?Java语言是如何实现多态的?

37. 面向对象五大基本原则是什么(可选)

38. 抽象类和接口的对比

39. 普通类和抽象类有哪些区别?

40. 抽象类能使用 final 修饰吗?

41. 创建一个对象用什么关键字?对象实例与对象引用有何不同?

变量与方法

42. 成员变量与局部变量的区别有哪些

43. 在Java中定义一个不做事且没有参数的构造方法的作用

44. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?

45. 一个类的构造方法的作用是什么?若一个类没有声明构造方法,改程序能正确执行吗?为什么?

46. 构造方法有哪些特性?

47. 静态变量和实例变量区别

48. 静态变量与普通变量区别

49. 静态方法和实例方法有何不同?

50. 在一个静态方法内调用一个非静态成员为什么是非法的?

51. 什么是方法的返回值?返回值的作用是什么?

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值