記一次狂懟多線程的面經

多線程

  • 有什麼方法能夠監控線程的狀態
  • synchronized 的做用
  • synchronized 底層是怎麼實現的
  • synchronized 有哪幾個使用方式
  • 修飾方法和修飾代碼塊有什麼不一樣
  • synchronized 爲何要添加對象鎖,即 synchronized () 中,爲何要有這個括號裏面的內容
  • 說下併發包和 synchronized 的區別
  • 說下 Java 內存模型是什麼
  • volatile 做用是什麼
  • volatile 底層是怎麼實現的,從指令層面分析
  • 爲何不用 volatile 修飾每一個變量呢
  • ThreadLocal 瞭解嗎
  • CountDownLatch 瞭解嗎
  • 列舉有哪些線程池
  • 只有一個線程的線程池有什麼做用,是來搞笑的嗎
  • ThreadPoolExecutor 類的構造參數有哪些
  • 若是程序一直在添加任務,線程池的處理過程是怎樣的,結合構造參數來解釋

jvm

  • 有哪些 gc 算法
  • 什麼對象剛建立的時候直接進入老年代,非字符串對象
  • 什麼對象能夠進入老年代
  • 新生代的 s2 區有什麼做用
  • 什麼狀況下會 OOM
  • 說下一個對象從建立到銷燬的整個過程

redis

  • 排行榜怎麼設計
  • 有序集合增長元素的時間複雜度是多少
  • AOF 和 RDB 的區別
  • redis 有大量任務須要消費,如今有兩種消費方案,有什麼不一樣?
    • 由一個開了 30 個線程的線程池不斷消費
    • 3 個線程不斷獲取 redis 任務,並將任務傳給一個開了 30 個線程的線程池處理

其餘

  • hashtable 和 ConcurrentHashMap 有什麼不一樣
  • ConcurrentHashMap 如何保證線程安全,1.7 和 1.8 都說下
  • NIO 和 BIO 的區別
  • NIO 的經典實現是怎樣的(這個問題我不太肯定,當時有點懵)

mysql

  • explain 做用
  • 通常看 explain 輸出信息的哪些內容
  • 表有 a、b、c 字段,其餘a、b獨立建個索引,則下面的 sql 通過 explain 後會輸出什麼信息,哪些字段會走索引,哪些不會 select * from table where a = xx and b = yy order by c;

場景題

  • 秒殺場景如何設計

PS:本文原創發佈於微信公衆號「不僅Java」,後臺回覆「電子書」,說不定有你想要的呢。mysql

相關文章
相關標籤/搜索