目录
前言
本编分享的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
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 注解
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. 常用的并发工具类有哪些?
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. 什么是方法的返回值?返回值的作用是什么?