快手社招 java 一二面
??面試公司:快手
??面試崗位: java 開發(fā)
??面試問題:
一面
- 自我介紹+項目
- 分層緩存架構(gòu)
- 數(shù)據(jù)如果只存在 redis 中可以嗎
- DB 中的寫壓力
- MQ 有消息積壓嗎
- DB 的 TPS
- 怎么分庫分表的
- 讀寫分離
- 如果你們的redis中要新增一個數(shù)據(jù),是怎么做的
- 怎么做的異步重試
- redis 中是什么形式來存的數(shù)據(jù)
- 如果突然有很多數(shù)據(jù)要寫進redis了,有什么措施
- 如果緩存了 5 頁數(shù)據(jù),這個時候新增加了一條,會發(fā)生什么
- 每臺實例上的本地緩存都要存儲所有的數(shù)據(jù)信息嗎
- 如果數(shù)據(jù)越來越多會對本地緩存造成什么影響
- 本地緩存淘汰策略
- 秒殺場景下單全流程
- 庫存回刷
- 有一筆訂單用戶取消了,這個時候 redis 成功了但是數(shù)據(jù)庫沒成功,會發(fā)生什么
- 如果你們在凌晨對賬同步的時候剛好碰上用戶下單呢
- 被攔截的用戶會看到什么報錯
- 具體加了什么鎖
- 分布式鎖的原理是什么
- 回刪完成后怎么解鎖
- 鎖的安全性怎么保證
- 為什么你們釋放鎖的時候需要用一個唯一的 id 做校驗
- threadLocal 怎么做到線程安全的
- threadLocalMap 和 HashMap 的區(qū)別
- ThreadLocal怎么避免內(nèi)存泄漏
- AtomicInteger 類,這個類是線程安全的嗎,原理是什么
- 線程池調(diào)度機制
- Synchronized 和 reentrantlock的區(qū)別
- select * from t where a = 100 and b > 100 and b <= 1000 and c = 10,給這個 sql 創(chuàng)建索引
- innodb 默認事務(wù)隔離級別
- 可重復讀和讀已提交的區(qū)別
- 算法題:有序鏈表去除重復元素 給出1→2→3→3→4→4→5,返回1→2→5
??面試體驗:面試節(jié)奏很和諧
二面:
- 項目+自我介紹
- 具體說一下緩存優(yōu)化和高并發(fā)下單
- redis 預占庫存,先預占還是先下單
- 如果預占成功但是下單失敗呢
- redis 慢查詢的優(yōu)化怎么做的
- 怎么判斷 redis 有無慢查詢
- MySQL的鎖
- 間隙鎖之間互斥嗎
- 索引
- 主鍵索引和非主鍵索引
- 索引失效
- 場景設(shè)計:有一個直播間打賞的 MQ,記錄某用戶在某直播間打賞了某主播,有多少打賞金額。實現(xiàn)一個直播間送禮金額榜單,需要展示 top100。要求:準時實時性;準確性;高并發(fā)
- 算法題:實現(xiàn)一個 LinkedList 雙向鏈表的數(shù)據(jù)結(jié)構(gòu),里面有 add 方法和 remove 方法
- 了解可靠消息原理嗎
- 不支持兩段式提交怎么實現(xiàn)事務(wù)消息
- 如何判斷消息需要重試
??面試體驗:非常難
#軟件開發(fā)筆面經(jīng)#