BAT九九八十一問,Redis、多線程、高併發、集合框架、數據庫、JVM一個都不放過!

先看問題...

第一彈:Redis

  1. 爲什麼要用 redis /爲什麼要用緩存(高性能、高併發)
  2. 爲什麼要用 redis 而不用 map/guava 做緩存?
  3. redis 常見數據結構以及使用場景分析(String、Hash、List、Set、Sorted Set)
  4. redis 內存淘汰機制(MySQL裏有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據?)
  5. redis 持久化機制(怎麼保證 redis 掛掉之後再重啓數據可以進行恢復)
  6. Redis 常見異常及解決方案(緩存穿透、緩存雪崩、緩存預熱、緩存降級)
  7. 分佈式環境下常見的應用場景(分佈式鎖、分佈式自增 ID)
  8. Redis 集羣模式(主從模式、哨兵模式、Cluster 集羣模式)
  9. 如何解決 Redis 的併發競爭 Key 問題
  10. 如何保證緩存與數據庫雙寫時的數據一致性?

第二彈:多線程/高併發

  1.  stop() 和 suspend() 方法爲何不推薦使用?
  2. sleep() 和 wait() 有什麼區別?
  3. 同步和異步有何異同,在什麼情況下分別使用他們?
  4. 當一個線程進入一個對象的一個 synchronized 方法後,其它線程是否可進入此對象的其它方法?
  5. 簡述 synchronized 和 java.util.concurrent.locks.Lock 的異同?
  6. 概括的解釋下線程的幾種可用狀態。
  7. 什麼是 ThreadLocal?
  8. run() 和 start() 區別。
  9. 什麼是線程餓死,什麼是活鎖?
  10. 請說出你所知道的線程同步的方法。
  11. 線程調度和線程控制。
  12. 多線程中的忙循環是什麼?
  13. volatile 變量是什麼?volatile 變量和 atomic 變量有什麼不同?
  14. volatile 類型變量提供什麼保證?能使得一個非原子操作變成原子操作嗎?

第三彈:集合框架

  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),但卻可有不同的 hash code,這句話對不對?
  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 的區別。

第四彈:數據庫

  1.  請簡潔描述 MySQL 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
  2. 在 MySQL 中 ENUM 的用法是什麼?
  3. CHAR 和 VARCHAR 的區別?
  4. 列的字符串類型可以是什麼?
  5. MySQL 中使用什麼存儲引擎?
  6. TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 數據類型上做什麼?
  7. 主鍵和候選鍵有什麼區別?
  8. MySQL 數據庫服務器性能分析的方法命令有哪些?
  9. LIKE 和 REGEXP 操作有什麼區別?
  10. BLOB 和 TEXT 有什麼區別?
  11. 數據庫的三範式?
  12. 什麼是通用 SQL 函數?
  13. MySQL 表中允許有多少個 TRIGGERS?

第五彈:JVM

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

倘若不看答案,上面的81問你能答對多少呢?

 

由於答案都是以截圖展示的,如果覺得圖片不方便或者清晰度不高的話,可以【點擊看答案】下載完整的原文檔!

看答案看答案...

第五彈:JVM答案

第四彈:數據庫答案

第三彈:集合框架答案

第二彈:多線程、高併發答案

第一彈:Redis答案

更多關於Java集合、JVM、多線程併發、spring原理、微服務、Netty 與RPC 、Kafka、日記、設計模式、Java算法、數據庫、Zookeeper、分佈式緩存、數據結構面試解析等等可以去這個Github鏈接地址:https://github.com/ThinkingHan/Java-note閱讀,Star一下吧,感謝支持~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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