Java
-
常用集合
List,Set,Map
ArrayList,LinkesList(雙向列表,適用於頻繁插入和刪除)
HashSet,TreeSet(紅黑樹)
hashmap,LinkesHashMap(加上雙向連結串列)
-
hashmap和hashtable區別。
map執行緒不安全(效率高,key可以為null),table執行緒安全(每個方法都有synchronized 關鍵字,)
-
hashmap底層原理
雜湊表,陣列加連結串列
1.8之後轉換紅黑樹
-
執行緒安全的集合有哪些?
hashMap,concurentHashMap,vector(與arrayList類似,動態增長),hashtable
-
java物件導向三個特徵
封裝,繼承,多型
-
多型如何實現
方法過載,方法重寫,介面實現
-
什麼是多型
在java中,多型是物件導向程式設計的一種重要特性,它允許不同的物件對同一個訊息做出不同的響應。
-
介面可以多實現嗎
可以。
-
抽象類和介面
介面多實現,介面無構造器,不存在方法的實現,預設修飾符public
-
執行緒池使用方法
好處:降低資源消耗。提交響應速度(不需要等待執行緒建立)。提高執行緒可管理性。
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都不可用的時候執行的飽和策略 -
執行緒通訊方式
- 透過 volatile 關鍵字(volatile共享記憶體)
- join()方法。
- wait和notify
-
程序通訊
共享記憶體,訊息佇列
-
spring bean的生命週期
例項化Bean --> Bean屬性填充 --> 初始化Bean -->銷燬Bean
-
aop,IOC特性
控制反轉,簡單點說,就是建立物件的控制權,被反轉到了Spring框架上。
AOP主要一般應用於簽名驗籤、引數校驗、日誌記錄、事務控制、許可權控制、效能統計、異常處理等。
-
post和get的區別
GET是從伺服器上獲得資料;POST是向伺服器傳遞資料
get透過url傳輸引數,post的引數在請求體中。
post傳送長度更大
-
快取穿透
客戶端請求資料在快取和資料庫中都不存在
-
快取擊穿
熱點key問題,快取重建任務較長,不停建立
-
快取雪崩
大量key同時失效,大量請求到資料庫
-
redis的超時時間設定了多久?
一般以秒為單位
過期時間的設定原則:
資料的生命週期(對於不經常變動的資料,超時時間會長一些) 記憶體使用率(可以透過Redis的INFO命令獲取當前的記憶體使用情況,包括已使用記憶體和可用記憶體等資訊。)
資料訪問頻率(可以透過Redis的MONITOR命令監控資料的訪問情況,從而瞭解資料的訪問頻率。)
-
Springboot自動裝配
-
Spring常用的快取(本地快取,外地快取)
-
redis常用值的型別
-
除了redis快取的實現方式(本地快取)
-
ES做什麼
-
ES搜尋原理
-
使用rabbitmq的場景
-
如何測試他沒有重複消費
- 傳送兩條完全一樣的訊息到同一訊息佇列中
- 傳送兩條相同訊息到不同佇列中
-
如何測試他是否順序傳遞
向不同的佇列中有順序的傳送資料,透過消費端的日誌判斷它是否順序消費
-
對資料結構的瞭解
-
排序演算法有哪些
-
redis的瞭解,和應用場景
-
快取一致性