史上最全Java面试题,Java面试必备

我自己前前后后加起来总共应该参加了不下四五十次的面试,另外参考网上的一些面试题,整理了这个面试题库,希望可以帮助到大家。

篇幅有限,我在上千道面试题中从各技术方向选出15道,分享给大家
可以关注公众号:【Java专栏】,发送" 面试题 " 获取完整的面试题(整理成了PDF,并且带目录)
或者 ☺️☺️点击这里,获取面试手册及答案😌😌

Java基础

1. a=a+b与a+=b有什么区别吗?

2. 构造器(constructor)是否可被重写(override)

3. Oracle JDK 和 OpenJDK 的对比

4. 什么Java注释

5. Java有哪些数据类型

6. final 在 Java 中有什么作用?

7. 什么是 static 块?

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

9. Java程序是如何执行的

10. Java中引用数据类型有哪些,它们与基本数据类型有什么区别?

11. static注意事项

12. final 修饰 StringBuffer 后还可以 append 吗?

13. float f=3.4;是否正确

14. main() 方法可以重载吗?

15. int 和 Integer 有什么区别

字符串

16. String str="i"与 String str=new String(“i”)一样吗?

17. 如何让一个字符串变成小写或大写形式?

18. 如何将String转换为byte array,反过来呢?

19. String 类的常用方法都有那些?

20. 为什么要引入SpringBuffer、StringBuilder两种字符串处理类?

21. Java 中操作字符串都有哪些类?它们之间有什么区别?

22. 如何判断两个String是否相等?

23. String、StringBuffer和StringBuilder区别(类似上一题)

24. 创建String对象的不同方式有哪些?

25. 如何分割一个String?

26. String s = new String(“xyz”);创建了几个StringObject?是否可以继承String类?

27. String是不可变的有什么好处?

28. 如何比较两个字符串?

29. 如何将String转换为char,反过来呢?

30. 什么是字符串池?

容器

31. 我们如何对一组对象进行排序?

32. HashMap在JDK1.7和JDK1.8中有哪些不同?

33. 为何迭代器没有一个方法可以直接获取下一个元素,而不需要移动游标?

34. 集合框架里实现的通用算法有哪些?

35. 与Java集合框架相关的有哪些最好的实践?

36. ArrayList和Vector有何异同点?

37. LinkedHashMap和PriorityQueue的区别

38. UnsupportedOperationException是什么?

39. ArrayList和LinkedList区别?

40. List、Map、Set三个接口,存取元素时,各有什么特点?

41. 阻塞队列的实现,ArrayBlockingQueue的底层实现?

42. Iterator是什么?

43. EnumSet是什么?

44. 在迭代一个集合的时候,如何避免ConcurrentModificationException?

45. HashMap的实现原理

多线程并发

46. 什么是阻塞式方法?

47. 线程池作用

48. 说一说自己对于 synchronized 关键字的了解

49. CopyOnWriteArrayList可以用于什么应用场景?

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

51. 多线程和单线程的区别和联系?

52. synchronized包括哪两个jvm重要的指令?

53. 线程有哪些基本状态?

54. 什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?

55. 常用的线程池模式以及不同线程池的使用场景?

56. Java中notify 和 notifyAll有什么区别?

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

58. 说说自己是怎么使用 synchronized 关键字,在项目中用到了吗synchronized关键字最主要的三种使用方式:

59. sleep方法和wait方法有什么区别

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

异常

61. 列出一些你常见的运行时异常?

62. 阐述 final、finally、finalize 的区别

63. 运行时异常与一般异常有何异同?

64. Throw 和 throws 的区别

65. Excption与Error包结构

66. Java异常的分类

67. 简单说说Java中的异常处理机制的简单原理和应用。

68. Java异常简介

69. 什么是受检异常

70. try {}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?

71. Error 和 Exception 有什么区别?

泛型

72. 使用泛型的好处?

73. 什么是泛型中的限定通配符和非限定通配符 ?

74. 你可以把List传递给一个接受List参数的方法吗?

75. 什么是泛型擦除

76. 如何编写一个泛型方法,让它能接受泛型参数并返回泛型类型?

77. 什么是泛型

78. List<? extends T>和List <? super T>之间有什么区别 ?

79. 泛型常用特点

80. Java的泛型是如何工作的 ? 什么是类型擦除 ?

序列化

81. Serializable 接口有几个方法? 如果没有方法,那么为什么会有这样的接口?

82. 序列化有什么用途?

83. 如果你不希望某些成员被序列化,应该怎么做?

84. 序列化和反序列化

85. 你不定义serialVersionUID, 会发生什么?

86. serialVersionUID有什么用,如何使用serialVersionUID

87. 什么类型的变量不会被序列化?

88. 能否自定义序列化的过程?

89. Serializable 和 Externalizable 接口有何不同?

90. 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。

91. 如果某个类实现了 Serializable ,但父类没实现,那么当执行反序列化的时候,对象状态是怎样的?

反射

92. 什么是反射机制?

93. 反射机制优缺点

94. 反射机制的应用场景有哪些?

95. 哪里用到反射机制?

96. 如何使用Java的反射?

97. Java反射机制的作用

98. Java获取反射的三种方法

99. 反射机制可以做什么?

文件I/O

100. Java 中 IO 流分为几种?

101. 什么是Filter流?

102. 讲讲NIO

103. 说说File类

104. 谈谈Java IO里面的常见类,字节流,字符流、接口、实现类、方法阻塞

105. 有哪些Filter流的子类?

106. IO管道

107. FileInputStream和FileOutputStream是什么?

108. System.out.println()是什么?

109. 常见的NIO框架有哪些

110. BIO、NIO、AIO 有什么区别?

111. Java IO的用途和特征

112. 说说管道流(Piped Stream)

113. Java 中怎么创建 ByteBuffer?

114. Java IO 中的设计模式?(重点)

面向对象

115. 内部类的二个好处是什么?

116. 在Java中,子类可以从父类中继承哪些?

117. Java 支持多继承么?

118. 内部类的作用?

119. Java多态的理解

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

121. 为什么 Java 不支持多重继承?

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

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

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

125. 封装具有的特性?

网络

126. 网络协议是什么

127. TCP和UDP的应用场景:

128. 用现实理解三次握手的具体细节

129. 什么是对称加密与非对称加密

130. 运行在TCP 或UDP的应用层协议分析。

131. 什么是Cookie

132. HTTP的响应报文有哪些?

133. TCP 协议如何来保证传输的可靠性

134. 为什么在GET请求中会对URL进行编码?

135. 客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?

136. 什么是 XSS 攻击?

137. 说说HTTP常用的状态码及其含义?

138. 从浏览器地址栏输入url到显示主页的过程

139. TCP 是如何实现数据的可靠性?

140. IP地址是怎样分类的,你知道吗?

JVM

141. Java 中堆和栈有什么区别?

142. 哪些是 GC Roots?

143. Java内存结构?

144. 你能说出来几个垃圾收集器

145. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

146. 什么时候进行MinGC和FullGC

147. 如何开启和查看 GC 日志?

148. 谈谈 JVM 中的常量池

149. 谈谈你知道的垃圾回收算法

150. System.gc() 和 Runtime.gc() 会做什么事情?

151. Java内存分配

152. 生产上如何配置垃圾收集器的?

153. 遇到过堆外内存溢出吗?

154. OOM你遇到过哪些情况,SOF你遇到过哪些情况

155. 描述一下什么情况下,对象会从年轻代进入老年代

MySQL

156. innodb引擎的特性

157. 字段为什么要求定义为not null?

158. 锁的优化策略

159. 索引的区别

160. InnoDB 引擎的四大特性是什么?

161. SQL 注入漏洞产生的原因?如何防止?

162. 存储过程和函数好像差不多,你说说他们有什么区别?

163. SQL语句优化的一些方法?

164. MySQL支持哪些存储引擎?

165. 非聚簇索引一定会回表查询吗?

166. MyISAM索引与InnoDB索引的区别?

167. 简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)

168. 什么是关系型数据库?

169. 请说明varchar和text的区别

170. UNION与UNION ALL的区别?

Redis

171. 为什么redis需要把所有数据放到内存中?

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

173. Redis 为什么是单线程的

174. 使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?

175. 使用redis有哪些好处?

176. 定期删除策略

177. Redis提供了哪几种持久化方式?

178. 缓存穿透、缓存击穿、缓存雪崩解决方案?

179. redis 过期策略都有哪些?LRU 算法知道吗?

180. 你知道有哪些Redis分区实现方案?

181. 为什么要做Redis分区?

182. Redis中数据库默认是多少个db即作用?

183. redis 常见数据结构以及使用场景分析

184. 如何解决 Redis 的并发竞争 Key 问题

185. Reids的特点

MyBatis

186. MyBatis实现一对一有几种方式?具体怎么操作的?

187. Mybatis 比 IBatis 比较大的几个改进是什么?

188. MyBatis的功能架构是怎样的

189. 通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

190. 一对一、一对多的关联查询 ?

191. 为什么需要预编译

192. RowBounds 是一次性查询全部结果吗?为什么?

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

194. 使用MyBatis的mapper接口调用时有哪些要求?

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

196. Mybais 常用注解 ?

197. Mybatis动态sql有什么用?执行原理?有哪些动态sql?

198. MyBatis 里面的动态 Sql 是怎么设定的?用什么语法?

199. 什么是Mybatis?

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

Spring

201. 什么是 Spring IOC 容器?

202. Spring 支持哪些 ORM 框架

203. @Controller 注解

204. Spring AOP and AspectJ AOP 有什么区别?

205. @Resource 注解解释

206. @RequestMapping 注解

207. 怎样用注解的方式配置Spring?

208. Spring 中的 IoC 的实现原理就是工厂模式加反射机制。

209. @Required 注解有什么用?

210. spring DAO 有什么用?

211. 怎样开启注解装配?

212. spring 中有多少种 IOC 容器?

213. 如何理解 Spring 中的代理?

214. 列举 Spring DAO 抛出的异常。

215. WebApplicationContext

SpringBoot

216. springboot自动配置的原理

217. RequestMapping 和 GetMapping 的不同之处在哪里?

218. 微服务中如何实现 session 共享

219. 创建一个 Spring Boot Project 的最简单的方法是什么?

220. 运行 Spring Boot 有哪几种方式?

221. 什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?

222. SpringBoot启动时都做了什么?

223. 什么是YAML?

224. 什么是JavaConfig?

225. 怎么理解 Spring Boot 中 “约定优于配置“

226. Spring Boot 中的 starter 到底是什么

227. 什么是 Spring Data REST?

228. 如何禁用一个特定自动配置类?

229. 为什么我们不建议在实际的应用程序中使用 Spring Data Rest?

230. Spring Boot、Spring MVC 和 Spring 有什么区别?

SpringCloud

231. Spring Cloud的版本关系

232. 什么是熔断?什么是服务降级?

233. 分布式配置中心能干嘛?

234. 什么是 Hystrix?它如何实现容错?

235. 什么是 Netflix Feign?它的优点是什么?

236. 负载平衡的意义什么?

237. 作为 务注册中心,Eureka比Zookeeper好在哪里?

238. Hystrix相关注解

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

240. 什么是 Hystrix 断路器?我们需要它吗?

241. spring cloud 的核心组件有哪些

242. 什么是Eureka

243. 你所知道的微服务技术栈?

244. eureka自我保护机制是什么?

245. Spring Cloud的子项目(主要项目)

Dubbo

246. Dubbo超时时间的设置

247. 了解Dubbo SPI机制吗?

248. Dubbo有哪些注册中心?

249. Dubbo默认使用什么注册中心,还有别的选择吗?

250. Dubbo的zookeeper做注册中心,如果注册中心全部挂掉,发布者和订阅者还能通信吗?

251. 服务调用超时问题怎么解决

252. 能说下Dubbo的工作原理吗?

253. Dubbo如何优雅停机?

254. Dubbo用到哪些设计模式,简要介绍?

255. 如何解决服务调用链过长的问题?

256. 说说服务暴露的流程?

257. 注册中心宕机,服务间是否可以继续通信

258. 在 Provider 上可以配置的 Consumer 端的属性有哪些?

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

260. Dubbo服务负载均衡策略?

Nginx

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

262. 请解释ngx_http_upstream_module的作用是什么?

263. 怎么限制浏览器访问?

264. 限流怎么做的?

265. Nginx条件判断

266. 为什么Nginx性能这么高?

267. 请列举Nginx服务器的最佳用途。

268. 请解释是否有可能将Nginx的错误替换为502错误、503?

269. Nginx 常用命令?

270. Nginx目录结构有哪些?

271. 请解释你如何通过不同于80的端口开启Nginx?

272. Nginx怎么判断IP不可访问?

273. Nginx设置重定向

274. 长连接和短连接区别

275. 请列举Nginx的一些特性。

zookeeper

276. ZooKeeper 是什么?

277. ACL 权限控制机制

278. ZooKeeper 提供了什么?

279. Zookeeper 和 Dubbo 的关系?

280. 说几个 zookeeper 常用的命令

281. 客户端回调 Watcher

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

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

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

285. Chroot 特性

286. Zookeeper Watcher 机制 – 数据变更通知

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

288. 有哪些著名的开源项目用到了 ZooKeeper?

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

290. Zookeeper 的典型应用场景

MQ

291. 交换器无法根据自身类型和路由键找到符合条件队列时,有哪些处理?

292. RocketMq的存储机制了解吗?

293. 导致的死信的几种原因?

294. RabbitMQ是什么?

295. 使用 MQ 的缺陷有哪些?

296. 为什么要用RocketMq?

297. rocketmq如何保证高可用性?

298. RocketMQ Broker中的消息被消费后会立即删除吗?

299. 怎么保证消息发到同一个queue?

300. 集群中的节点类型?

301. 使用RabbitMQ有什么好处?

302. RocketMQ的消息堆积如何处理?

303. RocketMq的存储结构是怎样的?

304. 如何保证消息不被重复消费?

305. 发送确认机制?

Kafka

306. 如何设置Kafka能接收的最大消息的大小?

307. Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么

308. Kafka消息是采用Pull模式,还是Push模式?

309. Kafka 高效文件存储设计特点

310. Consumer与topic关系

311. 你们是怎么对Kafka进行压测的?

312. Kafka 分区的目的?

313. Kafka中的消息有序吗?怎么实现的?

314. 如何估算Kafka集群的机器数量?

315. Kafka的抵消额是多少?

316. kafka中的 zookeeper 起到什么作用,可以不用zookeeper么

317. 你知道kafka是怎么维护offset的吗?

318. 谈谈你对Kafka幂等性的理解?

319. 监控Kafka的框架都有哪些?

320. Kafka分区数、副本数和topic数量多少比较合适?

ElasticSearch

321. ES 写数据过程

322. 在索引中更新 Mapping 的语法?

323. 你能否列出与 Elasticsearch 有关的主要可用字段数据类型?

324. 在 Elasticsearch 中列出集群的所有索引的语法是什么?

325. 我们可以在 Elasticsearch 中执行搜索的各种可能方式有哪些?

326. 底层 lucene

327. Elasticsearch Analyzer 中的字符过滤器如何利用?

328. 你可以列出 Elasticsearch 各种类型的分析器吗?

329. 在并发情况下,ES如果保证读写一致?

330. 精准匹配检索和全文检索匹配检索的不同?

331. 在 Elasticsearch 中删除索引的语法是什么?

332. ElasticSearch中的集群、节点、索引、文档、类型是什么?

333. 简要介绍一下Elasticsearch?

334. 如何解决ES集群的脑裂问题

335. 解释一下 Elasticsearch集群中的 索引的概念 ?

版权声明:程序员胖胖胖虎阿 发表于 2022年11月10日 上午8:32。
转载请注明:史上最全Java面试题,Java面试必备 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...