• <li id="yeaqi"><button id="yeaqi"></button></li>
  • <fieldset id="yeaqi"></fieldset>
    <fieldset id="yeaqi"><table id="yeaqi"></table></fieldset>

    •  

      這份Java面試八股文讓329人成功進入大廠,堪稱2023最強!
      發(fā)布時間:2023-05-30 08:36:38 文章來源:嗶哩嗶哩
      很多同學會問Java面試八股文有必要背嗎?我的回答是:很有必要。你可以討厭這種模式,但你一定要去背,因為

      很多同學會問Java面試八股文有必要背嗎?


      (資料圖)

      我的回答是:很有必要。你可以討厭這種模式,但你一定要去背,因為不背你就進不了大廠。

      國內(nèi)的互聯(lián)網(wǎng)面試,恐怕是現(xiàn)存的、最接近科舉考試的制度。

      而且,我國的八股文確實是獨樹一幟。以美國為例,北美工程師面試比較重視算法(Coding),近幾年也會加入Design輪(系統(tǒng)設計和面向?qū)ο笤O計OOD)和BQ輪(Behavioral question,行為面試問題)。

      那么為什么國內(nèi)面試不采取這樣的考察方式呢?簡單來說,互聯(lián)網(wǎng)IT行業(yè)的求職者太多了,如果考察的是清一溜的算法題和設計題,那么會要求面試官有極高的技術(shù)水平,還要花大量的時間成本和精力。

      也許現(xiàn)行的八股文面試不是最優(yōu)的解法,但的確是最符合當前國內(nèi)IT環(huán)境的做法。

      所以,我采訪了超過20位資深大廠面試官后,一直在盡量精煉準確的整理一套切實可行的八股文,現(xiàn)在已經(jīng)有329位粉絲通過這套題走入了理想的崗位,所以分享出來給大伙看看,有什么不足之處歡迎評論補充。

      篇幅所限本文就只貼一下題目了,同學們可以自己先看看有哪些題是會的,答案的話我整理的一本《Java面試八股文》PDF里都有,

      一、Java基礎 44 道

      1. 解釋下什么是面向?qū)ο螅棵嫦驅(qū)ο蠛兔嫦蜻^程的區(qū)別?

      2. 面向?qū)ο蟮娜筇匦裕糠謩e解釋下?

      3. JDK、JRE、JVM 三者之間的關(guān)系?

      4. 重載和重寫的區(qū)別?

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

      6. 構(gòu)造方法有哪些特性?

      7. 在 Java 中定義一個不做事且沒有參數(shù)的構(gòu)造方法有什么作用?

      8. Java 中創(chuàng)建對象的幾種方式?

      9. 抽象類和接口有什么區(qū)別?

      10. 靜態(tài)變量和實例變量的區(qū)別?

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

      12. Integer 和 int 的區(qū)別?

      13. 裝箱和拆箱的區(qū)別

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

      15. 16、final、finally、finalize 的區(qū)別

      16. == 和 equals 的區(qū)別?

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

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

      19. & 和 && 的區(qū)別?

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

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

      22. 如何實現(xiàn)對象的克隆?

      23. 深克隆和淺克隆的區(qū)別?

      24. 什么是 Java 的序列化,如何實現(xiàn) Java 的序列化?

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

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

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

      28. List 和 List 之間有什么區(qū)別 ?

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

      30. 反射的優(yōu)缺點?

      31. Java 中的動態(tài)代理是什么?有哪些應用?

      32. 怎么實現(xiàn)動態(tài)代理?

      33. static 關(guān)鍵字的作用?

      34. super 關(guān)鍵字的作用?

      35. 字節(jié)和字符的區(qū)別?

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

      37. String、StringBuilder、StringBuffer 的區(qū)別?

      38. String 字符串修改實現(xiàn)的原理?

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

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

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

      42. Java 中的 IO 流的分類?說出幾個你熟悉的實現(xiàn)類?

      43. 字節(jié)流和字符流有什么區(qū)別?

      44. BIO、NIO、AIO 有什么區(qū)別?

      二、Java異常 9 道

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

      2. finally 是不是一定會被執(zhí)行到?

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

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

      5. Error 和 Exception 的區(qū)別?

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

      7. throw 和 throws 的區(qū)別?

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

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

      三、Java集合 24 道

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

      2. ArrayList 和 LinkedList 的區(qū)別?

      3. ArrayList 實現(xiàn) RandomAccess 接口有何作用?為何 LinkedList 卻沒實現(xiàn)這個接口?

      4. ArrayList 的擴容機制?

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

      6. HashMap 的實現(xiàn)原理/底層數(shù)據(jù)結(jié)構(gòu)?JDK1.7 和 JDK1.8

      7. HashMap 的 put 方法的執(zhí)行過程?

      8. HashMap 的 get 方法的執(zhí)行過程?

      9. HashMap 的 resize 方法的執(zhí)行過程?

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

      11. HashMap 多線程死循環(huán)問題?

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

      13. HashMap 與 HashTable 的區(qū)別是什么?

      14. HashMap 與 ConcurrentHashMap 的區(qū)別是什么?

      15. HashTable 和 ConcurrentHashMap 的區(qū)別?

      16. ConcurrentHashMap 的實現(xiàn)原理是什么?

      17. HashSet 的實現(xiàn)原理?

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

      19. LinkedHashMap 的實現(xiàn)原理?

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

      21. Iterator 和 ListIterator 有什么區(qū)別?

      22. Iterator 和 Enumeration 接口的區(qū)別?

      23. fail-fast 與 fail-safe 有什么區(qū)別?

      24. Collection 和 Collections 有什么區(qū)別?

      四、Java并發(fā) 42 道

      1. 并行和并發(fā)有什么區(qū)別?

      2. 線程和進程的區(qū)別?

      3. 守護線程是什么?

      4. 創(chuàng)建線程的幾種方式?

      5. Runnable 和 Callable 有什么區(qū)別?

      6. 線程狀態(tài)及轉(zhuǎn)換?

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

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

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

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

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

      12. 談談對 ThreadLocal 的理解?

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

      14. 說一說自己對于 synchronized 關(guān)鍵字的了解?

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

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

      17. 談談 synchronized 和 ReenTrantLock 的區(qū)別?

      18. synchronized 和 volatile 的區(qū)別是什么?

      19. 談一下你對 volatile 關(guān)鍵字的理解?

      20. 說下對 ReentrantReadWriteLock 的理解?

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

      22. 樂觀鎖常見的兩種實現(xiàn)方式是什么?

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

      24. CAS 和 synchronized 的使用場景?

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

      26. atomic 的原理是什么?

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

      28. AQS 的原理是什么?

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

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

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

      32. CountDownLatch 和 CyclicBarrier 有什么區(qū)別?

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

      34. 創(chuàng)建線程池的參數(shù)有哪些?

      35. 如何創(chuàng)建線程池?

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

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

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

      39. JDK 中提供了哪些并發(fā)容器?

      40. 談談對 CopyOnWriteArrayList 的理解?

      41. 談談對 BlockingQueue 的理解?分別有哪些實現(xiàn)類?

      42. 談談對 ConcurrentSkipListMap 的理解?

      五、Java JVM 42 道

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

      2. 談談對運行時數(shù)據(jù)區(qū)的理解?

      3. 堆和棧的區(qū)別是什么?

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

      5. 為什么要把堆和棧區(qū)分出來呢?棧中不是也可以存儲數(shù)據(jù)嗎?

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

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

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

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

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

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

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

      13. 談談對內(nèi)存泄漏的理解?

      14. 內(nèi)存泄露的根本原因是什么?

      15. 舉幾個可能發(fā)生內(nèi)存泄漏的情況?

      16. 盡量避免內(nèi)存泄漏的方法?

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

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

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

      20. 什么是浮動垃圾?

      21. 什么是內(nèi)存碎片?如何解決?

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

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

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

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

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

      27. 說下你用過的 JVM 監(jiān)控工具?

      28. 如何利用監(jiān)控工具調(diào)優(yōu)?

      29. JVM 的一些參數(shù)?

      30. 談談你對類文件結(jié)構(gòu)的理解?有哪些部分組成?

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

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

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

      34. 類與類加載器的關(guān)系?

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

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

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

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

      39. 談談你對編譯期優(yōu)化和運行期優(yōu)化的理解?

      40. 為何 HotSpot 虛擬機要使用解釋器與編譯器并存的架構(gòu)?

      41. 說下你對 Java 內(nèi)存模型的理解?

      42. 內(nèi)存間的交互操作有哪些?需要滿足什么規(guī)則?

      六、SSM框架 37 道

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

      2. 解釋下什么是 AOP?

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

      4. 怎么實現(xiàn) JDK 動態(tài)代理?

      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 通常的實現(xiàn)有哪些?

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

      18. SpringMVC 的工作原理/執(zhí)行流程?

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

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

      21. @RequestMApping 的作用是什么?

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

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

      24. SpringMVC 怎么樣設定重定向和轉(zhuǎn)發(fā)的?

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

      26. SpringMVC 和 Struts2 的區(qū)別有哪些?

      27. 談談你對 MyBatis 的理解?

      28. MyBaits 的優(yōu)缺點有哪些?

      29. MyBatis 與 Hibernate 有哪些不同?

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

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

      32. MyBatis 有幾種分頁方式?

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

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

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

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

      37. MyBatis 動態(tài) SQL 是做什么的?都有哪些動態(tài) SQL?能簡述一下動態(tài) SQL的執(zhí)行原理不?

      七、MySQL 31 道

      1. 請說下你對 MySQL 架構(gòu)的了解?

      2. 一條 SQL 語句在數(shù)據(jù)庫框架中的執(zhí)行流程?

      3. 數(shù)據(jù)庫的三范式是什么?

      4. char 和 varchar 的區(qū)別?

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

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

      7. 索引的底層使用的是什么數(shù)據(jù)結(jié)構(gòu)?

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

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

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

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

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

      13. 索引的分類?

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

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

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

      17. 查詢性能的優(yōu)化方法?

      18. InnoDB 和 MyISAM 的比較?

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

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

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

      22. 談談你對數(shù)據(jù)庫讀寫分離的理解?

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

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

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

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

      27. 談談你對MVCC 的了解?

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

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

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

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

      八、Redis 12 道

      1. 談下你對 Redis 的了解?

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

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

      4. Redis 支持的數(shù)據(jù)類型有哪些?

      5. Redis 為什么這么快?

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

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

      8. 怎么保證緩存和數(shù)據(jù)庫數(shù)據(jù)的一致性?

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

      10. Redis 怎么實現(xiàn)分布式鎖?

      11. Redis 淘汰策略有哪些?

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

      九、計算機網(wǎng)絡 45 道

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

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

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

      4. HTTP1.0,1.1,2.0 的版本區(qū)別

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

      6. HTTP 哪些常用的狀態(tài)碼及使用場景?

      7. HTTP狀態(tài)碼301和302的區(qū)別,都有哪些用途?

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

      9. HTTP 如何實現(xiàn)長連接?在什么時候會超時?

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

      11. IP地址有哪些分類?

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

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

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

      15. 講一下網(wǎng)絡五層模型,每一層的職責?

      16. 簡單說下 HTTPS 和 HTTP 的區(qū)別

      17. 對稱加密與非對稱加密的區(qū)別

      18. 簡單說下每一層對應的網(wǎng)絡協(xié)議有哪些?

      19. ARP 協(xié)議的工作原理?

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

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

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

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

      24. 保活計時器的作用?

      25. TCP 協(xié)議是如何保證可靠傳輸?shù)模?/p>

      26. 談談你對停止等待協(xié)議的理解?

      27. 談談你對 ARQ 協(xié)議的理解?

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

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

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

      31. 什么是粘包?

      32. TCP 黏包是怎么產(chǎn)生的?

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

      34. forward 和 redirect 的區(qū)別?

      35. HTTP 方法有哪些?

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

      37. DNS 的解析過程?

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

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

      40. HTTPS 的工作過程?

      41. HTTP 和 HTTPS 的區(qū)別?

      42. HTTPS 的優(yōu)缺點?

      43. 什么是數(shù)字簽名?

      44. 什么是數(shù)字證書?

      45. Cookie 和 Session 有什么區(qū)別?

      十、操作系統(tǒng) 32 道

      1. 簡單說下你對并發(fā)和并行的理解?

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

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

      4. 進程與線程的區(qū)別?

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

      6. 進程的狀態(tài)轉(zhuǎn)換

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

      8. 進程的調(diào)度算法有哪些?

      9. 什么是死鎖?

      10. 產(chǎn)生死鎖的原因?

      11. 死鎖產(chǎn)生的必要條件?

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

      13. 怎么預防死鎖?

      14. 怎么避免死鎖?

      15. 怎么解除死鎖?

      16. 什么是緩沖區(qū)溢出?有什么危害?

      17. 分頁與分段的區(qū)別?

      18. 物理地址、邏輯地址、虛擬內(nèi)存的概念

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

      20. 談談你對動態(tài)鏈接庫和靜態(tài)鏈接庫的理解?

      21. 外中斷和異常有什么區(qū)別?

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

      23. 什么是用戶態(tài)和內(nèi)核態(tài)

      24. 用戶態(tài)和內(nèi)核態(tài)是如何切換的?

      25. 進程終止的方式

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

      27. 如何避免僵尸進程?

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

      29. 常見內(nèi)存分配內(nèi)存錯誤

      30. 內(nèi)存交換中,被換出的進程保存在哪里?

      31. 原子操作的是如何實現(xiàn)的

      32. 抖動你知道是什么嗎?它也叫顛簸現(xiàn)象

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

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

      2. 消息隊列的優(yōu)缺點有哪些?

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

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

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

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

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

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

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

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

      11. RabbitMQ 有幾種廣播類型?

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

      13. Kafka 有幾種數(shù)據(jù)保留的策略?

      14. Kafka 的分區(qū)策略有哪些?

      15. 談下你對 Zookeeper 的認識?

      16. Zookeeper 都有哪些功能?

      17. 談下你對 ZAB 協(xié)議的了解?

      18. Zookeeper 怎么保證主從節(jié)點的狀態(tài)同步?

      19. Zookeeper 有幾種部署模式?

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

      21. 集群中為什么要有主節(jié)點?

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

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

      24. Zookeeper 宕機如何處理?

      25. 說下四種類型的數(shù)據(jù)節(jié)點 Znode?

      26. Zookeeper 和 Dubbo 的關(guān)系??

      關(guān)鍵詞:

      樂活HOT

      娛樂LOVE