面完阿里、美團後,我總結出大廠常問面試真題及解析:java集合+spring+設計模式+並行程式設計+MyBatis 等。。。。

2020-09-24 11:01:49

不知道最近面試是否順利,是否會經常問到一些自己不熟悉的問題,不知道怎麼去回答這些問題,今天筆者給大家整理了2020年大廠經常問到了的一些面試真題及解析,內容點包含有java集合,jvm,並行程式設計,spring,mybatis,springMVC,微服務,Dubbo,netty,網路,zookeeper,kafka,rabbitMQ,readis快取,資料庫,設計模式 等一線大廠網際網路大廠常問到的面試真題,。

Java 集合面試真題22道:

  1. ArrayList 和 Vector 的區別。
  2. 說說 ArrayList,Vector, LinkedList 的儲存效能和特性。
  3. 快速失敗 (fail-fast) 和安全失敗 (fail-safe) 的區別是什麼?
  4. hashmap 的資料結構。
  5. HashMap 的工作原理是什麼?
  6. Hashmap 什麼時候進行擴容呢?
  7. List、Map、Set 三個介面,存取元素時,各有什麼特點?
  8. Set 裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢?是用 == 還是 equals()? 它們有何區別?
  9. 兩個物件值相同 (x.equals(y) == true),但卻可有不同的 hashcode,這句話對不對?
  10. heap 和 stack 有什麼區別。
  11. Java 集合類框架的基本介面有哪些?
  12. HashSet 和 TreeSet 有什麼區別?
  13. HashSet 的底層實現是什麼?
  14. LinkedHashMap 的實現原理?
  15. 為什麼集合類沒有實現 Cloneable 和 Serializable 介面?
  16. 什麼是迭代器 (Iterator)?
  17. Iterator 和 ListIterator 的區別是什麼?
  18. 陣列 (Array) 和列表 (ArrayList) 有什麼區別?什麼時候應該使用 Array 而不是 ArrayList?
  19. Java 集合類框架的最佳實踐有哪些?
  20. Set 裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢?是用 == 還是 equals()?它們有何區別?
  21. Comparable 和 Comparator 介面是幹什麼的?列出它們的區別。
  22. Collection 和 Collections 的區別。

 

JVM面試真題21道:

  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 和Major GC。
  18. JVM 的永久代中會發生垃圾回收麼?
  19. Java 中垃圾收集的方法有哪些?
  20. 什麼是類載入器,類載入器有哪些?
  21. 類載入器雙親委派模型機制?

 

並行程式設計面試真題38道:

Synchronized 相關問題:

  • Synchronized 用過嗎,其原理是什麼?
  • 你剛才提到獲取物件的鎖,這個「鎖」到底是什麼?如何確定物件的鎖?
  • 什麼是可重入性,為什麼說 Synchronized 是可重入鎖?
  • JVM 對 Java 的原生鎖做了哪些優化?
  • 為什麼說 Synchronized 是非公平鎖?
  • 什麼是鎖消除和鎖粗化?
  • 為什麼說 Synchronized 是一個悲觀鎖?樂觀鎖的實現原理又是什麼?什麼是 CAS,它有什麼特性?
  • 樂觀鎖一定就是好的嗎?

可重入鎖 ReentrantLock 及其他顯式鎖相關問題:

  • 跟 Synchronized 相比,可重入鎖 ReentrantLock 其實現原理有什麼不同?
  • 那麼請談談 AQS 框架是怎麼回事兒?
  • 請儘可能詳盡地對比下 Synchronized 和 ReentrantLock 的異同。
  • ReentrantLock 是如何實現可重入性的?
  • 除了 ReetrantLock,你還接觸過 JUC 中的哪些並行工具?
  • 請談談 ReadWriteLock 和 StampedLock。
  • 如何讓 Java 的執行緒彼此同步?你瞭解過哪些同步器?請分別介紹下。
  • CyclicBarrier 和 CountDownLatch 看起來很相似,請對比下呢?

 

Java 執行緒池相關問題:

  • Java 中的執行緒池是如何實現的?
  • 建立執行緒池的幾個核心構造引數?
  • 執行緒池中的執行緒是怎麼建立的?是一開始就隨著執行緒池的啟動建立好的嗎?
  • 既然提到可以通過設定不同引數建立出不同的執行緒池,那麼 Java 中預設實現好的執行緒池又有哪些呢?請比較它們的異同。
  • 如何在 Java 執行緒池中提交執行緒?

Java 記憶體模型相關問題:

  • 什麼是 Java 的記憶體模型,Java 中各個執行緒是怎麼彼此看到對方的變數的?
  • 請談談 volatile 有什麼特點,為什麼它能保證變數對所有執行緒的可見性?
  • 既然 volatile 能夠保證執行緒間的變數可見性,是不是就意味著基於volatile 變數的運算就是並行安全的?
  • 請對比下 volatile 對比 Synchronized 的異同。
  • 請談談 ThreadLocal 是怎麼解決並行安全的?
  • 很多人都說要慎用 ThreadLocal,談談你的理解,使用 ThreadLocal 需要注意些什麼?

2020年最全大廠面試真題解析:java集合+spring+併發程式設計+MyBatis

 

 

Spring面試真題25道:

  • 什麼是 Spring 框架?Spring 框架有哪些主要模組?
  • 使用 Spring 框架能帶來哪些好處?
  • 什麼是控制反轉(IOC)?什麼是依賴注入?
  • 請解釋下 Spring 框架中的 IoC?
  • BeanFactory 和 ApplicationContext 有什麼區別?
  • Spring 有幾種設定方式?
  • 如何用基於 XML 設定的方式設定 Spring?
  • 如何用基於 Java 設定的方式設定 Spring?
  • 怎樣用註解的方式設定 Spring?
  • 請解釋 Spring Bean 的生命週期?
  • Spring Bean 的作用域之間有什麼區別?
  • 什麼是 Spring inner beans?
  • Spring 框架中的單例 Beans 是執行緒安全的麼?
  • 請舉例說明如何在 Spring 中注入一個 Java Collection?
  • 如何向 Spring Bean 中注入一個 Java.util.Properties?
  • 請解釋 Spring Bean 的自動裝配?
  • 請解釋自動裝配模式的區別?
  • 如何開啟基於註解的自動裝配?
  • 請舉例解釋@Required 註解?
  • 請舉例解釋@Autowired 註解?
  • 構造方法注入和設值注入有什麼區別?
  • Spring 框架中有哪些不同型別的事件?
  • FileSystemResource 和 ClassPathResource 有何區別?
  • Spring 框架中都用到了哪些設計模式?

 

MyBatis面試真題24道:

  • 什麼是 Mybatis?
  • Mybaits 的優點:
  • MyBatis 框架的缺點:
  • MyBatis 框架適用場合:
  • MyBatis 與 Hibernate 有哪些不同?
  • #{}和${}的區別是什麼?
  • 當實體類中的屬性名和表中的欄位名不一樣 ,怎麼辦 ?
  • 模糊查詢 like 語句該怎麼寫?
  • 通常一個 Xml 對映檔案,都會寫一個 Dao 介面與之對應,請問,這個 Dao 介面的工作原理是什麼?Dao 介面裡的方法,引數不同時,方法能過載嗎?
  • Mybatis 是如何進行分頁的?分頁外掛的原理是什麼?
  • Mybatis 是如何將 sql 執行結果封裝為目標物件並返回的?都有哪些對映形式?
  • 如何執行批次插入?
  • 如何獲取自動生成的(主)鍵值?
  • Mybatis 動態 sql 有什麼用?執行原理?有哪些動態 sql?
  • Xml 對映檔案中,除了常見的 select|insert|updae|delete 標籤之外,還有哪些標籤?
  •  
  • Mybatis 的 Xml 對映檔案中,不同的 Xml 對映檔案,id 是否可以重複?
  • 為什麼說 Mybatis 是半自動 ORM 對映工具?它與全自動的區別在哪裡?
  • MyBatis 實現一對一有幾種方式?具體怎麼操作的?
  • MyBatis 實現一對多有幾種方式,怎麼操作的?
  • Mybatis 是否支援延遲載入?如果支援,它的實現原理是什麼?
  • Mybatis 的一級、二級快取:
  • 什麼是 MyBatis 的介面繫結?有哪些實現方式?
  • 使用 MyBatis 的 mapper 介面呼叫時有哪些要求?
  • 簡述 Mybatis 的外掛執行原理,以及如何編寫一個外掛。

 

 

後面還有關於 springMVC,微服務,Dubbo,netty,網路,zookeeper,kafka,rabbitMQ,readis快取,資料庫,設計模式,就不在這裡一一給大家展示了,

需要這份PDF面試資料的讀者朋友可以幫忙點贊後,私信【面試】就可以了(一定要記得關注我,不然沒辦法回覆陌生人私信)。希望大家都能夠拿到一個心怡的offer。