面試阿里成功定級P7,多虧了這份學習筆記,已幫助十幾位朋友拿到offer

Java碼農普爾斯發表於2020-11-19

時間不等人,2020年轉眼就要過去了,春招在疫情中度過,不知有多少人還在惋惜...

馬上又是2021年的春招的高峰“金三銀四了”,估計現在就已經有不少的程式猿(媛)朋友早就踏上提前批之路了吧,機會來臨,好好把握,爭取一舉上岸!從7月份開始就在整理“Java一線大廠高崗面試題”,一題一題的摳,整出了這份[Java面試彙總(附解析)],總共有以下六部分的內容:

  • Java基礎-中級-高階
  • 開源框架(SSM:Spring+SpringMVC+MyBatis)
  • 效能調優(JVM+MySQL+Tomcat)
  • 分散式(限流:ZK+Nginx;快取:Redis+MongoDB+Memcached;通訊:MQ+kafka)
  • 微服務(SpringBoot+SpringCloud+Dubbo)
  • 其他:併發程式設計+設計模式+資料結構與演算法+網路

請注意:全文篇幅有點長(請耐心閱讀),給出了全部的題目,也正是因為篇幅有限,所以答案解析這塊只給了部分。不過可免費提供完整的[題目+解析PDF]

需要獲取得話麻煩一鍵三連之後看下圖小助理的微信:(13210158912)新增即可免費獲取到哦

 

 

第一部分:Java基礎-中級-高階

1.1 Java基礎面試題彙總

  • 1. 物件導向和麵向過程的區別?
  • 2. Java 語言有哪些特點?
  • 3. 關於 JVM JDK 和 JRE 最詳細通俗的解答
  • 4. Oracle JDK 和 OpenJDK 的對比
  • 5. Java 和 C++的區別?
  • 6. 什麼是 Java 程式的主類?應用程式和小程式的主類有何不同?
  • 7. Java 應用程式與小程式之間有哪些差別?
  • 8. 字元型常量和字串常量的區別
  • 9. 構造器 Constructor 是否可被 override?
  • 10. 過載和重寫的區別?
  • 11. Java 物件導向程式設計三大特性: 封裝 繼承 多型
  • 12. String StringBuffer 和 StringBuilder 的區別是什麼?String 為什麼是不可變的?
  • 13. 自動裝箱與拆箱
  • 14. 在一個靜態方法內呼叫一個非靜態成員為什麼是非法的?
  • 15. 在 Java 中定義一個不做事且沒有引數的構造方法的作用?
  • 16. import java 和 javax 有什麼區別?
  • 17. 介面和抽象類的區別是什麼?
  • 18. 成員變數與區域性變數的區別有哪些?
  • 19. 建立一個物件用什麼運算子?物件實體與物件引用有何不同?
  • 20. 什麼是方法的返回值?返回值在類的方法裡的作用是什麼?
  • 21. 一個類的構造方法的作用是什麼 若一個類沒有宣告構造方法,該程式能正確執行嗎 ?為什麼?
  • 22. 構造方法有哪些特性?
  • 23. 靜態方法和例項方法有何不同?
  • 24. 物件的相等與指向他們的引用相等,兩者有什麼不同?
  • 25. 在呼叫子類構造方法之前會先呼叫父類沒有引數的構造方法,其目的是?
  • 26. == 與 equals(重要)
  • 27. hashCode 與 equals(重要)
  • 28. 為什麼 Java 中只有值傳遞?
  • 29. 簡述執行緒,程式、程式的基本概念。以及他們之間關係是什麼
  • 30. 執行緒有哪些基本狀態?
  • 31. 關於 final 關鍵字的一些總結
  • 32. Java 中的異常處理
  • 33. Java 序列化中如果有些欄位不想進行序列化 怎麼辦?
  • 34. 獲取用鍵盤輸入常用的的兩種方法?

 

1.2 Java中級面試題彙總

  • 1. HashMap底層實現原理,紅黑樹,B+樹,B樹的結構原理,volatile關鍵字,CAS(比較與交換)實現原理
  • 2. Spring的AOP和IOC是什麼?使用場景有哪些?Spring事務,事務的屬性,傳播行為,資料庫隔離級別
  • 3. Spring和SpringMVC,MyBatis以及SpringBoot的註解分別有哪些?SpringMVC的工作原理,SpringBoot框架的優點,MyBatis框架的優點
  • 4. SpringCould元件有哪些,他們的作用是什麼?(說七八個)微服務的CAP是什麼?BASE是什麼?
  • 5. 設計模式(說五六個)
  • 6. Redis支援的資料型別以及使用場景,持久化,哨兵機制,快取擊穿,快取穿透
  • 7. 執行緒是什麼,有幾種實現方式,它們之間的區別是什麼,執行緒池實現原理,JUC併發包,ThreadLocal與Lock和Synchronize區別?
  • 8. 分散式事務(不同系統之間如何保證資料的一致性(A系統寫入資料,B系統因為某些原因沒有寫入成功,造成資料不一致))
  • 9. 安全性問題(資料篡改(拿到別人的URL,篡改資料(金額)傳送給系統))
  • 10. 索引使用的限制條件,sql優化有哪些,資料同步問題(快取,資料庫資料同步)
  • 11. 初始化Bean物件有幾個步驟,它的生命週期
  • 12. JVM記憶體模型,演算法,垃圾回收器,調優,類載入機制(雙親委派),建立一個物件,這個物件在記憶體中是怎麼分配的?
  • 13. 如何設計一個秒殺系統?(高併發高可用分散式叢集)
  • 14. 悲觀鎖,樂觀鎖,讀寫鎖,行鎖,表鎖,自旋鎖,死鎖,分散式鎖,執行緒同步鎖,公平鎖,非公平鎖分別是什麼?
  • 15. 堆溢位,棧溢位的出現場景以及解決方案
  • 16. 說出幾種MQ之間的區別,以及為什麼使用這種MQ,訊息重複傳送(冪等性),訊息傳送失敗,訊息掉包,長時間收不到訊息,傳送的訊息太大造成接收不成功
  • 17. 單點登入實現原理
  • 18. 假如有上億條資料,你如何快速找到其中一條你想要的資料(幾種簡單的演算法)
  • 19. Dubbo的執行原理,支援什麼協議,與SpringCould相比它為什麼效率要高一些,Zookeeper底層原理
  • 20. 假如你帶一個團隊,讓你設計一個系統,你需要考慮哪些?

 

1.3 Java高階面試題彙總

  • 1. 為什麼使用訊息佇列?訊息佇列有什麼優點和缺點?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什麼優點和缺點?
  • 2. 如何保證訊息佇列的高可用?
  • 3. 如何保證訊息不被重複消費?或者說,如何保證訊息消費的冪等性?
  • 4. 如何保證訊息不被重複消費?或者說,如何保證訊息消費的冪等性?
  • 5. 如何保證訊息的順序性?
  • 6. 如何解決訊息佇列的延時以及過期失效問題? 訊息佇列滿了以後該怎麼處理?有幾百萬訊息持續積壓幾小時,說說怎麼解決?
  • 7. 如果讓你寫一個訊息佇列,該如何進行架構設計?說一下你的思路?
  • 8. 專案中快取是如何使用的?為什麼要用快取?快取使用不當會造成什麼後果?
  • 9. redis 和 memcached 有什麼區別?redis 的執行緒模型是什麼?為什麼 redis 單執行緒卻能支撐高併發?
  • 10. redis 都有哪些資料型別?分別在哪些場景下使用比較合適?
  • 11. redis 的過期策略都有哪些?記憶體淘汰機制都有哪些?手寫一下 LRU 程式碼實現?
  • 12. 如何保證 redis 的高併發和高可用?redis 的主從複製原理能介紹一下麼?redis 的哨
  • 13. redis 的持久化有哪幾種方式?不同的持久化機制都有什麼優缺點?持久化機制具體底層是如何實現的?
  • 14. redis 叢集模式的工作原理能說一下麼?在叢集模式下,redis 的 key 是如何定址的?分散式定址都有哪些演算法?瞭解一致性 hash 演算法嗎?
  • 15. 瞭解什麼是 redis 的雪崩、穿透和擊穿?redis 崩潰之後會怎麼樣?系統該如何應對這種情況?如何處理 redis 的穿透?
  • 16. 如何保證快取與資料庫的雙寫一致性?
  • 17. 為什麼要分庫分表(設計高併發系統的時候,資料庫層面該如何設計)?用過哪些分庫分表中介軟體?不同的分庫分表中介軟體都有什麼優點和缺點?你們具體是如何對資料庫如何進行垂直拆分或水平拆分的?
  • 18. 現在有一個未分庫分表的系統,未來要分庫分表,如何設計才可以讓系統從未分庫分表動態切換到分庫分表上?
  • 19. 如何設計可以動態擴容縮容的分庫分表方案?
  • 20. 分庫分表之後,id 主鍵如何處理?
  • 21. 有沒有做 MySQL 讀寫分離?如何實現 MySQL 的讀寫分離?MySQL 主從複製原理的是啥?如何解決MySQL 主從同步的延時問題?
  • 22. 如何設計一個高併發系統?
  • 23. 說一下的 dubbo 的工作原理?註冊中心掛了可以繼續通訊嗎?說說一次 rpc 請求的流程?
  • 24. dubbo 支援哪些通訊協議?支援哪些序列化協議?說一下Hessian 的資料結構?PB 知道嗎?為什麼 PB 的效率是最高的?
  • 25. dubbo 負載均衡策略和叢集容錯策略都有哪些?動態代理策略呢?
  • 26. 如何基於 dubbo 進行服務治理、服務降級、失敗重試以及超時重試?
  • 27. 分散式服務介面的冪等性如何設計(比如不能重複扣款)?
  • 28. 如何自己設計一個類似 Dubbo 的 RPC 框架?
  • 29. 一般實現分散式鎖都有哪些方式?使用 redis 如何設計分散式鎖?使用 zk 來設計分散式鎖可以嗎?這兩種分散式鎖的實現方式哪種效率比較高?
  • 30. 分散式事務瞭解嗎?你們是如何解決分散式事務問題的?
  • 31. 服務註冊和發現是什麼意思?Spring Cloud 如何實現?
  • 32. 什麼是 Netflix Feign?它的優點是什麼?
  • 33. 負載平衡的意義什麼?
  • 34. 什麼是 Spring Cloud Bus?我們需要它嗎?

 

第二部分:開源框架(SSM:Spring+SpringMVC+MyBatis)

 

2.1 Spring面試題彙總

  • 1. 談談對 Spring IoC 的理解?
  • 2. 談談對 Spring DI 的理解?
  • 3. BeanFactory 介面和 ApplicationContext 介面不同點是什麼?
  • 4. 請介紹你熟悉的 Spring 核心類,並說明有什麼作用?
  • 5. 介紹一下 Spring 的事務的瞭解?
  • 6. 介紹一下 Spring 的事務實現方式?
  • 7. 解釋 AOP 模組
  • 8. Spring 的通知型別有哪些,請簡單介紹一下?
  • 9. Spring 通知型別使用場景分別有哪些?
  • 10. 請介紹一下你對 Spring Beans 的理解?
  • 11. Spring 有哪些優點?
  • 12. 在Spring中使用hibernate的方法步驟
  • 13. Spring 和 Struts 的區別?
  • 14. Spring 框架由哪幾部分組成?
  • 15. 談談你對 BeanFactory的理解,BeanFactory 實現舉例
  • 16. 談談對 Spring 中的 Web 模組的理解
  • 17. BeanFactory 和 Application contexts 有什麼區別?
  • 18. 談談你對 Spring 依賴注入的理解?
  • 19. 什麼是 Bean 裝配?
  • 20. 什麼是 Bean 的自動裝配?
  • 21. 介紹一下自動裝配有幾種方式?
  • 22. 什麼是基於註解的容器配置?
  • 23. 簡述 JdbcTemplate 類的作用
  • 24. 解釋 AOP
  • 25. 解釋 Aspect 切面
  • 26. 簡述 Spring AOP 中的通知
  • 27. Spring AOP 中的植入你怎樣理解?
  • 28. 請詳細介紹一下 Spring MVC 的流程?
  • 29. Spring 配置檔案?
  • 30. @RequestMapping 註解用在類上面有什麼作用
  • 31. 怎麼樣把某個請求對映到特定的方法上面
  • 32. 談談 Spring 對 DAO 的支援
  • 33. Spring 配置 Bean 例項化有哪些方式?
  • 34. Bean 注入屬性有哪幾種方式
  • 35. 在 Spring 中如何實現時間處理?
  • 36. Spring 中如何更高效的使用 JDBC ?
  • 37. 請介紹一下設計模式在 Spring 框架中的使用?
  • 38. 講講 Spring 框架的優點有哪些?
  • 39. 哪種依賴注入方式你建議使用,構造器注入,還是 Setter 方法注入?
  • 40. 你怎樣定義類的作用域?
  • 41. 解釋 Spring 支援的幾種 Bean 的作用域
  • 42. 在 Spring 中如何注入一個 Java 集合?
  • 43. 你可以在 Spring 中注入一個 null 和一個空字串嗎?
  • 44. 什麼是基於 Java 的 Spring 註解配置? 給一些註解的例子
  • 45. 你更傾向用哪種事務管理型別?
  • 46. Bean 的呼叫方式有哪些?
  • 47. Spring MVC 裡面攔截器是怎麼寫的
  • 48. 當一個方法向 AJAX 返回特殊物件,比如 Object、List 等,需要做什麼處理?
  • 49. 如何使用 Spring MVC 完成 JSON 操作
  • 50. Spring 如何整合 Hibernate
  • 51. Spring 如何整合 Struts2 ?
  • 52. 開發中主要使用 Spring 的什麼技術 ?
  • 53. 介紹一下 Spring MVC 常用的一些註解
  • 54. Spring 框架的事務管理有哪些優點
  • 55. IoC 控制反轉設計原理?
  • 56. Spring 的生命週期?
  • 57. Spring 如何處理執行緒併發問題?
  • 58. 核心容器(應用上下文)模組的理解?
  • 59. 為什麼說 Spring 是一個容器?
  • 60. Spring 的優點?
  • 61. Spring 框架中的單例 Beans 是執行緒安全的麼?
  • 62. Spring 框架中有哪些不同型別的事件?
  • 63. IoC 的優點是什麼?
  • 64. 解釋 Spring 框架中 Bean 的生命週期
  • 65. 什麼是 Spring 的內部 Bean?
  • 66. 自動裝配有哪些侷限性 ?
  • 67. Spring 框架的事務管理有哪些優點?
  • 68. 在 Spring AOP 中,關注點和橫切關注的區別是什麼?
  • 69. 說說 Spring AOP 的底層實現原理?
  • 70. 如何給 Spring 容器提供配置後設資料?
  • 71. 哪些是重要的 Bean 生命週期方法? 你能過載它們嗎?
  • 72. 講下 Spring MVC 的執行流程
  • 73. Spring MVC 的控制器是不是單例模式,如果是,有什麼問題,怎麼解決?
  • 74. Spring 中迴圈注入的方式?
  • 75. Spring MVC 比較 Struts2
  • 76. 什麼是 Spring Boot?
  • 77. Spring Boot 自動配置的原理?
  • 78. Spring Boot 讀取配置檔案的方式?
  • 79. 什麼是微服務架構?
  • 80. Ribbon 和 Feign 的區別?
  • 81. Spring Cloud 斷路器的作用?
  • 82. 為什麼要用 Spring Boot?
  • 83. Spring Boot 的核心配置檔案有哪幾個?它們的區別是什麼?
  • 84. Spring Boot 的配置檔案有哪幾種格式?它們有什麼區別?
  • 85. Spring Boot 的核心註解是哪個?它主要由哪幾個註解組成的?
  • 86. 開啟 Spring Boot 特性有哪幾種方式?
  • 87. Spring Boot 需要獨立的容器執行嗎?
  • 88. 執行 Spring Boot 有哪幾種方式?
  • 89. 你如何理解 Spring Boot 中的 Starters?
  • 90. 如何在 Spring Boot 啟動的時候執行一些特定的程式碼?
  • 91. Spring Boot 有哪幾種讀取配置的方式?
  • 92. Spring Boot 實現熱部署有哪幾種方式?
  • 93. Spring Boot 多套不同環境如何配置?
  • 94. Spring Boot 可以相容老 Spring 專案嗎,如何做?
  • 95. 什麼是 Spring Cloud?
  • 96. 介紹一下 Spring Cloud 常用的元件?
  • 97. Spring Cloud 如何實現服務註冊的?
  • 98. 什麼是負載均衡?有什麼作用?
  • 99. 什麼是服務熔斷?
  • 100. 請介紹一下 Ribbon 的主要作用?

 

2.2 SpringMVC面試題彙總

  • 1. 什麼是 SpringMvc?
  • 2. Spring MVC 的優點:
  • 3. SpringMVC 工作原理?
  • 4. SpringMVC 流程?
  • 5. SpringMvc 的控制器是不是單例模式,如果是,有什麼問題,怎麼解決?
  • 6. 如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的區別有哪些?
  • 7. SpingMvc 中的控制器的註解一般用哪個,有沒有別的註解可以替代?
  • 8. @RequestMapping 註解用在類上面有什麼作用?
  • 9. 怎麼樣把某個請求對映到特定的方法上面?
  • 10. 如果在攔截請求中,我想攔截 get 方式提交的方法,怎麼配置?
  • 11. 怎麼樣在方法裡面得到 Request,或者 Session?
  • 12. 我想在攔截的方法裡面得到從前臺傳入的引數,怎麼得到?
  • 13. 如果前臺有很多個引數傳入,並且這些引數都是一個物件的,那麼怎麼樣快速得到這個物件?
  • 14. SpringMvc 中函式的返回值是什麼?
  • 15. SpringMVC 怎麼樣設定重定向和轉發的?
  • 16. SpringMvc 用什麼物件從後臺向前臺傳遞資料的?
  • 17. SpringMvc 中有個類把檢視和資料都合併的一起的,叫什麼?
  • 18. 怎麼樣把 ModelMap 裡面的資料放入 Session 裡面?
  • 19. SpringMvc 怎麼和 AJAX 相互呼叫的?
  • 20. 講下 SpringMvc 的執行流程
  • 21. SpringMvc 裡面攔截器是怎麼寫的?
  • 22. 當一個方法向 AJAX 返回特殊物件,比如 Object,List 等,需要做什麼處理?

 

2.3 MyBatis面試題彙總

  • 1. 什麼是 MyBatis?講下 MyBatis 的快取
  • 2. Mybatis 是如何進行分頁的?分頁外掛的原理是什麼?
  • 3. 簡述 Mybatis 的外掛執行原理,以及如何編寫一個外掛?
  • 4. Mybatis 動態 sql 是做什麼的?都有哪些動態 sql?能簡述一下動態 sql 的執行原理不?
  • 5. #{}和${}的區別是什麼?
  • 6. 為什麼說 Mybatis 是半自動 ORM 對映工具?它與全自動的區別在哪裡?
  • 7. Mybatis 是否支援延遲載入?如果支援,它的實現原理是什麼?
  • 8. MyBatis 與 Hibernate 有哪些不同?
  • 9. MyBatis 的好處是什麼?
  • 10. 簡述 Mybatis 的 Xml 對映檔案和 Mybatis 內部資料結構之間的對映關係?
  • 11. 什麼是 MyBatis 的介面繫結,有什麼好處?
  • 12. 介面繫結有幾種實現方式,分別是怎麼實現的?
  • 13. 什麼情況下用註解繫結,什麼情況下用 xml 繫結?
  • 14. MyBatis 實現一對一有幾種方式?具體怎麼操作的?
  • 15. Mybatis 能執行一對一、一對多的關聯查詢嗎?都有哪些實現方式,以及它們之間的區別?
  • 16. MyBatis 裡面的動態 Sql 是怎麼設定的?用什麼語法?
  • 17. Mybatis 是如何將 sql 執行結果封裝為目標物件並返回的?都有哪些對映形式?
  • 18. Xml 對映檔案中,除了常見的 select|insert|updae|delete 標籤之外,還有哪些標籤?
  • 19. 當實體類中的屬性名和表中的欄位名不一樣,如果將查詢的結果封裝到指定 pojo?
  • 20. 通常一個 Xml 對映檔案,都會寫一個 Dao 介面與之對應, Dao 的工作原理,是否可以過載?
  • 21. Mybatis 對映檔案中,如果 A 標籤通過 include 引用了 B 標籤的內容,請問,B 標籤能否定義在 A 標籤的後面,還是說必須定義在 A 標籤的前面?
  • 22. Mybatis 的 Xml 對映檔案中,不同的 Xml 對映檔案,id 是否可以重複?
  • 23. Mybatis 都有哪些 Executor 執行器?它們之間的區別是什麼?
  • 24. Mybatis 中如何指定使用哪一種 Executor 執行器?
  • 25. Mybatis 執行批量插入,能返回資料庫主鍵列表嗎?
  • 26. Mybatis 是否可以對映 Enum 列舉類?
  • 27. 如何獲取自動生成的(主)鍵值?
  • 28. 在 mapper 中如何傳遞多個引數?
  • 29. resultType resultMap 的區別?
  • 30. 使用 MyBatis 的 mapper 介面呼叫時有哪些要求?
  • 31. Mybatis 比 IBatis 比較大的幾個改進是什麼?
  • 32. IBatis 和 MyBatis 在核心處理類分別叫什麼?在細節上的不同有哪些?

 

第三部分:效能調優(JVM+MySQL+Tomcat)

3.1 JVM面試題彙總

  • 1. Java 類載入過程?
  • 2. 描述一下 JVM 載入 Class 檔案的原理機制?
  • 3. Java 記憶體分配
  • 4. GC 是什麼? 為什麼要有 GC?
  • 5. 簡述 Java 垃圾回收機制
  • 6. 如何判斷一個物件是否存活?(或者 GC 物件的判定方法)
  • 7. 垃圾回收的優點和原理。並考慮 2 種回收機制
  • 8. 垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?有什麼辦法主動通知虛擬機器進行垃圾回收?
  • 9. Java 中會存在記憶體洩漏嗎,請簡單描述
  • 10. 深拷貝和淺拷貝
  • 11. System.gc() 和 Runtime.gc() 會做什麼事情?
  • 12. finalize() 方法什麼時候被呼叫?解構函式 (finalization) 的目的是什麼?
  • 13. 如果物件的引用被置為 null,垃圾收集器是否會立即釋放物件佔用的記憶體?
  • 14. 什麼是分散式垃圾回收(DGC)?它是如何工作的?
  • 15. 序列(serial)收集器和吞吐量(throughput)收集器的區別是什麼?
  • 16. 在 Java 中,物件什麼時候可以被垃圾回收?
  • 17. 簡述 Java 記憶體分配與回收策略以及 Minor GC 和 MajorGC
  • 18. JVM 的永久代中會發生垃圾回收麼?
  • 19. Java 中垃圾收集的方法有哪些?
  • 20. 什麼是類載入器,類載入器有哪些?
  • 21. 類載入器雙親委派模型機制?

3.2 MySQL面試題彙總

  • MySQL21個最佳效能優化實踐
  • 1. 為查詢快取優化你的查詢
  • 2. EXPLAIN你的SELECT查詢
  • 3. 當只要一行資料時使用LIMIT 1
  • 4. 為搜尋欄位建索引
  • 5. 在Join表的時候使用相當型別的例,並將其索引
  • 6. 千萬不要 ORDER BY RAND()
  • 7. 避免 SELECT *
  • 8. 永遠為每張表設定一個 ID
  • 9. 使用 ENUM 而不是 VARCHAR
  • 10. 從 PROCEDURE ANALYSE() 取得建議
  • 11. 儘可能的使用 NOT NULL
  • 12. Prepared Statements
  • 13. 無緩衝的查詢
  • 14. 把 IP 地址存成 UNSIGNED INT
  • 15. 固定長度的表會更快
  • 16. 垂直分割
  • 17. 拆分大的 DELETE 或 INSERT 語句
  • 18. 越小的列會越快
  • 19. 選擇正確的儲存引擎
  • 20. 使用一個物件關係對映器(Object Relational Mapper)
  • 21. 小心“永久連結”
  • MySQL高頻面試題彙總
  • 1. 事務四大特性(ACID)原子性、一致性、隔離性、永續性?
  • 2. 事務的併發?事務隔離級別,每個級別會引發什麼問題,MySQL預設是哪個級別?
  • 3. MySQL常見的三種儲存引擎(InnoDB、MyISAM、MEMORY)的區別?
  • 4. MySQL的MyISAM與InnoDB兩種儲存引擎在,事務、鎖級別,各自的適用場景?
  • 5. 查詢語句不同元素(where、jion、limit、group by、having等等)執行先後順序?
  • 6. 什麼是臨時表,臨時表什麼時候刪除?
  • 7. MySQL B+Tree索引和Hash索引的區別?
  • 8. sql查詢語句確定建立哪種型別的索引?如何優化查詢?
  • 9. 聚集索引和非聚集索引區別?
  • 10. 有哪些鎖(樂觀鎖悲觀鎖),select 時怎麼加排它鎖?
  • 11. 非關係型資料庫和關係型資料庫區別,優勢比較?
  • 12. 資料庫三正規化,根據某個場景設計資料表?
  • 13. 資料庫的讀寫分離、主從複製,主從複製分析的 7 個問題?
  • 14. 使用explain優化sql和索引?
  • 15. MySQL慢查詢怎麼解決?
  • 16. 什麼是 內連線、外連線、交叉連線、笛卡爾積等?
  • 17. mysql都有什麼鎖,死鎖判定原理和具體場景,死鎖怎麼解決?
  • 18. varchar和char的使用場景?
  • 19. mysql 高併發環境解決方案?
  • 20. 資料庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌)?

3.3 Tomcat面試題彙總

  • 1. 你怎樣給 tomcat 去調優?
  • 2. 如何加大 tomcat 連線數
  • 3. tomcat 中如何禁止列目錄下的檔案
  • 4. 怎樣加大 tomcat 的記憶體
  • 5. Tomcat 有幾種部署方式
  • 6. Tomcat 的優化經驗
  • 7. Tomcat 的預設埠是多少,怎麼修改?
  • 8. tomcat 有哪幾種 Connector 執行模式( 優化) ?
  • 9. Tomcat 有幾種部署方式?
  • 10. tomcat 容器是如何建立 servlet 類例項?用到了什麼原理?
  • 11. tomcat 如何優化?
  • 12. 記憶體調優
  • 13. 垃圾回收策略調優
  • 14. 新增 JMS 遠端監控
  • 15. 專業點的分析工具有
  • 16. 關於 Tomcat 的 的 session 數目
  • 17. 監視 Tomcat 的記憶體使用情況
  • 18. 列印類的載入情況及物件的回收情況
  • 19. Tomcat 一個請求的完整過程
  • 20. Tomcat 工作模式?

第四部分:分散式(限流:ZK+Nginx;快取:Redis+MongoDB+Memcached;通訊:MQ+kafka)

4.1 分散式限流之ZK面試題彙總

  • 1. ZooKeeper 是什麼?
  • 2. ZooKeeper 提供了什麼?
  • 3. Zookeeper 檔案系統
  • 4. 四種型別的 znode
  • 5. Zookeeper 通知機制
  • 6. Zookeeper 做了什麼?
  • 7. zk 的命名服務(檔案系統)
  • 8. zk 的配置管理(檔案系統、通知機制)
  • 9. Zookeeper 叢集管理(檔案系統、通知機制)
  • 10. Zookeeper 分散式鎖(檔案系統、通知機制)
  • 11. 獲取分散式鎖的流程
  • 12. Zookeeper 佇列管理(檔案系統、通知機制)
  • 13. Zookeeper 資料複製
  • 14. Zookeeper 工作原理
  • 15. zookeeper 是如何保證事務的順序一致性的?
  • 16. Zookeeper 下 Server 工作狀態
  • 17. zookeeper 是如何選取主 leader 的?
  • 18. 分散式通知和協調
  • 19. 機器中為什麼會有 leader?
  • 20. zk 節點當機如何處理?
  • 21. Zookeeper 同步流程
  • 22. zookeeper 負載均衡和 nginx 負載均衡區別
  • 23. zookeeper watch 機制

4.2 分散式限流之Nginx面試題彙總

  • 1. 請解釋一下什麼是 Nginx?
  • 2. 請列舉 x Nginx 的一些特性。
  • 3. 請列舉 x Nginx 和 和 Apache 之間的不同點
  • 4. 請解釋 x Nginx 如何處理 P HTTP 請求。
  • 5. 在 x Nginx 中,如何使用未定義的伺服器名稱來阻止處理請求?
  • 6. 使用 “ 反向代理伺服器 ”
  • 7. 請列舉 x Nginx 伺服器的最佳用途。
  • 8. 請解釋 x Nginx 伺服器上的 r Master 和 和 r Worker 程式分別是什麼?
  • 9. 請解釋你如何通過不同於 0 80 的埠開啟 Nginx?
  • 10. 請解釋是否有可能將 x Nginx 的錯誤替換為 2 502 錯誤?
  • 11. 在 x Nginx 中,解釋如何在 L URL 中保留雙斜線? ?
  • 12. 請解釋 e ngx_http_upstream_module 的作用是什麼?
  • 13. 請解釋什麼是 K C10K 問題?
  • 14. 請陳述 s stub_status 和 和 r sub_filter 指令的作用是什麼?
  • 15. 解釋 x Nginx 是否支援將請求壓縮到上游?
  • 16. 解釋如何在 x Nginx 中獲得當前的時間?
  • 17. 用 x Nginx 伺服器解釋s -s 的目的是什麼?
  • 18. 解釋如何在 x Nginx 伺服器上新增模組?

4.3 分散式快取之Redis面試題彙總

  • 1. redis 簡介
  • 2. 為什麼要用 redis /為什麼要用快取(高效能、高併發)
  • 3. 為什麼要用 redis 而不用 map/guava 做快取?
  • 4. redis 和 memcached 的區別
  • 5. redis 常見資料結構以及使用場景分析(String、Hash、List、Set、Sorted Set)
  • 6. redis 設定過期時間
  • 7. redis 記憶體淘汰機制(MySQL裡有2000w資料,Redis中只存20w的資料,如何保證Redis中的資料都是熱點資料?)
  • 8. redis 持久化機制(怎麼保證 redis 掛掉之後再重啟資料可以進行恢復)
  • 9. redis 事務
  • 10. Redis 常見異常及解決方案(快取穿透、快取雪崩、快取預熱、快取降級)
  • 11. 分散式環境下常見的應用場景(分散式鎖、分散式自增 ID)
  • 12. Redis 叢集模式(主從模式、哨兵模式、Cluster 叢集模式)
  • 13. 如何解決 Redis 的併發競爭 Key 問題
  • 14. 如何保證快取與資料庫雙寫時的資料一致性?

4.4 分散式快取之MongoDB面試題彙總

  • 1. 你說的 NoSQL 資料庫是什麼意思?NoSQL 與 RDBMS 直接有什麼區別?為什麼要使用和不使用NoSQL 資料庫?說一說 NoSQL 資料庫的幾個優點?
  • 2. NoSQL 資料庫有哪些型別?
  • 3. MySQL 與 MongoDB 之間最基本的差別是什麼?
  • 4. 你怎麼比較 MongoDB、CouchDB 及 CouchBase?
  • 5. MongoDB 成為最好 NoSQL 資料庫的原因是什麼?
  • 6. 32 位系統上有什麼細微差別?
  • 7. journal 回放在條目(entry)不完整時(比如恰巧有一箇中途故障了)會遇到問題嗎?
  • 8. 分析器在 MongoDB 中的作用是什麼?
  • 9. 名字空間(namespace)是什麼?
  • 10. 如果使用者移除物件的屬性,該屬性是否從儲存層中刪除?
  • 11. 能否使用日誌特徵進行安全備份?
  • 12. 允許空值 null 嗎?
  • 13. 更新操作立刻 fsync 到磁碟?
  • 14. 如何執行事務/加鎖?
  • 15. 為什麼我的資料檔案如此龐大?
  • 16. 啟用備份故障恢復需要多久?
  • 17. 什麼是 master 或 primary?
  • 18. 什麼是 secondary 或 slave?
  • 19. 我必須呼叫 getLastError 來確保寫操作生效了麼?
  • 20. 我應該啟動一個叢集分片(sharded)還是一個非叢集分片的 MongoDB 環境?
  • 21. 分片(sharding)和複製(replication)是怎樣工作的?
  • 22. 資料在什麼時候才會擴充套件到多個分片(shard)裡?
  • 23. 當我試圖更新一個正在被遷移的塊(chunk)上的文件時會發生什麼?
  • 24. 如果在一個分片(shard)停止或者很慢的時候,我發起一個查詢會怎樣?
  • 25. 我可以把 moveChunk 目錄裡的舊檔案刪除嗎?
  • 26. 我怎麼檢視 Mongo 正在使用的連結?
  • 27. 如果塊移動操作(moveChunk)失敗了,我需要手動清除部分轉移的文件嗎?
  • 28. 如果我在使用複製技術(replication),可以一部分使用日誌(journaling)而其他部分則不使用嗎?
  • 29. 當更新一個正在被遷移的塊(Chunk)上的文件時會發生什麼?
  • 30. MongoDB 在 A:{B,C}上建立索引,查詢 A:{B,C}和 A:{C,B}都會使用索引嗎?
  • 31. 如果一個分片(Shard)停止或很慢的時候,發起一個查詢會怎樣?
  • 32. MongoDB 支援儲存過程嗎?如果支援的話,怎麼用?
  • 33. 如何理解 MongoDB 中的 GridFS 機制,MongoDB 為何使用 GridFS 來儲存檔案?

4.5 分散式快取之memcached面試題彙總

  • 1. memcached 是怎麼工作的?
  • 2. memcached 最大的優勢是什麼?
  • 3. memcached 和伺服器的 local cache (比如 PHP 的 的 APC 、mmap 檔案等)相比,有什麼優缺點?
  • 4. memcached 和 和 MySQL 的 的 query cache 相比,有什麼優缺點?
  • 5. memcached 的 的 cache 機制是怎樣的?
  • 6. memcached 如何實現冗餘機制?
  • 7. 我需要把 memcached 中的 item 批量匯出匯入,怎麼辦?
  • 8. memcached 如何處理容錯的?
  • 9. 如何將 memcached 中 中 item 批量匯入匯出?
  • 10. memcached 是如何做身份驗證的?
  • 11. memcached 的多執行緒是什麼?如何使用它們?
  • 12. memcached 能接受的 key 的最大長度是多少?
  • 13. memcached 對 對 item 的過期時間有什麼限制?
  • 14. memcached 最大能儲存多大的單個 item ?
  • 15. 為什麼單個 item 的大小被限制在 1M byte 之內?

 

4.6 分散式通訊之MQ面試題彙總

  • 1. 什麼是 ActiveMQ?
  • 2. ActiveMQ 伺服器當機怎麼辦?
  • 3. 丟訊息怎麼辦?
  • 4. 持久化訊息非常慢
  • 5. 訊息的不均勻消費。
  • 6. 死信佇列?
  • 7. ActiveMQ 中的訊息重發時間間隔和重發次數嗎?
  • 8. RabbitMQ 中的 broker 是指什麼?cluster 又是指什麼?
  • 9. 什麼是後設資料?後設資料分為哪些型別?包括哪些內容?與 cluster 相關的後設資料有哪些?後設資料是如何儲存的?後設資料在 cluster 中是如何分佈的?
  • 10. RAM node 和 disk node 的區別?
  • 11. RabbitMQ 上的一個 queue 中存放的 message 是否有數量限制?
  • 12. RabbitMQ 概念裡的 channel、exchange 和 queue 這些東東是邏輯概念,還是對應著程式實體?這些東東分別起什麼作用?
  • 13. vhost 是什麼?起什麼作用?
  • 14. 在單 node 系統和多 node 構成的 cluster 系統中宣告 queue、exchange ,以及進行 binding 會有什麼不同?
  • 15. 客戶端連線到 cluster 中的任意 node 上是否都能正常工作?
  • 16. cluster 中 node 的失效會對 consumer 產生什麼影響?若是在 cluster 中建立了mirrored queue ,這時 node 失效會對 consumer 產生什麼影響?
  • 17. 能夠在地理上分開的不同資料中心使用 RabbitMQ cluster 麼?
  • 18. 為什麼 heavy RPC 的使用場景下不建議採用 disk node ?
  • 19. 向不存在的 exchange 發 publish 訊息會發生什麼?向不存在的 queue 執行consume 動作會發生什麼?
  • 20. routing_key 和 binding_key 的最大長度是多少?
  • 21. RabbitMQ 允許傳送的 message 最大可達多大?
  • 22. 什麼情況下 producer 不主動建立 queue 是安全的?
  • 23. “dead letter”queue 的用途?
  • 24. 為什麼說保證 message 被可靠持久化的條件是 queue 和 exchange 具有durable 屬性,同時 message 具有 persistent 屬性才行?
  • 25. 什麼情況下會出現 blackholed 問題?
  • 26. 如何防止出現 blackholed 問題?
  • 27. Consumer Cancellation Notification 機制用於什麼場景?
  • 28. Basic.Reject 的用法是什麼?
  • 29. 為什麼不應該對所有的 message 都使用持久化機制?
  • 30. RabbitMQ 中的 cluster、mirrored queue,以及 warrens 機制分別用於解決什麼問題?存在哪些問題?

 

4.7 分散式通訊之Kafka面試題彙總

  • 1. Kafka的用途有哪些?使用場景如何?
  • 2. Kafka中的ISR、AR又代表什麼?ISR的伸縮又指什麼
  • 3. Kafka中的HW、LEO、LSO、LW等分別代表什麼?
  • 4. Kafka中是怎麼體現訊息順序性的?
  • 5. Kafka中的分割槽器、序列化器、攔截器是否瞭解?它們之間的處理順序是什麼?
  • 6. Kafka生產者客戶端的整體結構是什麼樣子的?
  • 7. Kafka生產者客戶端中使用了幾個執行緒來處理?分別是什麼?
  • 8. Kafka的舊版Scala的消費者客戶端的設計有什麼缺陷?
  • 9. “消費組中的消費者個數如果超過topic的分割槽,那麼就會有消費者消費不到資料”這句話是否正確?如果正確,那麼有沒有什麼hack的手段?
  • 10. 有哪些情形會造成重複消費?
  • 11. 哪些情景下會造成訊息漏消費?
  • 12. KafkaConsumer是非執行緒安全的,那麼怎麼樣實現多執行緒消費?
  • 13. 簡述消費者與消費組之間的關係
  • 14. 當你使用kafka-topics.sh建立(刪除)了一個topic之後,Kafka背後會執行什麼邏輯?
  • 15. topic的分割槽數可不可以增加?如果可以怎麼增加?如果不可以,那又是為什麼?
  • 16. topic的分割槽數可不可以減少?如果可以怎麼減少?如果不可以,那又是為什麼?
  • 17. 建立topic時如何選擇合適的分割槽數?
  • 18. Kafka目前有哪些內部topic,它們都有什麼特徵?各自的作用又是什麼?
  • 19. 優先副本是什麼?它有什麼特殊的作用?
  • 20. Kafka有哪幾處地方有分割槽分配的概念?簡述大致的過程及原理
  • 21. 簡述Kafka的日誌目錄結構
  • 22. Kafka中有哪些索引檔案?
  • 23. 如果我指定了一個offset,Kafka怎麼查詢到對應的訊息?
  • 24. 如果我指定了一個timestamp,Kafka怎麼查詢到對應的訊息?
  • 25. 聊一聊你對Kafka的Log Retention的理解
  • 26. 聊一聊你對Kafka的Log Compaction的理解
  • 27. 聊一聊你對Kafka底層儲存的理解
  • 28. 聊一聊Kafka的延時操作的原理
  • 29. 聊一聊Kafka控制器的作用
  • 30. Kafka的舊版Scala的消費者客戶端的設計有什麼缺陷?
  • 31. 消費再均衡的原理是什麼?(提示:消費者協調器和消費組協調器)
  • 32. Kafka中的冪等是怎麼實現的?
  • 33. Kafka中的事務是怎麼實現的?
  • 34. 失效副本是指什麼?有哪些應對措施?
  • 35. 多副本下,各個副本中的HW和LEO的演變過程
  • 36. Kafka在可靠性方面做了哪些改進?(HW, LeaderEpoch)
  • 37. 為什麼Kafka不支援讀寫分離?
  • 38. Kafka中的延遲佇列怎麼實現
  • 39. Kafka中怎麼實現死信佇列和重試佇列?
  • 40. Kafka中怎麼做訊息審計?
  • 41. Kafka中怎麼做訊息軌跡?
  • 42. 怎麼計算Lag?(注意read_uncommitted和read_committed狀態下的不同)
  • 43. Kafka有哪些指標需要著重關注?
  • 44. Kafka的哪些設計讓它有如此高的效能?

第五部分:微服務(SpringBoot+SpringCloud+Dubbo)

5.1 SpringBoot面試題彙總

  • 1. Spring Boot、Spring MVC 和 Spring 有什麼區別?
  • 2. 什麼是自動配置?
  • 3. 什麼是 Spring Boot Stater ?
  • 4. 你能否舉一個例子來解釋更多 Staters 的內容?
  • 5. Spring Boot 還提供了其它的哪些 Starter Project Options?
  • 6. Spring 是如何快速建立產品就緒應用程式的?
  • 7. 建立一個 Spring Boot Project 的最簡單的方法是什麼?
  • 8. Spring Initializr 是建立 Spring Boot Projects 的唯一方法嗎?
  • 9. 為什麼我們需要 spring-boot-maven-plugin?
  • 10. 如何使用 SpringBoot 自動重灌我的應用程式?
  • 11. 什麼是嵌入式伺服器?我們為什麼要使用嵌入式伺服器呢?
  • 12. 如何在 Spring Boot 中新增通用的 JS 程式碼?
  • 13. 什麼是 Spring Data?
  • 14. 什麼是 Spring Data REST?
  • 15. path=”users”, collectionResourceRel=”users” 如何與 Spring Data Rest 一起使用?
  • 16. 當 Spring Boot 應用程式作為 Java 應用程式執行時,後臺會發生什麼?
  • 17. 我們能否在 spring-boot-starter-web 中用 jetty 代替 tomcat?
  • 18. 如何使用 Spring Boot 生成一個 WAR 檔案?
  • 19. 如何使用 Spring Boot 部署到不同的伺服器?
  • 20. RequestMapping 和 GetMapping 的不同之處在哪裡?
  • 21. 為什麼我們不建議在實際的應用程式中使用 Spring Data Rest?
  • 22. 在 Spring Initializer 中,如何改變一個專案的包名字?
  • 23. 可以配置 application.propertierde 的完整的屬性列表在哪裡可以找到?
  • 24. JPA 和 Hibernate 有哪些區別?
  • 25. 業務邊界應該從哪一層開始?
  • 26. 使用 Spring Boot 啟動連線到記憶體資料庫 H2 的 JPA 應用程式需要哪些依賴項?
  • 27. 如何不通過任何配置來選擇 Hibernate 作為 JPA 的預設實現?
  • 28. 指定的資料庫連線資訊在哪裡?它是如何知道自動連線至 H2 的?
  • 29. 我們如何連線一個像 MySQL 或者Orcale 一樣的外部資料庫?
  • 30. Spring Boot 配置的預設 H2 資料庫的名字是上面?為什麼預設的資料庫名字是 testdb?
  • 31. 如果 H2 不在類路徑裡面,會出現上面情況?
  • 32. 你能否舉一個以 ReadOnly 為事務管理的例子?
  • 33. 釋出 Spring Boot 使用者應用程式自定義配置的最好方法是什麼?
  • 34. 配置檔案的需求是什麼?
  • 35. 如何使用配置檔案通過 Spring Boot 配置特定環境的配置?

 

5.2 SpringCloud面試題彙總

  • 1. 什麼是 Spring Cloud?
  • 2. 使用 Spring Cloud 有什麼優勢?
  • 3. 服務註冊和發現是什麼意思?Spring Cloud 如何實現?
  • 4. 負載平衡的意義什麼?
  • 5. 什麼是 Hystrix?它如何實現容錯?
  • 6. 什麼是 Hystrix 斷路器?我們需要它嗎?
  • 7. 什麼是 Spring Cloud Bus?我們需要它嗎?
  • 8. 什麼是 Netflix Feign?它的優點是什麼?

5.3 Dubbo面試題彙總

  • 1. Dubbo 支援哪些協議,每種協議的應用場景,優缺點?
  • 2. Dubbo 超時時間怎樣設定?
  • 3. Dubbo 有些哪些註冊中心?
  • 4. Dubbo 叢集的負載均衡有哪些策略
  • 5. Dubbo 是什麼?
  • 6. Dubbo 的主要應用場景?
  • 7. Dubbo 的核心功能?
  • 8. Dubbo 的核心元件?
  • 9. Dubbo 服務註冊與發現的流程?
  • 10. Dubbo 的架構設計?
  • 11. Dubbo 的服務呼叫流程?
  • 12. Dubbo 支援哪些協議,每種協議的應用場景,優缺點?
  • 13. Dubbo 的註冊中心叢集掛掉,釋出者和訂閱者之間還能通訊麼?
  • 14. Dubbo 與 Spring 的關係?
  • 15. Dubbo 使用的是什麼通訊框架?
  • 16. Dubbo 叢集提供了哪些負載均衡策略?
  • 17. Dubbo 的叢集容錯方案有哪些?
  • 18. Dubbo 和 Spring Cloud 的區別?
  • 19. Dubbo 在安全機制方面是如何解決?
  • 20. Dubbo 中 中 zookeeper 做註冊中心,如果註冊中心叢集都掛掉,釋出者和訂閱者之間還能通訊麼?
  • 21. dubbo 服務負載均衡策略?
  • 22. Dubbo 在安全機制方面是如何解決的?
  • 23. dubbo 連線註冊中心和直連的區別?
  • 24. dubbo 服務叢集配置(叢集容錯模式)?
  • 25. dubbo 通訊協議 dubbo 協議為什麼要消費者比提供者個數多?
  • 26. dubbo 通訊協議 dubbo 協議為什麼不能傳大包?
  • 27. dubbo 通訊協議 dubbo 協議適用範圍和適用場景?

第六部分:其他:併發程式設計+設計模式+資料結構與演算法+網路

 

6.1 併發程式設計面試題彙總

  • 1. Java中守護執行緒和本地執行緒區別
  • 2. 執行緒與程式的區別
  • 3. 什麼是多執行緒中的上下文切換
  • 4. 死鎖與活鎖的區別,死鎖與飢餓的區別
  • 5. Java中用到的執行緒排程演算法是什麼
  • 6. 什麼是執行緒組,為什麼在Java中不推薦使用
  • 7. 為什麼使用Executor框架
  • 8. 在Java中Executor和Executors的區別
  • 9. 什麼是原子操作,在Java Concurrency API中有哪些原子類(atomic classes)
  • 10. Java Concurrency API中的Lock介面(Lock interface)是什麼,對比同步它有什麼優勢
  • 11. 什麼是Executors框架
  • 12. 什麼是阻塞佇列,阻塞佇列的實現原理是什麼,如何使用阻塞佇列來實現生產者
  • 13. 什麼是Callable和Future
  • 14. 什麼是FutureTask,使用ExecutorService啟動任務
  • 15. 什麼是併發容器的實現
  • 16. 多執行緒同步和互斥有幾種實現方法,都是什麼
  • 17. 什麼是競爭條件?你怎樣發現和解決競爭
  • 18. 如何使用thread dump,如何分析Thread dump
  • 19. 為什麼我們呼叫start()方法時會執行run()方法,為什麼我們不能直接呼叫run()方法
  • 20. Java中你怎樣喚醒一個阻塞的執行緒
  • 21. 在Java中CycliBarriar和CountdownLatch有什麼區別
  • 22. 什麼是不可變物件,它對寫併發應用有什麼幫助
  • 23. Java中用到的執行緒排程演算法是什麼
  • 24. 什麼是執行緒組,為什麼在Java中不推薦使用
  • 25. 為什麼使用Executor框架比使用應用建立和管理執行緒好
  • 26. Java中有幾種方法可以實現一個執行緒
  • 27. 如何停止一個正在執行的執行緒
  • 28. notify()和notifyAll()有什麼區別
  • 29. 什麼是Daemon執行緒,它有什麼意義
  • 30. Java如何實現多執行緒之間的通訊和協作
  • 31. 什麼是可重入鎖(ReentrantLock)
  • 32. 當一個執行緒進入某個物件的一個synchronized的例項方法後,其它執行緒是否可進入此物件的其它方法
  • 33. 樂觀鎖和悲觀鎖的理解及如何實現,有哪些實現方式
  • 34. SynchronizedMap和ConcurrentHashMap有什麼區別
  • 35. CopyOnWriteArrayList可以用於什麼應用場景
  • 36. 什麼叫執行緒安全,servlet是執行緒安全嗎
  • 37. volatile有什麼用,能否用一句話說明下volatile的應用場景
  • 38. 為什麼程式碼會重排序
  • 39. 在java中wait和sleep方法的不同
  • 40. 一個執行緒執行時發生異常會怎樣
  • 41. 如何在兩個執行緒間共享資料
  • 42. Java中notify 和 notifyAll有什麼區別
  • 43. 為什麼wait, notify 和 notifyAll這些方法不在thread類裡面
  • 44. 什麼是ThreadLocal變數
  • 45. Java中interrupted 和 isInterrupted方法的區別
  • 46. 為什麼wait和notify方法要在同步塊中呼叫
  • 47. 為什麼你應該在迴圈中檢查等待條件
  • 48. Java中的同步集合與併發集合有什麼區別
  • 49. 什麼是執行緒池,為什麼要使用它
  • 50. 怎麼檢測一個執行緒是否擁有鎖
  • 51. 你如何在Java中獲取執行緒堆疊
  • 52. JVM中哪個引數是用來控制執行緒的棧堆疊小的
  • 53. Thread類中的yield方法有什麼作用
  • 54. Java中ConcurrentHashMap的併發度是什麼
  • 55. Java中Semaphore是什麼
  • 56. Java執行緒池中submit() 和 execute()方法有什麼區別
  • 57. 什麼是阻塞式方法
  • 58. Java中的ReadWriteLock是什麼、
  • 59. volatile 變數和 atomic 變數有什麼不同
  • 60. 可以直接呼叫Thread類的run ()方法麼
  • 61. 如何讓正在執行的執行緒暫停一段時間
  • 62. 你對執行緒優先順序的理解是什麼
  • 63. 什麼是執行緒排程器(Thread Scheduler)和時間分片(Time Slicing )
  • 64. 你如何確保main()方法所在的執行緒是Java 程式最後結束的執行緒
  • 65. 執行緒之間是如何通訊的
  • 66. 為什麼執行緒通訊的方法wait(), notify()和notifyAll()被定義在Object 類裡
  • 67. 為什麼wait(), notify()和notifyAll ()必須在同步方法或者同步塊中被呼叫
  • 68. 為什麼Thread類的sleep()和yield ()方法是靜態的
  • 69. 如何確保執行緒安全
  • 70. 同步方法和同步塊,哪個是更好的選擇
  • 71. 如何建立守護執行緒
  • 72. 什麼是Java Timer 類,如何建立一個有特定時間間隔的任務

6.2 23種設計模式知識要點彙總

  • 1.單例模式(Singleton Pattern)
  • 2.工廠模式
  • 3.抽象工廠模式(Abstract Factory Pattern)
  • 4.模板方法模式(Template Method Pattern)
  • 5.建造者模式(Builder Pattern)
  • 6.代理模式(Proxy Pattern)
  • 7.原型模式(Prototype Pattern)
  • 8.中介者模式
  • 9.命令模式
  • 10.責任鏈模式
  • 11.裝飾模式(Decorator Pattern)
  • 12.策略模式(Strategy Pattern)
  • 13.介面卡模式(Adapter Pattern)
  • 14.迭代器模式(Iterator Pattern)
  • 15.組合模式((Composite Pattern))
  • 16.觀察者模式(Observer Pattern)
  • 17.門面模式(Facade Pattern)
  • 18.備忘錄模式(Memento Pattern)
  • 19.訪問者模式(Visitor Pattern)
  • 20.狀態模式(複雜)
  • 21.直譯器模式(Interpreter Pattern)(少用)
  • 22.享元模式(Flyweight Pattern)
  • 23.橋樑模式(Bridge Pattern)

 

6.3 資料結構與演算法面試題彙總

  • 1. 設計一個有getMin功能的棧
  • 2. 由兩個棧組成的佇列
  • 3. 如何僅用遞迴函式和棧操作逆序一個棧
  • 4. 貓狗佇列
  • 5. 用一個棧實現另一個棧的排序
  • 6. 用棧來求解漢諾塔問題
  • 7. 生成視窗最大值陣列
  • 8. 構造陣列的MaxTree
  • 9. 求最大子矩陣的大小
  • 10. 最大值減去最小值小於或等於num的子陣列數量
  • 11. 列印兩個有序連結串列的公共部分
  • 12. 在單連結串列和雙連結串列中刪除倒數第K 個節點
  • 13. 刪除連結串列的中間節點和a/b 處的節點
  • 14. 反轉單向和雙向連結串列
  • 15. 反轉部分單向連結串列
  • 16. 環形單連結串列的約瑟夫問題
  • 17. 判斷一個連結串列是否為迴文結構
  • 18. 將單向連結串列按某值劃分成左邊小、中間相等、右邊大的形式
  • 19. 複製含有隨機指標節點的連結串列
  • 20. 兩個單連結串列生成相加連結串列
  • 21. 兩個單連結串列相交的一系列問題
  • 22. 將單連結串列的每K個節點之間逆序
  • 22. 刪除無序單連結串列中值重複出現的節點
  • 24. 在單連結串列中刪除指定值的節點
  • 25. 將搜尋二叉樹轉換成雙向連結串列
  • 26. 單連結串列的選擇排序
  • 27. 一種怪異的節點刪除方式
  • 28. 向有序的環形單連結串列中插入新節點
  • 29. 合併兩個有序的單連結串列
  • 30. 按照左右半區的方式重新組合單連結串列
  • 31. 分別用遞迴和非遞迴方式實現二叉樹先序、中序和後序遍歷
  • 32. 列印二叉樹的邊界節點
  • 33. 如何較為直觀地列印二叉樹
  • 34. 二叉樹的序列化和反序列化
  • 35. 遍歷二叉樹的神級方法
  • 36. 在二叉樹中找到累加和為指定值的最長路徑長度
  • 37. 找到二叉樹中的最大搜尋二叉子樹
  • 38. 找到二叉樹中符合搜尋二叉樹條件的最大拓撲結構
  • 39. 二叉樹的按層列印與ZigZag列印
  • 40. 調整搜尋二叉樹中兩個錯誤的節點
  • 41. 判斷t1 樹是否包含t2 樹全部的拓撲結構
  • 42. 判斷t1 樹中是否有與t2 樹拓撲結構完全相同的子樹
  • 43. 判斷二叉樹是否為平衡二叉樹
  • 44. 根據後序陣列重建搜尋二叉樹
  • 45. 判斷一棵二叉樹是否為搜尋二叉樹和完全二叉樹
  • 46. 通過有序陣列生成平衡搜尋二叉樹
  • 47. 在二叉樹中找到一個節點的後繼節點
  • 48. 在二叉樹中找到兩個節點的最近公共祖先
  • 49. Tarjan演算法與並查集解決二叉樹節點間最近公共祖先的批量查詢問題
  • 50. 二叉樹節點間的最大距離問題
  • 先序、中序和後序陣列兩兩結合重構二叉樹
  • 通過先序和中序陣列生成後序陣列
  • 統計和生成所有不同的二叉樹
  • 統計完全二叉樹的節點數
  • 斐波那契系列問題的遞迴和動態規劃
  • 矩陣的最小路徑和
  • 換錢的最少貨幣數
  • 換錢的方法數
  • 最長遞增子序列
  • 漢諾塔問題
  • 最長公共子序列問題
  • 最長公共子串問題
  • 最小編輯代價
  • 字串的交錯組成
  • 龍與地下城遊戲問題
  • 數字字串轉換為字母組合的種數
  • 表示式得到期望結果的組成種數
  • 排成一條線的紙牌博弈問題
  • 跳躍遊戲
  • 陣列中的最長連續序列
  • N皇后問題
  • 判斷兩個字串是否互為變形詞
  • 字串中數字子串的求和
  • 去掉字串中連續出現k 個0 的子串
  • 判斷兩個字串是否互為旋轉詞
  • 將整數字符串轉成整數值
  • 替換字串中連續出現的指定字串
  • 字串的統計字串
  • 判斷字元陣列中是否所有的字元都只出現過一次
  • 在有序但含有空的陣列中查詢字串
  • 字串的調整與替換
  • 翻轉字串
  • 陣列中兩個字串的最小距離
  • 新增最少字元使字串整體都是迴文字串
  • 括號字串的有效性和最長有效長度
  • 公式字串求值
  • 0 左邊必有1 的二進位制字串數量
  • 拼接所有字串產生字典順序最小的大寫字串
  • 找到字串的最長無重複字元子串
  • 找到被指的新型別字元
  • 最小包含子串的長度
  • 迴文最少分割數
  • 字串匹配問題
  • 字典樹(字首樹)的實現
  • 認識布隆過濾器
  • 只用2 GB 記憶體在20 億個整數中找到出現次數最多的數 .
  • 40 億個非負整數中找到沒出現的數
  • 找到100 億個URL 中重複的URL 以及搜尋詞彙的top K 問題
  • 40 億個非負整數中找到出現兩次的數和所有數的中位數
  • 一致性雜湊演算法的基本原理
  • 不用額外變數交換兩個整數的值
  • 不用任何比較判斷找出兩個數中較大的數
  • 只用位運算不用算術運算實現整數的加減乘除運算
  • 整數的二進位制表達中有多少個1
  • 在其他數都出現偶數次的陣列中找到出現奇數次的數
  • 在其他數都出現k 次的陣列中找到只出現一次的數
  • 轉圈列印矩陣
  • 將正方形矩陣順時針轉動90 °
  • 找到無序陣列中最小的k 個數
  • 需要排序的最短子陣列長度
  • 在陣列中找到出現次數大於N/K 的數
  • 在行列都排好序的矩陣中找數
  • 最長的可整合子陣列的長度
  • 不重複列印排序陣列中相加和為給定值的所有二元組和三元組
  • 未排序正數陣列中累加和為給定值的最長子陣列長度
  • 未排序陣列中累加和為給定值的最長子陣列系列問題
  • 未排序陣列中累加和小於或等於給定值的最長子陣列長度
  • 計算陣列的小和
  • 自然數陣列的排序
  • 奇數下標都是奇數或者偶數下標都是偶數
  • 子陣列的最大累加和問題
  • 子矩陣的最大累加和問題
  • 在陣列中找到一個區域性最小的位置
  • 陣列中子陣列的最大累乘積
  • 列印N 個陣列整體最大的Top K
  • 邊界都是1 的最大正方形大小
  • 不包含本位置值的累乘陣列
  • 陣列的partition 調整
  • 求最短通路值
  • 陣列中未出現的最小正整數
  • 陣列排序之後相鄰數的最大差值
  • 從5 隨機到7 隨機及其擴充套件
  • 一行程式碼求兩個數的最大公約數
  • 有關階乘的兩個問題
  • 判斷一個點是否在矩形內部
  • 判斷一個點是否在三角形內部
  • 摺紙問題
  • 蓄水池演算法
  • 設計有setAll功能的雜湊表
  • 最大的leftMax與rightMax之差的絕對值
  • 設計可以變更的快取結構
  • 設計RandomPool結構
  • 調整[0 ,x)區間上的數出現的概率
  • 路徑陣列變為統計陣列
  • 正數陣列的最小不可組成和
  • 一種字串和數字的對應關係
  • 1 到n 中1 出現的次數
  • 從N 個數中等概率列印M 個數
  • 判斷一個數是否是迴文數
  • 在有序旋轉陣列中找到最小值
  • 在有序旋轉陣列中找到一個數
  • 數字的英文表達和中文表達
  • 分糖果問題
  • 一種訊息接收並列印的結構設計
  • 設計一個沒有擴容負擔的堆結構
  • 隨時找到資料流的中位數
  • 在兩個長度相等的排序陣列中找到上中位數
  • 在兩個排序陣列中找到第K 小的數
  • 兩個有序陣列間相加和的TOP K 問題
  • 出現次數的TOP K 問題
  • Manacher演算法
  • KMP 演算法
  • 丟棋子問題
  • 畫匠問題
  • 郵局選址問題

 

6.4 網路面試題彙總

  • 1. 三次握手?
  • 2. 四次揮手?
  • 3. 第 3 次握手失敗會怎麼辦?
  • 4. 為什麼 TCP 連結需要三次握手,兩次不可以麼,為什麼?
  • 5. 為什麼連線的時候是三次握手,關閉的時候卻是四次握手?
  • 6. 擁塞處理?
  • 7. ARQ 協議
  • 8. TCP 和 UDP 區別?
  • 9. HTTPS 的優點與缺點?
  • 10. HTTP 是不儲存狀態的協議,如何儲存使用者狀態?
  • 11. socket?
  • 12. Session 與 Cookie 的對比?
  • 13. 從輸入網址到獲得頁面的過程?
  • 14. URI 和 URL 的區別是什麼?
  • 15. 狀態碼

 

[Java一線大廠高崗面試題解析合集],所有的題目已經全部奉上,包括:Java基礎、中級、高階、Spring、SpringMVC、MyBatis、JVM、MySQL、Tomcat、ZK、Nginx、Redis、MongoDB、Memcached、MQ、kafka、SpringBoot、SpringCloud、Dubbo、併發程式設計、設計模式、資料結構與演算法、網路等全部的Java面試知識點

完整的答案解析+題目的PDF文件皆可免費分享給有需要的你

需要獲取得話麻煩一鍵三連之後看下圖小助理的微信:(13210158912)新增即可免費獲取到哦

相關文章