Java高频面试题和答案
一、Java 基础篇
- Object 有哪些常用方法?大致说一下每个方法的含义
- Java 创建对象有几种方式?
- 获取一个类对象的方式有哪些?
- ArrayList 和 LinkedList 的区别有哪些?
- 用过 ArrayList 吗?说一下它有什么特点?
- 有数组了为什么还要搞个 ArrayList 呢?
- 说说什么是 fail-fast?
- Hashtable 与 HashMap 的区别
- HashMap 中的 key 我们可以使用任何类作为 key 吗?
- HashMap 的长度为什么是 2 的 N 次方呢?
- HashMap 与 ConcurrentHashMap 的异同
- 红黑树有哪几个特征?
- 说说你平时是怎么处理 Java 异常的
- finally 模块执行了吗?是先执行 return 还是先执行 finally 模块?返回什么?
二、JVM 篇
15. Java 类加载器有几种?
16. 说一下有哪些类加载场景?
17. 说说 Java 类加载机制是什么?说说 new 创建一个普通对象的过程?
18. 说说类的生命周期?
19. 什么是双亲委派模型?
20. 如何破坏双亲委派模型?
21. 能不能自己也写一个 java.lang.String 类?
22. 说一下 JVM 运行时数据区有哪些?分别说一下它们的功能
23. 方法区和永久代有什么区别?
24. JVM 运行时数据区哪些地方会产生内存溢出?
25. 为什么要用 metaspace 替换 permspace 呢?
26. 熟悉哪些 JVM 调优参数?
27. Java 对象的引用类型有哪些?
28. JVM 垃圾回收算法有哪些?
29. 垃圾收集器有哪些?
30. 说说 JVM 中内存的分配与回收策略
三、Dubbo 篇
31. 说说一次 Dubbo 服务请求流程?
32. 说说 Dubbo 工作原理
33. Dubbo 支持哪些协议?
34. 注册中心挂了,consumer 还能不能调用 provider?
35. 怎么实现动态感知服务下线的呢?
36. Dubbo 负载均衡策略?
37. Dubbo 容错策略
38. Dubbo 动态代理策略有哪些?
39. 说说 Dubbo 与 Spring Cloud 的区别?
40. 说说 TCP 与 UDP 的区别,以及各自的优缺点
41. 说一下 HTTP 和 HTTPS 的区别
42. 说说 HTTP、TCP、Socket 的关系是什么?
43. 说一下 HTTP 的长连接与短连接的区别
四、MyBatis 篇
44. 说说 MyBatis 的缓存
45. JDBC 编程有哪些步骤?
46. 说一下 MyBatis 中使用的 #和 $ 有什么区别
47. MyBatis 中比如 UserMapper.java 是接口,为什么没有实现类还能调用?
48. MyBatis 中见过什么设计模式?
五、MySQL 篇
49. 简单说说在 MySQL 中执行依据查询 SQL 是如何执行的?
50. MySQL 有哪些存储引擎?
51. MySQL 中 varchar 与 char 的区别?varchar(30) 中的 30 代表的涵义?
52. int(11) 中的 11 代表什么涵义?
53. 为什么 SELECT COUNT(*) FROM table 在 InnoDB 比 MyISAM 慢?
54. 说说数据库的三范式和反模式
55. 在设计数据库表的时候,字段用于存储金额、余额时,选择什么类型比较好?
56. 大概说说 InnoDB 与 MyISAM 有什么区别?
57. 什么是索引?
58. 索引有什么优缺点?
59. MySQL 索引类型有哪些?
60. 什么时候不要使用索引?
61. 使用 MySQL 的索引应该注意些什么?
62. 怎么知道一条查询语句是否用到了索引,用了什么类型的索引?
63. 说说什么是 MVCC?
64. MVCC 可以为数据库解决什么问题?
65. 说说 MVCC 的实现原理
66. 什么是死锁?
67. MySQL 事务隔离级别?
68. 请说说 MySQL 数据库的锁?
69. 说说什么是锁升级?
70. 说说悲观锁和乐观锁
71. 怎样尽量避免死锁的出现?
六、RabbitMQ 篇
72. 看你简历上写了 RabbitMQ,通常会问:为什么要用 RabbitMQ?
73. 可能你讲了上面三个 RabbitMQ 的优点后,会继续问:使用 RabbitMQ 容易带来什么问题?
74. 那么多消息队列,为什么选 RabbitMQ 呢?
75. RabbitMQ 中什么是死信队列?
76. 如何处理死信队列?
77. 怎么保证消息不会被丢失?
78. RabbitMQ 怎么高可用呢?
79. RabbitMq 怎么保证消息的顺序性?
80. 如果有大量消息持续积压在队列了,怎么处理?
七、Redis 篇
81. 为什么要用缓存
82. 为什么 使用 Redis 而不是用 Memcached 呢?
83. 为什么 Redis 单线程模型效率也能那么高?
84. 说说 Redis 的线程模型
85. 说一下 Redis 有什么优点和缺点
86. Redis 缓存刷新策略有哪些?
87. Redis 持久化方式有哪些?以及有什么区别?
88. 持久化有两种,那应该怎么选择呢?
89. 怎么使用 Redis 实现消息队列?
90. 熟悉哪些 Redis 集群模式?
91. 缓存和数据库谁先更新呢?
八、Spring Boot 篇
92. Spring Boot 提供了哪些核心功能?
93. Spring Boot 核心注解是什么?
94. 说说 Spring Boot 的自动装配原理
95. Spring Boot 常用 starter 有哪些?
96. Spring 中的 starter 是什么?
97. Spring Boot 有什么优缺点?
98. 读取配置文件中配置项的有哪些方法?
九、Spring 篇
99. Spring 中 ApplicationContext 和 BeanFactory 的区别
100. 说一下你对 Spring IOC 的理解
101. Spring IOC 有什么优点?
102. Bean 的生命周期
103. Spring Bean 的作用域有哪些?
104. Spring 是怎么管理事务的?
105. 说说你对 Spring AOP 的理解
106. Spring 中用到了哪些设计模式?
107. Spring 框架中的单例 Bean 是线程安全的么?
108. Spring 是怎么解决循环依赖的?
十、ZooKeeper 篇
109. 说说 ZooKeeper 是什么?
110. ZooKeeper 有哪些应用场景?
111. ZooKeeper 有哪些节点类型?
112. 请描述一下 ZooKeeper 的通知机制是什么?
113. ZooKeeper 对节点的 watch 监听通知是永久的吗?
114. ZooKeeper 集群中有哪些角色?
115. ZooKeeper 集群中 Server 有哪些工作状态?
116. ZooKeeper 集群中是怎样选举 leader 的?
117. ZooKeeper 是如何保证事务的顺序一致性的呢?
118. ZooKeeper 集群中各服务器之间是怎样通信的?
119. ZooKeeper 分布式锁怎么实现的?
十一、并发编程篇
120. 通常创建线程有几种方式?
121. 说说线程的生命周期
122. 说说 synchronized 的使用和原理
123. synchronized 和 ReentrantLock 区别
124. 什么是线程安全?
125. 线程安全需要保证几个基本特征
126. 说一下线程之间是如何通信的?
127. 说说你对 volatile 的理解
128. 说一下 volatile 和 synchronized 的区别?
129. Thread 调用 run 方法和调 start 方法的区别?
130. 说一下 Java 创建线程池有哪些方式?
131. 说说 ThreadLocal 底层原理是什么,怎么避免内存泄漏?
132. 说说你对 JUC 下并发工具类
133. CyclicBarrier 和 CountdownLatch 有什么区别?
十二、设计模式篇
134. 你都熟悉哪些设计模式
十三、其他篇
136. 有 8 个球(大小颜色都一模一样),其中一个球比其他 7 个球中的任何一个都重,使用天平秤最多几次能找到最重的那个球?
137. 分布式幂等性如何设计?
138. 简单一次完整的 HTTP 请求所经历的步骤?
139. 说说分布式事务解决方案有哪些?
140. 说说常用的 JVM 调优命令和工具有哪些?
141. 说说你对 JVM 内存溢出和内存泄漏的理解
142. 说说 JVM 中有哪些常用参数?
143. 关于怎么准备面试,怎么应对面试,怎么和面试官聊等软实力
地址:文章地址
欢迎关注公众号:Java后端技术全栈