高并發系統設計面試題
🔥🔥🔥 超高頻問題(幾乎必問)
- 讓你設計一個秒殺系統,你會考慮哪些問題?
- 如果你的業務量突然提升100倍QPS你會怎么做?
- 庫存扣減如何避免超賣和少賣?
- 訂單到期關閉如何實現
- 讓你設計一個訂單號生成服務,該怎么做?
- 如何設計一個購物車功能?
- 你是如何進行SQL調優的?
- Redis如果掛了,你怎么辦?
- 如何解決消息重復消費、重復下單等問題?
- 不用redis分布式鎖,如何防止用戶重復點擊?
🔥🔥 高頻問題
- 如何用Redis實現朋友圈點贊功能?
- Redis的zset實現排行榜,實現分數相同按照時間順序排序,怎么做?
- 如何實現"查找附近的人"功能? 🏷?IoT
- 消息隊列使用拉模式好還是推模式好?為什么?
- 如果讓你實現一個RPC框架,會考慮用哪些技術解決哪些問題?
- 一個訂單,在11:00超時關閉,但在11:00也支付成功了,怎么辦?
- 一個支付單,多個渠道同時支付成功了怎么辦?
- 如果讓你實現消息隊列,會考慮哪些問題?
- 不使用synchronized和Lock如何設計一個線程安全的單例?
- 索引失效的問題是如何排查的,有哪些種情況?
🔥🔥 高頻問題(續)
- 說一說多級緩存是如何應用的?
- 從B+樹的角度分析為什么單表2000萬要考慮分表?
- 線上接口如果響應很慢如何去排查定位問題呢?
- 怎么做數據對賬?
- MySQL千萬級大表如何做數據清理?
- 高并發的庫存系統,在數據庫扣減庫存,怎么實現?
- MySQL熱點數據更新會帶來哪些問題?
- 和外部機構交互如何防止被外部服務不可用而拖垮
- MySQL里有2000W數據,Redis中只存20W的數據,如何保證redis中的數據都是熱點數據?
- 用了一鎖二查三更新,為啥還出現了重復數據?
🔥 中頻問題
- 每天100w次登錄請求,4C8G機器如何做JVM調優?
- Kafka,單分區單消費者實例,如何提高吞吐量
- 40億個QQ號,限制1G內存,如何去重?
- 如果單表數據量大,只能考慮分庫分表嗎?
- InnoDB為什么不用跳表,Redis為什么不用B+樹?
- 為什么MySQL用B+樹,MongoDB用B樹?
- 一個接口3000QPS,接口RT為200MS,預估需要幾臺機器?
- 在100M內存下存儲一億個整數,其范圍在1到2億,如何快速判斷給定到一個整數數值是否存在?
- 數據庫邏輯刪除后,怎么做唯一性約束?
- 電商下單場景,如何設計一個數據一致性方案?
🔥 中頻問題(續)
- 如何實現緩存的預熱?
- 如何實現百萬級數據從Excel導入到數據庫?
- 如果需要跨庫join,該如何實現?
- 應用占用內存持續增長,但是堆內存、元空間都沒變化,可能是什么原因?
- 和其他公司做數據交互時,有什么需要注意的?
- 4C8G的機器,各項系統指標,什么范圍算是正常?
- 4C8G 16臺 和 8C16G8臺,不考慮成本的情況怎么選?
- 如何預估一個系統的QPS?
- 如何做SQL調優:用了主鍵索引反而查詢很慢?
- 如果要存IP地址,用什么數據類型比較好? 🏷?IoT
🔥 中頻問題(續2)
- 一次RPC請求,客戶端顯示超時,但是服務端不超時,可能是什么原因?
- 為什么不建議使用MC實現訂單到期關閉?
- 如何實現敏感詞過濾?
- 為啥不要在事務中做外部調用?
- 如何做平滑的數據遷移?
- 如何實現一個搶紅包功能?
- 使用分布式鎖時,分布式鎖加在事務外面還是里面,有什么區別?
- 加分布式鎖之后影響并發了怎么辦?
- 數據庫樂觀鎖和悲觀鎖以及redis分布式鎖的區別和使用場景?
- 為什么很多公司數據庫不允許物理刪除(delete) 數據
📱 中低頻問題
- 為什么不用分布式鎖來實現秒殺?
- 為什么不直接用原生的BlockingQueue做消息隊列
- SpringEvent和MQ有什么區別?各自適用場景是什么?
- 如何實現百萬級排行榜功能?
- 為什么一定要做限流?不應該服務好客戶嗎?不應該是加機器嗎?
- 大型電商的訂單系統,如何設計分庫分表方案?
- 你認為分布式架構一定比單體架構要好嗎?
- 代碼中使用長事務,會帶來哪些問題?
- Redis的內存如果用滿了,會掛嗎?
- 給第三方提供接口調用,需要注意些什么?
📱 中低頻問題(續)
- 應用啟動后前幾分鐘,Load、RT、CPU等很高,如何定位?可能原因是什么?
- 分庫分表時,每個城市的人口不一樣,有的密集,有的稀疏,如何均勻分布?
- 項目中,如果日志打印成為瓶頸,該如何優化?
- 分布式系統,用戶登錄信息保存在服務器A上,服務器B如何獲取到共享session
- 實現一個登錄拉黑功能,實現拉黑用戶和把已經登錄用戶踢下線?
- 調用第三方接口支付時,第三方接口顯示支付成功,但是在調用方顯示失敗,什么原因?
- 讀取一千個文件,一個線程讀取和開十個線程讀取,哪種方式效率高?
- a,b 的聯合索引,select b where a = xx,無法走索引覆蓋什么原因?
- 大量的手機號碼被標記成騷擾電話,如何存儲這些號碼? 🏷?IoT
- 把商品加入購物車時斷網了,該怎么在重新聯網時處理?
📱 低頻問題
- 不用大于號小于號怎么判斷兩個正整數大小?
- 外賣系統,一天一千萬條數據,用戶需要查到近30天的數據,商家也要查詢到30天的數據,怎么設計表?
- 進入電梯里斷網后又恢復剛開始為什么網絡慢? 🏷?IoT
- 一個表有用戶和時間兩個列,現有3個需求:根據用戶查;根據日期查;根據用戶和日期查;怎么建立索引?
- 做一個過濾黑名單網址的系統,你覺得要怎么實現,會用到哪些數據結構?
- 全國的酒店價格(千萬級)需要在某個瞬間比如7點發生變動,怎樣高性能準點進行變更?
- 服務器有多個節點,線上出現用戶進入緩慢,監控服務器cpu和緩存沒有壓力,可以從哪些方面排查?
- 賬戶里面只有十塊錢,同時發來兩筆訂單一共大于十塊錢,怎么保證不超花?
- 項目中需要應用發布和ddl變更,需要如何保證不出錯?
- 有100個優惠券,有幾千萬流量,怎么保證服務器不垮掉,怎么保證最前面的人能搶到這個券?
📱 低頻問題(續)
- 秒殺場景下,怎么加庫存?
- 5分鐘內最多允許用戶嘗試登錄3次,如果錯誤次數超過限制,需要對該用戶進行鎖定,怎么實現?
- 兩個不相關的網站A和B,如何實現A登錄B也能自動登錄
- MQ出現消息亂序了如何解決?
- 在for循環中調用數據庫,有什么缺點?如何優化?
- MySQL單表一千萬條數據怎么做分頁查詢?
- MySQL千萬級數據量,查詢如何做優化?
- 什么是數據歸檔,一般是怎么做的?
- 第三方接口不穩定經常超時,如何處理三方接口異常不影響自己的接口?
- Redis、MySQL和MongoDB的區別是什么,各自適用場景
📱 低頻問題(續2)
- Redis實現分布式鎖,加鎖的時候,redis不可用了咋整?
- 如果讓你實現短鏈服務,如何生成不重復的短鏈地址?
- MySQL如果突然斷電,會發生數據丟失嗎?
- 防止接口被惡意刷流量,除了限流還應在代碼層面做哪些防護?
- 庫存扣減、創建訂單,如何拆成TCC?
- Redis保存庫存的時候,如何避免被Redis清理掉?
- 如果token被竊取了,是不是就能偽造登錄了?
- 如果有1TB的數據需要排序,但只有32GB的內存如何排序處理?
- 如何從1TB的搜索日志中找出搜索量最高的10個關鍵詞?
- 用@Scheduled執行定時任務,如何避免集群的并發問題
📱 低頻問題(續3)
- 下單支付過程,點擊跳轉支付,輸入密碼,支付完成后跳轉到訂單頁,整個過程可能會有什么問題,架構方面做哪些設計
- 有一張上百萬條數據的單表,從前端頁面、Java后臺、數據庫三個層面做哪些查詢優化
- 假設還有很多內存,有什么情況還會頻繁fullgc?
- 壓測600沒問題,上線后300就扛不住了,可能是什么原因?
- Redis和MySQL的一次普通查詢,RT在什么范圍內是合理的?
- 5億條數據放到布隆過濾器中,大概需要多大內存?如何估算?
- 為了避免丟消息問題需要落表,如何設計這張消息表?
- 有一個銀行系統,對實時性要求比較高,你會怎么選擇垃圾回收器
- 百萬級會員的用戶平臺,如何實現快到期的會員的消息提醒
- A線程獲取Redis分布式鎖,但那一刻做了主從的切換,B線程能獲取到鎖嗎?
📱 低頻問題(續4)
- 如果設計一個緩存,需要考慮哪些方面?
- 掃表任務,如何寫SQL可以避免出現跳頁的情況?
- 阿里出的Java開發手冊看過嗎,對哪條規約印象深刻?
- 購物車中如何解決重復下單的問題?
- 讓你實現一個短鏈服務,你會考慮哪些問題?
🏷? 物聯網相關問題標識說明
🏷?IoT 標記的問題在物聯網場景中特別常見:
- 13. 如何實現"查找附近的人"功能? - 物聯網設備定位、地理位置服務
- 50. 如果要存IP地址,用什么數據類型比較好? - 物聯網設備IP管理
- 79. 大量的手機號碼被標記成騷擾電話,如何存儲這些號碼? - 物聯網設備號碼管理
- 83. 進入電梯里斷網后又恢復剛開始為什么網絡慢? - 物聯網設備網絡重連機制
熱度說明
- 🔥🔥🔥: 90%以上面試會問到
- 🔥🔥: 70-90%面試會問到
- 🔥: 50-70%面試會問到
- 📱: 30-50%面試會問到