1.自我介紹
2.技術棧都有哪些
3.mysql的數據索引結構
4.B+tree與Btree的區別是什麼
5.B+tree使用的指針鏈表是單向還是雙向? https://blog.csdn.net/hao65103940/article/details/89032538
6.b+樹跟b樹有啥區別
-
非葉子節點只存儲鍵值信息。
-
所有葉子節點之間都有一個鏈指針。
-
數據記錄都存放在葉子節點中。
7.數據庫分表策略是怎麼做的?
8.Mysql默認的事務隔離級別是什麼,有什麼缺點
可重複讀(Repeatable read),
(1)這是MySQL的默認事務隔離級別
(2)它確保同一事務的多個實例在併發讀取數據時,會看到同樣的數據行
(3)此級別可能出現的問題——幻讀(Phantom Read):當用戶讀取某一範圍的數據行時,另一個事務又在該範圍內插入了新行,當用戶再讀取該範圍的數據行時,會發現有新的“幻影” 行
(4)InnoDB和Falcon存儲引擎通過多版本併發控制(MVCC,Multiversion Concurrency Control)機制解決了該問題
9.什麼是幻讀
幻讀指的是一個事務在進行一次查詢之後發現某個記錄不存在,然後會根據這個結果進行下一步操作,此時如果另一個事務成功插入了該記錄,那麼對於第一個事務而言,其進行下一步操作(比如插入該記錄)的時候很可能會報錯。從事務使用的角度來看,在檢查一條記錄不存在之後,其進行插入應該完全沒問題的,但是這裏卻拋出主鍵衝突的異常。
10.怎麼解決幻讀
a.隔離升級-串行化:
-
事務在讀操作時,先加表級別的共享鎖,直到事務結束才釋放
-
事務在寫操作時,先加表級別的排它鎖,直到事務結束才釋放
串行化鎖定了整張表,幻讀不存在的!!!
b.多版本併發MVCC:
InnoDB 的 MVCC, 是 通過 在 每 行 記錄 後面 保存 兩個 隱藏 的 列 來 實現 的。 這 兩個 列, 一個 保存 了 行的 創建 時間, 一個 保存 行的 過期 時間( 或 刪除 時間)。 當然 存儲 的 並不是 實際 的 時間 值, 而是 系統 版 本號( system version number)。 每 開始 一個 新的 事務, 系統 版本 號 都會 自動 遞增。 事務 開始時 刻 的 系統 版 本號 會 作爲 事務 的 版 本號, 用來 和 查詢 到 的 每 行 記錄 的 版本 號 進行 比較。
11.分佈式鎖有了解嗎
12.分佈式鎖的加鎖底層命令以及解鎖的命令
13.redis解鎖時可以直接刪除key麼?
14.redis的持久化有幾種方案以及特性
15.spring的IOC和AOP的實現圓臉
16.動態代理有幾種實現方式
17.JDK與Cglib的區別
18.cglib可以代理所有的方法麼
19.cglib怎麼實現的代理
20.IOC的循環依賴是怎麼解決的
21.解決循環依賴爲什麼需要用到三級緩存
22.線程池有用到過麼?怎麼創建的線程池
23.線程池的幾個主要參數
24.線程池從初始狀態一直添加線程,線程池是怎麼處理
25.拒絕策略都有哪些?
26.空閒線程的回收機制(多一個知識點就是,核心線程也是有配置是否可以回收的)
27.有邊界的線程池,如何做生產者、消費者模式
28.Sync自帶的鎖,工作中是否有用到
29.Volatile解決了什麼問題,工作用在哪裏
30.sync一般加載哪裏?有什麼區別
類對象鎖、實例對象所
31.sync鎖的升級膨脹過程
32.有一個轉盤,分1、2、3等獎,中獎概率分別爲10%、20%、70%,怎麼實現
分10塊,映射1等獎(1)2等獎(2,3)3等獎(4,5,6,7,8,9,10)。求10中間隨機數
39.視頻回放功能設計
39. 做個朋友圈,需要注意哪些點
40. 有看書嗎?看過哪些書