我自己前前後後加起來總共應該參加了不下四五十次的面試,另外參考網上的一些面試題,整理了這個面試題庫,希望可以幫助到大家。
篇幅有限,我在上千道面試題中從各技術方向選出15道,分享給大家
可以關注公眾號:【Java專欄】,傳送" 面試題 " 獲取完整的面試題(整理成了PDF,並且帶目錄)
或者 ☺️☺️點選這裡,獲取面試手冊及答案??
Java基礎
1. short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎
2. Java中的抽象類和介面的區別?
3. 靜態變數與普通變數區別
4. 內部類相關,看程式說出執行結果
5. &和&&的區別
6. 內部類的分類有哪些
7. 什麼是 static 塊?
8. final有哪些用法?
9. 能將 int 強制轉換為 byte 型別的變數嗎?如果該值大於 byte 型別的範圍,將會出現什麼現象?
10. 訪問修飾符 public,private,protected,以及不寫(預設)時的區別
11. == 和 equals 的區別是什麼?
12. JDK和JRE和JVM的區別
13. 在Java中定義一個不做事且沒有引數的構造方法的作用
14. 什麼是Java
15. Java 中 main() 方法的重要性是什麼?
字串
16. String 類的常用方法都有那些?
17. String是不可變的有什麼好處?
18. 什麼是字串池?
19. String s = new String("xyz");建立了幾個StringObject?是否可以繼承String類?
20. String、StringBuffer和StringBuilder區別(類似上一題)
21. 如何分割一個String?
22. 下面這條語句一共建立了多少個物件:String s="a"+"b"+"c"+"d"
23. 如何比較兩個字串?
24. 為什麼要引入SpringBuffer、StringBuilder兩種字串處理類?
25. 如何將String轉換為char,反過來呢?
26. Java 中操作字串都有哪些類?它們之間有什麼區別?
27. 建立String物件的不同方式有哪些?
28. String str="i"與 String str=new String("i")一樣嗎?
29. 什麼是String,它是什麼資料型別?
30. 如何將String轉換為byte array,反過來呢?
容器
31. 說一說ArrayList 的擴容機制吧
32. 與Java集合框架相關的有哪些最好的實踐?
33. ArrayList和LinkedList區別?
34. Iterater和ListIterator之間有什麼區別?
35. 為何Map介面不繼承Collection介面?
36. 如何對Object的list排序
37. Java中的同步集合與併發集合有什麼區別
38. 集合框架裡實現的通用演算法有哪些?
39. Comparable和Comparator介面是什麼?
40. 通過迭代器fail-fast屬性,你明白了什麼?
41. 在迭代一個集合的時候,如何避免ConcurrentModificationException?
42. HashMap的實現原理
43. Collections類是什麼?
44. fail-fast與fail-safe有什麼區別?
45. ArrayList和LinkedList的區別?
多執行緒併發
46. 一個執行緒執行時發生異常會怎樣?
47. synchronized和ReentrantLock的區別
48. 什麼是Java Timer 類?如何建立一個有特定時間間隔的任務?
49. Synchronized 有幾種用法?
50. 執行緒有哪些基本狀態?
51. 執行緒池都有哪些狀態?
52. 為什麼我們呼叫start()方法時會執行run()方法,為什麼我們不能直接呼叫run()方法?
53. Java中interrupted 和 isInterrupted方法的區別?
54. 建立執行緒池引數有哪些,作用?
55. 請說出與執行緒同步以及執行緒排程相關的方法。
56. 執行緒安全的級別
57. 執行緒的狀態
58. Thread.sleep(0)的作用是什麼
59. 在Java中Executor、ExecutorService、Executors的區別?
60. 同步方法和同步塊,哪個是更好的選擇
異常
61. 簡單說說Java中的異常處理機制的簡單原理和應用。
62. Java異常簡介
63. 什麼是受檢異常
64. Java異常的分類
65. Excption與Error包結構
66. 闡述 final、finally、finalize 的區別
67. Error 和 Exception 有什麼區別?
68. 執行時異常與一般異常有何異同?
69. 列出一些你常見的執行時異常?
70. Throw 和 throws 的區別
71. try {}裡有一個return語句,那麼緊跟在這個try後的finally{}裡的code會不會被執行,什麼時候被執行,在return前還是後?
泛型
72. 泛型常用特點
73. 什麼是泛型
74. List<? extends T>和List <? super T>之間有什麼區別 ?
75. 如何編寫一個泛型方法,讓它能接受泛型引數並返回泛型型別?
76. 什麼是泛型中的限定萬用字元和非限定萬用字元 ?
77. Java的泛型是如何工作的 ? 什麼是型別擦除 ?
78. 你可以把List<String>傳遞給一個接受List<Object>引數的方法嗎?
79. 使用泛型的好處?
80. 什麼是泛型擦除
序列化
81. 什麼型別的變數不會被序列化?
82. 你不定義serialVersionUID, 會發生什麼?
83. 序列化有什麼用途?
84. 如果某個類實現了 Serializable ,但父類沒實現,那麼當執行反序列化的時候,物件狀態是怎樣的?
85. Serializable 介面有幾個方法? 如果沒有方法,那麼為什麼會有這樣的介面?
86. 如果你不希望某些成員被序列化,應該怎麼做?
87. serialVersionUID有什麼用,如何使用serialVersionUID
88. Serializable 和 Externalizable 介面有何不同?
89. 序列化和反序列化
90. 能否自定義序列化的過程?
91. 什麼是java序列化,如何實現java序列化?或者請解釋Serializable介面的作用。
反射
92. 反射機制的應用場景有哪些?
93. 反射機制可以做什麼?
94. Java獲取反射的三種方法
95. 哪裡用到反射機制?
96. 什麼是反射機制?
97. 反射機制優缺點
98. Java反射機制的作用
99. 如何使用Java的反射?
檔案I/O
100. 位元組流如何轉為字元流?
101. Java 中怎麼建立 ByteBuffer?
102. 談談Java IO裡面的常見類,位元組流,字元流、介面、實現類、方法阻塞
103. Java中流類的超類(均為抽象類)主要由哪些組成?
104. 說說RandomAccessFile?
105. 說說File類
106. Java 中有幾種型別的流?
107. IO管道
108. Files的常用方法都有哪些?
109. 什麼是Filter流?
110. 在檔案拷貝的時候,哪一種流可用於提升更多的效能?
111. 講講NIO
112. 說出 5 條 IO 的最佳實踐(答案)
113. System.in, System.out, System.err
114. System.out.println()是什麼?
物件導向
115. 為什麼 Java 不支援多重繼承?
116. 在Java中,子類可以從父類中繼承哪些?
117. 封裝具有的特性?
118. 內部類的二個好處是什麼?
119. 物件導向五大基本原則是什麼(可選)
120. 內部類的作用?
121. 物件導向和麵向過程的區別
122. 什麼是多型機制?Java語言是如何實現多型的?
123. 物件導向的特徵有哪些方面
124. Java多型的理解
125. Java 支援多繼承麼?
網路
126. TCP與UDP的區別
127. 為什麼在GET請求中會對URL進行編碼?
128. TCP與UDP區別:
129. 什麼是TCP/IP和UDP
130. TCP/IP 四層模型
131. 什麼是Cookie
132. 網路協議是什麼
133. 什麼是跨站攻擊CSRF?
134. 什麼是 XSS 攻擊?
135. TCP和UDP的應用場景:
136. IP地址的分類
137. DNS的定址過程你知道嗎?
138. 你知道 TCP 如何處理擁塞嗎?
139. 常用的HTTP方法有哪些?
140. 計算機網路體系結構
JVM
141. 說說 JVM 如何執行 class 中的位元組碼。
142. 物件是怎麼從年輕代進入老年代的?
143. 你都用過G1垃圾回收器的哪幾個重要引數?
144. 列舉一些你知道的打破雙親委派機制的例子。為什麼要打破?
145. 如何判斷物件可以被回收?
146. JVM有哪些記憶體區域?(JVM的記憶體佈局是什麼?)
147. 怎麼獲取 Java 程式使用的記憶體?堆使用的百分比?
148. MinorGC,MajorGC、FullGC都什麼時候發生?
149. 如果物件的引用被置為 null,垃圾收集器是否會立即釋放物件佔用的記憶體?
150. 物件在哪塊記憶體分配?
151. 如何開啟和檢視 GC 日誌?
152. 跟JVM記憶體相關的幾個核心引數圖解
153. 你知道哪些JVM效能調優
154. 垃圾收集演算法
155. 工作中常用的 JVM 配置引數有哪些?
MySQL
156. MySql 服務預設埠號是多少 ?
157. MyISAM索引與InnoDB索引的區別?
158. MySQL複製基本原理流程
159. UNION與UNION ALL的區別?
160. FLOAT和DOUBLE的區別是什麼?
161. MyISAM儲存引擎特性有哪些?
162. 六種關聯查詢
163. 索引是什麼?有什麼作用以及優缺點?
164. 非聚簇索引一定會回表查詢嗎?
165. 索引是個什麼樣的資料結構呢?
166. MySQL支援哪些儲存引擎?
167. Hash索引和B+樹所有有什麼區別或者說優劣呢?
168. SELECT COUNT(*) 在哪個引擎執行更快?
169. 那麼在哪些情況下會發生針對該列建立了索引但是在查詢的時候並沒有使用呢?
170. InnoDB 引擎的四大特性是什麼?
Redis
171. Redis的資料型別,以及每種資料型別的使用場景
172. redis 過期策略都有哪些?LRU 演算法知道嗎?
173. 如何保證快取與資料庫雙寫時的資料一致性?
174. 請用Redis和任意語言實現一段惡意登入保護的程式碼,限制1小時內每使用者Id最多隻能登入5次。具體登入函式或功能用空函式即可,不用詳細寫出。
175. 為什麼要用 redis/為什麼要用快取
176. Redis 叢集會有寫操作丟失嗎?為什麼?
177. Redis有哪些適合的場景?
178. 定時刪除策略
179. Redis 有哪些適合的場景?
180. 單執行緒的redis為什麼這麼快
181. Redis 有哪幾種資料淘汰策略?
182. watch dog 自動延期機制
183. Redis 中的管道有什麼用?
184. Redis 叢集方案什麼情況下會導致整個叢集不可用?
185. 什麼是Redis持久化?
MyBatis
186. Xml對映檔案中,除了常見的select|insert|updae|delete標籤之外,還有哪些標籤?
187. 為什麼需要預編譯
188. MyBatis與Hibernate有哪些不同?
189. 什麼是Mybatis?
190. ORM是什麼
191. RowBounds 是一次性查詢全部結果嗎?為什麼?
192. 請說說MyBatis的工作原理
193. MyBatis的功能架構是怎樣的
194. JDBC程式設計有哪些不足之處,MyBatis 是如何解決這些問題的?
195. 什麼是DBMS
196. 當實體類中的屬性名和表中的欄位名不一樣 ,怎麼辦 ?
197. 一對一、一對多的關聯查詢 ?
198. 為什麼說Mybatis是半自動ORM對映工具?它與全自動的區別在哪裡?
199. MyBatis框架適用場合:
200. Mapper編寫有哪幾種方式?
Spring
201. 解釋JDBC抽象和DAO模組
202. Spring事務的實現方式和實現原理:
203. 在 Spring 中,有幾種配置 Bean 的方式?
204. 講講Spring載入流程。
205. Spring AOP的實現原理。
206. 什麼是 Spring IOC 容器?
207. Spring MVC 框架有什麼用?
208. Spring 中的 IoC 的實現原理就是工廠模式加反射機制。
209. BeanFactory – BeanFactory 實現舉例
210. 構造器依賴注入和 Setter方法注入的區別
211. 使用@Autowired註解自動裝配的過程是怎樣的?
212. @Autowired 註解有什麼用?
213. Spring通知有哪些型別?
214. 怎樣用註解的方式配置Spring?
215. Spring框架使用了哪些設計模式
SpringBoot
216. 如何整合 Spring Boot 和 ActiveMQ?
217. 什麼是 Swagger?你用 Spring Boot 實現了它嗎?
218. Spring Boot 支援哪些日誌框架?推薦和預設的日誌框架是哪個
219. Spring Boot掃描流程?
220. SpringBoot常用的starter有哪些?
221. Springboot整合mybatis的過程
222. 建立一個 Spring Boot Project 的最簡單的方法是什麼?
223. 什麼是JavaConfig?
224. 什麼是 JavaConfig?
225. 你如何理解 Spring Boot 中的 Starters?
226. Spring Boot 還提供了其它的哪些 Starter Project Options?
227. 為什麼我們需要 spring-boot-maven-plugin?
228. 為什麼我們不建議在實際的應用程式中使用 Spring Data Rest?
229. SpringBoot自動配置原理是什麼?
230. Spring Boot 打成的 jar 和普通的 jar 有什麼區別 ?
SpringCloud
231. Spring Cloud的子專案(主要專案)
232. 什麼是微服務架構?
233. 使用 Spring Cloud 有什麼優勢?
234. 作為 務註冊中心,Eureka比Zookeeper好在哪裡?
235. 微服務是如何對外提供統一介面的(zuul具體使用)
236. 什麼是微服務?
237. 負載平衡的意義什麼?
238. 什麼是 zuul路由閘道器
239. 分散式配置中心能幹嘛?
240. 什麼是 Netflix Feign?它的優點是什麼?
241. Ribbon負載均衡能幹什麼?
242. 什麼是 Netflix Feign?它的優點是什麼?
243. 使用Spring Cloud有什麼優勢?
244. spring cloud 的核心元件有哪些
245. 服務註冊和發現是什麼意思?Spring Cloud 如何實現?
Dubbo
246. Dubbo是什麼?
247. 為什麼要用Dubbo?
248. Dubbo超時時間的設定
249. Dubbo需要 Web 容器嗎?
250. 說說服務暴露的流程?
251. Dubbo核心配置有哪些?
252. Dubbo 核心的配置有哪些?
253. 服務讀寫推薦的容錯策略是怎樣的?
254. 畫一畫服務註冊與發現的流程圖
255. Dubbo 和 Dubbox 有什麼區別?
256. 你還了解別的分散式框架嗎?
257. Dubbo核心元件是?
258. 服務上線怎麼相容舊版本?
259. 說說服務引用的流程?
260. Dubbo推薦使用什麼序列化框架,你知道的還有哪些?
Nginx
261. 為什麼Nginx效能這麼高?
262. 使用“反向代理伺服器的優點是什麼?
263. Nginx靜態資源?
264. 限流怎麼做的?
265. Nginx虛擬主機怎麼配置?
266. 如何用Nginx解決前端跨域問題?
267. Nginx配置高可用性怎麼配置?
268. 為什麼要做動靜分離?
269. Nginx怎麼判斷IP不可訪問?
270. 請列舉Nginx
的一些特性。
271. Nginx怎麼做的動靜分離?
272. Nginx負載均衡的演算法怎麼實現的?策略有哪些?
273. Nginx常用變數
274. 請解釋 Nginx 如何處理 HTTP 請求?
275. Location正則案例
zookeeper
276. Zookeeper Watcher 機制 -- 資料變更通知
277. 服務端處理 Watcher 實現
278. 四種型別的資料節點 Znode
279. Zookeeper的java客戶端都有哪些?
280. Chroot 特性
281. Zookeeper 下 Server 工作狀態
282. ACL 許可權控制機制
283. 說一下 Zookeeper 的通知機制?
284. 客戶端註冊 Watcher 實現
285. Zookeeper 的典型應用場景
286. Zookeeper 都有哪些功能?
287. ZooKeeper 提供了什麼?
288. 分散式叢集中為什麼會有 Master?
289. ZooKeeper 是什麼?
290. 叢集中有 3 臺伺服器,其中一個節點當機,這個時候 Zookeeper 還可以使用嗎?
MQ
291. 消費者某些原因無法處理當前接受的訊息如何來拒絕?
292. 你瞭解哪些常用的 MQ?
293. 如何保證訊息不被重複消費?
294. 如何保證訊息的順序性?
295. 當消費負載均衡consumer和queue不對等的時候會發生什麼?
296. AMQP模型的幾大元件?
297. vhost 是什麼?起什麼作用?
298. RocketMq如何負載均衡?
299. AMQP協議3層?
300. RocketMQ的訊息堆積如何處理?
301. 叢集中的節點型別?
302. RabbitMQ 上的一個 queue 中存放的 message 是否有數量限制?
303. RocketMq效能比較高的原因?
304. RabbitMQ是什麼?
305. 如何讓 RocketMQ 保證訊息的順序消費?
Kafka
306. 談談你對Kafka冪等性的理解?
307. 監控Kafka的框架都有哪些?
308. Kafka 是如何實現高吞吐率的?
309. 在Kafka中,領導者和追隨者是什麼意思?
310. Kafka怎麼實現如此高的讀寫效率?
311. kafka中的 zookeeper 起到什麼作用,可以不用zookeeper麼
312. Kafka 分割槽的目的?
313. Consumer與topic關係
314. Kafka中的訊息有序嗎?怎麼實現的?
315. 什麼是kafka
316. Kafka能手動刪除訊息嗎?
317. 你知道 Kafka 是如何做到訊息的有序性?
318. Kafka 缺點?
319. Kafka Stream的一些獨特功能是什麼?
320. Kafka為什麼不支援讀寫分離?
ElasticSearch
321. 精準匹配檢索和全文檢索匹配檢索的不同?
322. 詳細描述一下ES索引文件的過程?
323. ElaticSearch是如何實現master選舉的?
324. Elasticsearch Analyzer 中的字元過濾器如何利用?
325. ES 寫資料過程
326. REST API在 Elasticsearch 方面有哪些優勢?
327. 請解釋在 Elasticsearch 叢集中新增或建立索引的過程?
328. 在併發情況下,ES如果保證讀寫一致?
329. elasticsearch 索引資料多了怎麼辦,如何調優,部署
330. 你能否列出與 Elasticsearch 有關的主要可用欄位資料型別?
331. elasticsearch瞭解多少,說說你們公司es的叢集架構,索引資料大小,分片有多少,以及一些調優手段 。
332. ES對於大資料量(上億量級)的聚合如何實現?
333. 詳細描述一下ES搜尋的過程?
334. 我們可以在 Elasticsearch 中執行搜尋的各種可能方式有哪些?
335. Elasticsearch瞭解多少,說說你們公司es的叢集架構,索引資料大小,分片有多少,以及一些調優手段 。