300 道Java面試題整理


大家可以通過這些面試題查漏補缺。

ps:鏈接點進去就是答案

一、Java基礎 44 道

1. 解釋下什么是面向對象?面向對象和面向過程的區別?

2. 面向對象的三大特性?分別解釋下?

3. JDK、JRE、JVM 三者之間的關系?

4. 重載和重寫的區別?

5. Java 中是否可以重寫一個 private 或者 static 方法?

6. 構造方法有哪些特性?

7. 在 Java 中定義一個不做事且沒有參數的構造方法有什么作用?

8. Java 中創建對象的幾種方式?

9. 抽象類和接口有什么區別?

10. 靜態變量和實例變量的區別?

11. 12、short s1 = 1;s1 = s1 + 1;有什么錯?那么 short s1 = 1; s1 += 1;呢?有沒有錯誤?

12. Integer 和 int 的區別?

13. 裝箱和拆箱的區別

14. switch 語句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?

15. 16、final、finally、finalize 的區別

16. == 和 equals 的區別?

17. 兩個對象的 hashCode() 相同,則 equals() 也一定為 true 嗎?

18. 為什么重寫 equals() 就一定要重寫 hashCode() 方法?

19. & 和 && 的區別?

20. Java 中的參數傳遞時傳值呢?還是傳引用?

21. Java 中的 Math.round(-1.5) 等於多少?

22. 如何實現對象的克隆?

23. 深克隆和淺克隆的區別?

24. 什么是 Java 的序列化,如何實現 Java 的序列化?

25. 什么情況下需要序列化?

26. Java 的泛型是如何工作的 ? 什么是類型擦除 ?

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

28. List 和 List 之間有什么區別 ?

29. Java 中的反射是什么意思?有哪些應用場景?

30. 反射的優缺點?

31. Java 中的動態代理是什么?有哪些應用?

32. 怎么實現動態代理?

33. static 關鍵字的作用?

34. super 關鍵字的作用?

35. 字節和字符的區別?

36. String 為什么要設計為不可變類?

37. String、StringBuilder、StringBuffer 的區別?

38. String 字符串修改實現的原理?

39. String str = "i" 與 String str = new String("i") 一樣嗎?

40. String 類的常用方法都有那些?

41. final 修飾 StringBuffer 后還可以 append 嗎?

42. Java 中的 IO 流的分類?說出幾個你熟悉的實現類?

43. 字節流和字符流有什么區別?

44. BIO、NIO、AIO 有什么區別?

答案看這里:Java面試題必知必會(附答案)

二、Java異常 9 道

1. finally 塊中的代碼什么時候被執行?

2. finally 是不是一定會被執行到?

3. try-catch-finally 中,如果 catch 中 return 了,finally 還會執行嗎?

4. try-catch-finally 中那個部分可以省略?

5. Error 和 Exception 的區別?

6. 運行時異常與受檢異常有何異同?

7. throw 和 throws 的區別?

8. 常見的異常類有哪些?

9. 主線程可以捕獲到子線程的異常嗎?

三、Java集合 24 道

1. Java 中常用的容器有哪些?

2. ArrayList 和 LinkedList 的區別?

3. ArrayList 實現 RandomAccess 接口有何作用?為何 LinkedList 卻沒實現這個接口?

4. ArrayList 的擴容機制?

5. Array 和 ArrayList 有何區別?什么時候更適合用 Array?

6. HashMap 的實現原理/底層數據結構?JDK1.7 和 JDK1.8

7. HashMap 的 put 方法的執行過程?

8. HashMap 的 get 方法的執行過程?

9. HashMap 的 resize 方法的執行過程?

10. HashMap 的 size 為什么必須是 2 的整數次方?

11. HashMap 多線程死循環問題?

12. HashMap 的 get 方法能否判斷某個元素是否在 map 中?

13. HashMap 與 HashTable 的區別是什么?

14. HashMap 與 ConcurrentHashMap 的區別是什么?

15. HashTable 和 ConcurrentHashMap 的區別?

16. ConcurrentHashMap 的實現原理是什么?

17. HashSet 的實現原理?

18. HashSet 怎么保證元素不重復的?

19. LinkedHashMap 的實現原理?

20. Iterator 怎么使用?有什么特點?

21. Iterator 和 ListIterator 有什么區別?

22. Iterator 和 Enumeration 接口的區別?

23. fail-fast 與 fail-safe 有什么區別?

24. Collection 和 Collections 有什么區別?

四、Java並發 42 道

1. 並行和並發有什么區別?

2. 線程和進程的區別?

3. 守護線程是什么?

4. 創建線程的幾種方式?

5. Runnable 和 Callable 有什么區別?

6. 線程狀態及轉換?

7. sleep() 和 wait() 的區別?

8. 線程的 run() 和 start() 有什么區別?

9. 在 Java 程序中怎么保證多線程的運行安全?

10. Java 線程同步的幾種方法?

11. Thread.interrupt() 方法的工作原理是什么?

12. 談談對 ThreadLocal 的理解?

13. 在哪些場景下會使用到 ThreadLocal?

14. 說一說自己對於 synchronized 關鍵字的了解?

15. 如何在項目中使用 synchronized 的?

16. 說說 JDK1.6 之后的 synchronized 關鍵字底層做了哪些優化,可以詳細介紹一下這些優化嗎?

17. 談談 synchronized 和 ReenTrantLock 的區別?

18. synchronized 和 volatile 的區別是什么?

19. 談一下你對 volatile 關鍵字的理解?

20. 說下對 ReentrantReadWriteLock 的理解?

21. 說下對悲觀鎖和樂觀鎖的理解?

22. 樂觀鎖常見的兩種實現方式是什么?

23. 樂觀鎖的缺點有哪些?

24. CAS 和 synchronized 的使用場景?

25. 簡單說下對 Java 中的原子類的理解?

26. atomic 的原理是什么?

27. 說下對同步器 AQS 的理解?

28. AQS 的原理是什么?

29. AQS 對資源的共享模式有哪些?

30. AQS 底層使用了模板方法模式,你能說出幾個需要重寫的方法嗎?

31. 說下對信號量 Semaphore 的理解?

32. CountDownLatch 和 CyclicBarrier 有什么區別?

33. 說下對線程池的理解?為什么要使用線程池?

34. 創建線程池的參數有哪些?

35. 如何創建線程池?

36. 線程池中的的線程數一般怎么設置?需要考慮哪些問題?

37. 執行 execute() 方法和 submit() 方法的區別是什么呢?

38. 說下對 Fork和Join 並行計算框架的理解?

39. JDK 中提供了哪些並發容器?

40. 談談對 CopyOnWriteArrayList 的理解?

41. 談談對 BlockingQueue 的理解?分別有哪些實現類?

42. 談談對 ConcurrentSkipListMap 的理解?

五、Java JVM 42 道

1. 說一下 Jvm 的主要組成部分?及其作用?

2. 談談對運行時數據區的理解?

3. 堆和棧的區別是什么?

4. 堆中存什么?棧中存什么?

5. 為什么要把堆和棧區分出來呢?棧中不是也可以存儲數據嗎?

6. Java 中的參數傳遞時傳值呢?還是傳引用?

7. Java 對象的大小是怎么計算的?

8. 對象的訪問定位的兩種方式?

9. 判斷垃圾可以回收的方法有哪些?

10. 垃圾回收是從哪里開始的呢?

11. 被標記為垃圾的對象一定會被回收嗎?

12. 談談對 Java 中引用的了解?

13. 談談對內存泄漏的理解?

14. 內存泄露的根本原因是什么?

15. 舉幾個可能發生內存泄漏的情況?

16. 盡量避免內存泄漏的方法?

17. 常用的垃圾收集算法有哪些?

18. 為什么要采用分代收集算法?

19. 分代收集下的年輕代和老年代應該采用什么樣的垃圾回收算法?

20. 什么是浮動垃圾?

21. 什么是內存碎片?如何解決?

22. 常用的垃圾收集器有哪些?

23. 談談你對 CMS 垃圾收集器的理解?

24. 談談你對 G1 收集器的理解?

25. 說下你對垃圾回收策略的理解/垃圾回收時機?

26. 談談你對內存分配的理解?大對象怎么分配?空間分配擔保?

27. 說下你用過的 JVM 監控工具?

28. 如何利用監控工具調優?

29. JVM 的一些參數?

30. 談談你對類文件結構的理解?有哪些部分組成?

31. 談談你對類加載機制的了解?

32. 類加載各階段的作用分別是什么?

33. 有哪些類加載器?分別有什么作用?

34. 類與類加載器的關系?

35. 談談你對雙親委派模型的理解?工作過程?為什么要使用

36. 怎么實現一個自定義的類加載器?需要注意什么?

37. 怎么打破雙親委派模型?

38. 有哪些實際場景是需要打破雙親委派模型的?

39. 談談你對編譯期優化和運行期優化的理解?

40. 為何 HotSpot 虛擬機要使用解釋器與編譯器並存的架構?

41. 說下你對 Java 內存模型的理解?

42. 內存間的交互操作有哪些?需要滿足什么規則?

六、SSM框架 37 道

1. 使用 Spring 框架的好處是什么?

2. 解釋下什么是 AOP?

3. AOP 的代理有哪幾種方式?

4. 怎么實現 JDK 動態代理?

5. AOP 的基本概念:切面、連接點、切入點等?

6. 通知類型(Advice)型(Advice)有哪些?

7. 談談你對 IOC 的理解?

8. Bean 的生命周期?

9. Bean 的作用域?

10. Spring 中的單例 Bean 的線程安全問題了解嗎?

11. 談談你對 Spring 中的事物的理解?

12. Spring 中的事務隔離級別?

13. Spring 中的事物傳播行為?

14. Spring 常用的注入方式有哪些?

15. Spring 框架中用到了哪些設計模式?

16. ApplicationContext 通常的實現有哪些?

17. 談談你對 MVC 模式的理解?

18. SpringMVC 的工作原理/執行流程?

19. SpringMVC 的核心組件有哪些?

20. SpringMVC 常用的注解有哪些?

21. @RequestMapping 的作用是什么?

22. 如何解決 POST 請求中文亂碼問題,GET 的又如何處理呢?

23. SpringMVC 的控制器是不是單例模式,如果是會有什么問題,怎么解決?

24. SpringMVC 怎么樣設定重定向和轉發的?

25. SpringMVC 里面攔截器是怎么寫的?

26. SpringMVC 和 Struts2 的區別有哪些?

27. 談談你對 MyBatis 的理解?

28. MyBaits 的優缺點有哪些?

29. MyBatis 與 Hibernate 有哪些不同?

30. MyBatis 中 #{} 和 ${}的區別是什么?

31. MyBatis 是如何進行分頁的?分頁插件的原理是什么?

32. MyBatis 有幾種分頁方式?

33. MyBatis 邏輯分頁和物理分頁的區別是什么?

34. MyBatis 是否支持延遲加載?如果支持,它的實現原理是什么?

35. 說一下 MyBatis 的一級緩存和二級緩存?

36. Mybatis 有哪些執行器(Executor)?

37. MyBatis 動態 SQL 是做什么的?都有哪些動態 SQL?能簡述一下動態 SQL的執行原理不?

七、MySQL 31 道

1. 請說下你對 MySQL 架構的了解?

2. 一條 SQL 語句在數據庫框架中的執行流程?

3. 數據庫的三范式是什么?

4. char 和 varchar 的區別?

5. varchar(10) 和 varchar(20) 的區別?

6. 談談你對索引的理解?

7. 索引的底層使用的是什么數據結構?

8. 談談你對 B+ 樹的理解?

9. 為什么 InnoDB 存儲引擎選用 B+ 樹而不是 B 樹呢?

10. 談談你對聚簇索引的理解?

11. 談談你對哈希索引的理解?

12. 談談你對覆蓋索引的認識?

13. 索引的分類?

14. 談談你對最左前綴原則的理解?

15. 怎么知道創建的索引有沒有被使用到?或者說怎么才可以知道這條語句運行很慢的原因?

16. 什么情況下索引會失效?即查詢不走索引?

17. 查詢性能的優化方法?

18. InnoDB 和 MyISAM 的比較?

19. 談談你對水平切分和垂直切分的理解?

20. 主從復制中涉及到哪三個線程?

21. 主從同步的延遲原因及解決辦法?

22. 談談你對數據庫讀寫分離的理解?

23. 請你描述下事務的特性?

24. 談談你對事務隔離級別的理解?

25. 解釋下什么叫臟讀、不可重復讀和幻讀?

26. MySQL 默認的隔離級別是什么?

27. 談談你對MVCC 的了解?

28. 說一下 MySQL 的行鎖和表鎖?

29. InnoDB 存儲引擎的鎖的算法有哪些?

30. MySQL 問題排查都有哪些手段?

31. MySQL 數據庫 CPU 飆升到 500% 的話他怎么處理?

八、Redis 12 道

1. 談下你對 Redis 的了解?

2. Redis 一般都有哪些使用場景?

3. Redis 有哪些常見的功能?

4. Redis 支持的數據類型有哪些?

5. Redis 為什么這么快?

6. 什么是緩存穿透?怎么解決?

7. 什么是緩存雪崩?該如何解決?

8. 怎么保證緩存和數據庫數據的一致性?

9. Redis 持久化有幾種方式?

10. Redis 怎么實現分布式鎖?

11. Redis 淘汰策略有哪些?

12. Redis 常見性能問題和解決方案?

九、計算機網絡 45 道

1. 為什么需要三次握手?兩次不行?

2. 為什么需要四次揮手?三次不行?

3. TCP與UDP有哪些區別?各自應用場景?

4. HTTP1.0,1.1,2.0 的版本區別

5. POST和GET有哪些區別?各自應用場景?

6. HTTP 哪些常用的狀態碼及使用場景?

7. HTTP狀態碼301和302的區別,都有哪些用途?

8. 在交互過程中如果數據傳送完了,還不想斷開連接怎么辦,怎么維持?

9. HTTP 如何實現長連接?在什么時候會超時?

10. TCP 如何保證有效傳輸及擁塞控制原理

11. IP地址有哪些分類?

12. GET請求中URL編碼的意義

13. 什么是SQL 注入?舉個例子?

14. 談一談 XSS 攻擊,舉個例子?

15. 講一下網絡五層模型,每一層的職責?

16. 簡單說下 HTTPS 和 HTTP 的區別

17. 對稱加密與非對稱加密的區別

18. 簡單說下每一層對應的網絡協議有哪些?

19. ARP 協議的工作原理?

20. TCP 的主要特點是什么?

21. UDP 的主要特點是什么?

22. TCP 和 UDP 分別對應的常見應用層協議有哪些?

23. 為什么 TIME-WAIT 狀態必須等待 2MSL 的時間呢?

24. 保活計時器的作用?

25. TCP 協議是如何保證可靠傳輸的?

26. 談談你對停止等待協議的理解?

27. 談談你對 ARQ 協議的理解?

28. 談談你對滑動窗口的了解?

29. 談下你對流量控制的理解?

30. 談下你對 TCP 擁塞控制的理解?使用了哪些算法?

31. 什么是粘包?

32. TCP 黏包是怎么產生的?

33. 怎么解決拆包和粘包?

34. forward 和 redirect 的區別?

35. HTTP 方法有哪些?

36. 在瀏覽器中輸入 URL 地址到顯示主頁的過程?

37. DNS 的解析過程?

38. 談談你對域名緩存的了解?

39. 談下你對 HTTP 長連接和短連接的理解?分別應用於哪些場景?

40. HTTPS 的工作過程?

41. HTTP 和 HTTPS 的區別?

42. HTTPS 的優缺點?

43. 什么是數字簽名?

44. 什么是數字證書?

45. Cookie 和 Session 有什么區別?

十、操作系統 32 道

1. 簡單說下你對並發和並行的理解?

2. 同步、異步、阻塞、非阻塞的概念

3. 進程和線程的基本概念

4. 進程與線程的區別?

5. 為什么有了進程,還要有線程呢?

6. 進程的狀態轉換

7. 進程間的通信方式有哪些?

8. 進程的調度算法有哪些?

9. 什么是死鎖?

10. 產生死鎖的原因?

11. 死鎖產生的必要條件?

12. 解決死鎖的基本方法?

13. 怎么預防死鎖?

14. 怎么避免死鎖?

15. 怎么解除死鎖?

16. 什么是緩沖區溢出?有什么危害?

17. 分頁與分段的區別?

18. 物理地址、邏輯地址、虛擬內存的概念

19. 頁面置換算法有哪些?

20. 談談你對動態鏈接庫和靜態鏈接庫的理解?

21. 外中斷和異常有什么區別?

22. 一個程序從開始運行到結束的完整過程,你能說出來多少?

23. 什么是用戶態和內核態

24. 用戶態和內核態是如何切換的?

25. 進程終止的方式

26. 守護進程、僵屍進程和孤兒進程

27. 如何避免僵屍進程?

28. 介紹一下幾種典型的鎖?

29. 常見內存分配內存錯誤

30. 內存交換中,被換出的進程保存在哪里?

31. 原子操作的是如何實現的

32. 抖動你知道是什么嗎?它也叫顛簸現象

十一、消息隊列與分布式 26 道

1. 消息隊列的基本作用?

2. 消息隊列的優缺點有哪些?

3. 如何保證消息隊列的高可用?

4. 如何保證消息不被重復消費?或者說,如何保證消息消費的冪等性?

5. 如何保證消息的可靠性傳輸?或者說,如何處理消息丟失的問題?

6. 如何保證消息的順序性?

7. 大量消息在 MQ 里長時間積壓,該如何解決?

8. MQ 中的消息過期失效了怎么辦?

9. RabbitMQ 有哪些重要的角色?

10. RabbitMQ 有哪些重要的組件?

11. RabbitMQ 有幾種廣播類型?

12. Kafka 可以脫離 zookeeper 單獨使用嗎?為什么?

13. Kafka 有幾種數據保留的策略?

14. Kafka 的分區策略有哪些?

15. 談下你對 Zookeeper 的認識?

16. Zookeeper 都有哪些功能?

17. 談下你對 ZAB 協議的了解?

18. Zookeeper 怎么保證主從節點的狀態同步?

19. Zookeeper 有幾種部署模式?

20. 說一下 Zookeeper 的通知機制?

21. 集群中為什么要有主節點?

22. 集群中有 3 台服務器,其中一個節點宕機,這個時候 Zookeeper 還可以使用嗎?

23. 說一下兩階段提交和三階段提交的過程?分別有什么問題?

24. Zookeeper 宕機如何處理?

25. 說下四種類型的數據節點 Znode?

26. Zookeeper 和 Dubbo 的關系?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM