一、基本
1.hashmap:
1.1 轉紅黑樹條件:
a.陣列長度大于等于64(默認16,要經過2次擴容--當達到16*默認擴容因子0.75=12就擴容)
b.鏈表長度大于8
1.2 hashmap先計算hash值,再用hash值計算下標,
2.sleep與await:
1.1 sleep是執行緒方法,await是object方法
1.2 sleep不會釋放鎖,而await會
1.3 sleep不依賴于同步器synchronize,而await要
1.4 sleep不需要被喚醒,而await要
3.hashtable與hashmap:
1.1 前者執行緒安全,而后者不是
1.2 前者不可以把null作為key,而后者可以,并放在第一個節點上
1.3 兩者擴容因子默認都是0.75;前者初始容量為11,擴容是當前容量2+1;后者初始容量是16,擴容是當前容量2
4.cookie與session的區別:
前者cookie:
存放在客戶端瀏覽器中;
大小受限制,單個不超過4K,一般1個站點最多保存20個;
String型別;
不太安全(可以加密)
后者sessiono:
存放在服務器中;
大小一般不受限制;
Key-Value(Object型別);
安全性更高;
二、JVM
4.用戶執行緒與記憶體執行緒:
1.1 多對一:不需要切換,執行緒創建、調度、同步非常快;但是如果其中一個用戶執行緒阻塞會造成其他執行緒無法執行,且無法像內核執行緒一樣實作較完整的調度、優先級;
1.2 一對一:java的jvm幾乎把所有對執行緒的操作都交給了系統內核操作,執行緒真正啟動順序不一定是按我們啟動的順序,會引起用戶態和內核態的頻繁切換;如果系統出現大量執行緒,回家降低系統性能,
5.運行時資料區:

6.記憶體回收:

7.記憶體溢位:
1.1 堆疊溢位

1.2 堆溢位
》
》第8行設定會在堆溢位會匯出Damping日志
1.3 方法區溢位
1.4 本機直接記憶體溢位
8.記憶體泄漏:
1.1 不使用的記憶體,卻沒有被釋放;
1.2 每一次請求進來或者每一次操作處理都分配了記憶體,卻有部分不能回收(或未釋放),隨著請求越來越多,記憶體泄漏就會越來越嚴重,必然造成記憶體溢位,
1.3 記憶體泄漏一般是資源管理問題或者程式bug,記憶體溢位則是記憶體空間不足和記憶體泄漏的最終結果,
9.hotspot物件頭包含哪些部分:

10.根據類分析物件的記憶體占用:

11.jvm啟動引數:在哪里配?

12.堆空間最大值設定:
13.G1垃圾收集器特點:
1.空間整合:哪塊垃圾最多優先清理

2.多執行緒+并發+可預測停頓

14.排查OOM的方法:



14.jvm的相關命令工具:








15.java8默認垃圾收集器:

16.并行垃圾收集器:

17.swt:

安全點:方法呼叫、回圈跳轉、例外跳轉;設定標志位,并不斷輪詢,主動停止,



17.cpu使用率飆升,怎么排查?
先通過top命令找到cpu使用率高的執行緒;top -p 行程號;該界面輸入H查找最高cpu的執行緒;執行jstack 行程號做dump輸出執行緒資訊; 同時根據執行緒的16進制找到對應的堆資訊,然后再找出對應的代碼



6、最后根據執行緒資訊定位到具體代碼
18.垃圾回收器的三色標記:




19.類加載、類加載器:


三、訊息中間件
1.為什么用rocketmq:


3.各種訊息列隊:







4.mq的訊息重復:


5.mq的訊息重復:



4.解決MQ重復訊息:




6.roketmq性能優化:






四、快取
1.Redis概念:
Nosql,C撰寫,包含多種資料結構(字串、串列、集合、散串列、有序集合),支持網路,基于記憶體還能持久化性能高效每秒可以處理超過10萬次讀寫操作,遵守BSD協議,支持分布式易拓展、支持多種語言的k-v存盤資料庫,
2.Redis資料型別:










2.Redis與Memcached區別:

3.Redis的應用場景:


4.Redis為什么速度:

5.為什么用Redis而不用map/guava做快取:

6.Redis的持久化機制:


7.如何保持快取與資料庫雙寫時一致:



8.快取穿透:

五、并發編程
1.執行緒與行程的區別:

2.多執行緒中的背景關系切換:
3.java記憶體模型:

4.原子操作,JUC中原子操作類有哪些:

5.CAS操作及缺點:

6.java中的volatile變數作用:

7.volatile和atomic變數區別:

8.lock介面與synchronized區別:

9.樂觀鎖和悲觀鎖的理解及實作:

10.死鎖:

11.callable及future:

13.futureTask的底層原理:

14.阻塞佇列及實作原理:

15.不可變物件對并發應用的幫助

16.生產消費者模型作用:

17.copyOnWriteArrayList應用場景:

18.java單例:

19.雙重檢查鎖定DCL的單例:

20.AQS:

wait、notify、notifyAll為什么不在thread類中:

六、分布式
1.分布式冪等性介面設計:

2.分布式session方案:


3.分布式事務:

4.ZAB協議:

5.Zookeeper和Redis區別:

6.Zookeepr節點宕機處理:

7.Zookeeper四種型別資料節點:

8.Dubbo和cloud區別:

9.Dubbo協議:

七、資料庫
1.mysql存盤引擎:

2.innodb與myisam區別:

3.表設計欄位選擇:

4.mysql的varchar(M)最多存盤資料:

5.事務基本特性:

6.事務并發引發問題:

7.mysql索引:

8.三星索引:

9.innodb一顆b+樹存放可以存放多少行資料:

10.如何提高insert性能:

11.全域鎖、共享鎖、排他鎖:

12.mysql死鎖:
以上主要參考:https://www.bilibili.com/video/BV1vu41197Np?p=4&spm_id_from=pageDri
隨心所往,看見未來,Follow your heart,see night!
歡迎點贊、關注、留言,一起學習、交流!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/501786.html
標籤:其他
上一篇:SpringCloud整合WebSocket實作用戶監控
下一篇:日志的搭建
