面經-Java

疯啦吧你發表於2024-12-01

Java

  1. 常用集合

    List,Set,Map

    ArrayList,LinkesList(雙向列表,適用於頻繁插入和刪除)

    HashSet,TreeSet(紅黑樹)

    hashmap,LinkesHashMap(加上雙向連結串列)

  2. hashmap和hashtable區別。

    map執行緒不安全(效率高,key可以為null),table執行緒安全(每個方法都有synchronized 關鍵字,)

  3. hashmap底層原理

    雜湊表,陣列加連結串列

    1.8之後轉換紅黑樹

  4. 執行緒安全的集合有哪些?

    hashMap,concurentHashMap,vector(與arrayList類似,動態增長),hashtable

  5. java物件導向三個特徵

    封裝,繼承,多型

  6. 多型如何實現

    方法過載,方法重寫,介面實現

  7. 什麼是多型

    在java中,多型是物件導向程式設計的一種重要特性,它允許不同的物件對同一個訊息做出不同的響應。

  8. 介面可以多實現嗎

    可以。

  9. 抽象類和介面

    介面多實現,介面無構造器,不存在方法的實現,預設修飾符public

  10. 執行緒池使用方法

    好處:降低資源消耗。提交響應速度(不需要等待執行緒建立)。提高執行緒可管理性。

    1)核心執行緒數(corePoolSize):當執行緒池的執行緒都忙碌時,再進來新任務時,由最小執行緒數擴容到核心執行緒數 。一般設定為cpu的核數

    2)最大執行緒數 (maximumPoolSize):當核心執行緒數滿了,當佇列也滿了,再來新任務,就會建立新非核心執行緒來執行這個新任務,直到執行緒數達到最大執行緒數。一般設定為cpu的核數*2

    3)存活時間(keepAliveTime):非核心執行緒 =(maximumPoolSize - corePoolSize ) ,非核心執行緒閒置下來不幹活最多存活時間。當非核心執行緒超過多長時間不執行任務,處於空閒狀態,執行緒池會將它回收,直到執行緒數量達到核心執行緒數。如果設定為0,就代表不回收

    4)存活時間單位

    5)執行緒池等待佇列(workQueue):維護著等待執行的Runnable物件。當執行當執行緒數= corePoolSize時,新的任務會被新增到workQueue中,如果workQueue也滿了則嘗試用非核心執行緒執行任務,等待佇列應該儘量用有界的。
    6)threadFactory
    建立一個新執行緒時使用的工廠,可以用來設定執行緒名、是否為daemon執行緒等等。
    7)handler
    corePoolSize、workQueue、maximumPoolSize都不可用的時候執行的飽和策略

  11. 執行緒通訊方式

    • 透過 volatile 關鍵字(volatile共享記憶體)
    • join()方法。
    • wait和notify
  12. 程序通訊

    共享記憶體,訊息佇列

  13. spring bean的生命週期

    例項化Bean --> Bean屬性填充 --> 初始化Bean -->銷燬Bean

  14. aop,IOC特性

    控制反轉,簡單點說,就是建立物件的控制權,被反轉到了Spring框架上。

    AOP主要一般應用於簽名驗籤、引數校驗、日誌記錄、事務控制、許可權控制、效能統計、異常處理等。

  15. post和get的區別

    GET是從伺服器上獲得資料;POST是向伺服器傳遞資料

    get透過url傳輸引數,post的引數在請求體中。

    post傳送長度更大

  16. 快取穿透

    客戶端請求資料在快取和資料庫中都不存在

  17. 快取擊穿

    熱點key問題,快取重建任務較長,不停建立

  18. 快取雪崩

    大量key同時失效,大量請求到資料庫

  19. redis的超時時間設定了多久?

    一般以秒為單位

    過期時間的設定原則:
    資料的生命週期(對於不經常變動的資料,超時時間會長一些)

    ​ 記憶體使用率(可以透過Redis的INFO命令獲取當前的記憶體使用情況,包括已使用記憶體和可用記憶體等資訊。)

    ​ 資料訪問頻率(可以透過Redis的MONITOR命令監控資料的訪問情況,從而瞭解資料的訪問頻率。)

  20. Springboot自動裝配

  21. Spring常用的快取(本地快取,外地快取)

  22. redis常用值的型別

  23. 除了redis快取的實現方式(本地快取)

  24. ES做什麼

  25. ES搜尋原理

  26. 使用rabbitmq的場景

  27. 如何測試他沒有重複消費

    • 傳送兩條完全一樣的訊息到同一訊息佇列中
    • 傳送兩條相同訊息到不同佇列中
  28. 如何測試他是否順序傳遞

    向不同的佇列中有順序的傳送資料,透過消費端的日誌判斷它是否順序消費

  29. 對資料結構的瞭解

  30. 排序演算法有哪些

  31. redis的瞭解,和應用場景

  32. 快取一致性

相關文章