Java高頻面試題和答案

一、Java 基礎篇

  1. Object 有哪些常用方法?大致說一下每個方法的含義
  2. Java 創建對象有幾種方式?
  3. 獲取一個類對象的方式有哪些?
  4. ArrayList 和 LinkedList 的區別有哪些?
  5. 用過 ArrayList 嗎?說一下它有什麼特點?
  6. 有數組了爲什麼還要搞個 ArrayList 呢?
  7. 說說什麼是 fail-fast?
  8. Hashtable 與 HashMap 的區別
  9. HashMap 中的 key 我們可以使用任何類作爲 key 嗎?
  10. HashMap 的長度爲什麼是 2 的 N 次方呢?
  11. HashMap 與 ConcurrentHashMap 的異同
  12. 紅黑樹有哪幾個特徵?
  13. 說說你平時是怎麼處理 Java 異常的
  14. 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. 關於怎麼準備面試,怎麼應對面試,怎麼和面試官聊等軟實力

地址:文章地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章