大廠后端場景題總結(jié)
最新的文章有解答思路,優(yōu)化了排版。
鏈接:http://fangfengwang8.cn/discuss/733322587777888256?sourceSSR=users
1. 淘寶,在你商品的購物車頁面,有幾個商品,點擊商品購物之后點擊支付會跳轉(zhuǎn)到第三方頁面不管是微信還是支付寶,從你點擊支付跳轉(zhuǎn)到支付頁面,輸入支付碼,完成支付之后返回響應(yīng)的訂單列表頁面,在這個業(yè)務(wù)場景中試著想想會有什么問題?架構(gòu)方面你會怎么設(shè)計?
問題總結(jié):
?支付狀態(tài)同步延遲?(第三方回調(diào)不及時,訂單狀態(tài)不一致);
?網(wǎng)絡(luò)中斷或用戶中途退出?(支付未完成,訂單狀態(tài)卡在“處理中”);
?重復(fù)支付或超時失效?(用戶重復(fù)操作或支付超時未更新);
?數(shù)據(jù)一致性風(fēng)險?(訂單、庫存、支付系統(tǒng)間狀態(tài)沖突);
?第三方支付回調(diào)失敗?(網(wǎng)絡(luò)抖動或接口異常導(dǎo)致狀態(tài)丟失)。
架構(gòu)設(shè)計思路:
?異步通知 + 主動查詢:用MQ監(jiān)聽第三方支付結(jié)果,同時定時任務(wù)補償未確認訂單;
?冪等設(shè)計:訂單ID與支付流水號綁定,防止重復(fù)處理;
?分布式事務(wù)最終一致性:通過狀態(tài)機驅(qū)動訂單流轉(zhuǎn),結(jié)合日志和補償機制;
?前端兜底:支付完成后強制刷新訂單列表,并引導(dǎo)用戶手動查詢;
?容災(zāi)降級:第三方支付異常時,提供延遲跳轉(zhuǎn)或本地訂單狀態(tài)緩存。
2. 大文件小內(nèi)存,文件內(nèi)存儲的是數(shù)字,要求對文件內(nèi)容進行排序,詳細說明每一步干什么?
假設(shè)有10GB數(shù)字文件,內(nèi)存1GB:
?分割:生成11個臨時文件(每個約0.9GB)。
?內(nèi)部排序:每個文件排序后保存。
?歸并:若系統(tǒng)允許同時打開10個文件,則每次歸并10路,兩輪完成(10→1)。
?輸出:得到最終有序文件,刪除臨時數(shù)據(jù)。
3. 在表上新增一個字段時,如果這個表正在進行讀寫操作,應(yīng)該如何處理以確保不影響現(xiàn)有操作?
用工具繞過鎖表
? ?在線DDL:MySQL用ALGORITHM=INPLACE;SQL Server用ONLINE=ON。
? ?無鎖工具:pt-online-schema-change或gh-ost(影子表同步,秒級切換)。
?代碼與數(shù)據(jù)兼容
?? ?先發(fā)代碼:應(yīng)用層兼容新字段(允許NULL/默認值)。
?? ?默認值必填:如DEFAULT 0,避免臟讀。
?低風(fēng)險操作
? ?低峰執(zhí)行:監(jiān)控流量,避開業(yè)務(wù)高峰。
?? ?備回滾方案:工具自動備份原表,異常時快速回退。
4. 在Linux命令行敲下一行命令,會進行哪些事情?
Shell解析:處理別名、變量、通配符、重定向和管道。
命令類型判斷:檢查是內(nèi)建命令還是外部可執(zhí)行文件。
創(chuàng)建子進程:通過fork()和exec()加載并執(zhí)行命令。
執(zhí)行命令:程序運行,可能調(diào)用系統(tǒng)調(diào)用與內(nèi)核交互。
結(jié)束與清理:返回狀態(tài)碼,回收資源。
返回Shell:重新進入交互狀態(tài),等待下一條命令。
5. 比如說 42 億個 QQ 號,然后有 10 萬行數(shù)據(jù)。那比如它這個數(shù)據(jù)量就比較大了,查閱效率比較低。那你要提升查閱效率的話,采用分庫的方法,你覺得要怎么分?比如前5萬行放到一個庫里,然后5萬行放到一個庫里。這里有個問題,比如說想要查找名字叫做abc的所有賬號,可能前五萬行外行里邊有 10 個,后五萬個行里邊有 3 個,然后你要查出名字叫abc的用戶,你就要查兩次?
6. 從前端頁面到Java后臺再到數(shù)據(jù)庫,有一張表,表存在上百萬條數(shù)據(jù),從這三個層面,去做一個查詢方面的優(yōu)化,單表查詢。
7. 假設(shè)現(xiàn)在還有挺多內(nèi)存,有什么情況還會頻繁fullgc?
8. 如何判斷語言是面向?qū)ο蟮倪€是面向過程的?
9. 使用普通的互斥鎖實現(xiàn)讀寫鎖
10. 后端項目的集群部署,如果在使用canal同步數(shù)據(jù)庫binlog的時候發(fā)生了宕機,從節(jié)點的同步方案?
11. 如果服務(wù)和mq之前發(fā)送消息進行數(shù)據(jù)同步的過程意外暫停了,如何去排查?
12. 把面試官看成是一個小白的話,如何去給他講解mysql的作用和底層實現(xiàn)?對比使用文本文件存儲
13. 選課,課的人數(shù)不能超,人的時間段不能重
14. 設(shè)計表的時候,關(guān)聯(lián)表和在一個表中加冗余字段關(guān)聯(lián)各有什么優(yōu)勢
15. 分庫分表方案(題目:淘寶購物場景-區(qū)分用戶訂單和商家訂單)
16. 庫存系統(tǒng)設(shè)定(講到了分為讀和寫。高并發(fā)讀的情況下怎么扛住。數(shù)據(jù)一致性怎么保證。怎么加鎖的,鎖的粒度在流程中鎖了什么?)
17. 遇到內(nèi)存泄露有什么排查方式
18. 看堆內(nèi)存溢出的時候會看那些指標(biāo)?
19. 解決超賣問題的思路
20. 為什么你數(shù)據(jù)庫的ID不用自增ID而是用雪花ID?
21. 單例模式有沒有線程安全情況
22. 編寫Java程序到到運行經(jīng)歷了什么
23. viloate關(guān)鍵字作用,為什么jvm會指令重排序,我說加快運行速率,為什么可以加快?
24. 防抖和節(jié)流如何實現(xiàn)
25. 服務(wù)器大量請求超時,怎么排查
26. 棧溢出會對其他進程造成影響嗎?
27. 程序是如何在計算機上跑起來的?
28. 需要啟動一個線程去完成某一個工作,耗時是不確定的,我需要設(shè)置一個超時時間,不管運不運行完都要返回,如何設(shè)計呢?
29. 假如mysql和redis使用kafka解耦之后,有一部分失敗導(dǎo)致數(shù)據(jù)不一致怎么辦
30. bitmap的作用,及常見使用場景
31. 對于微博成千上萬的評論,一個評論可能還會有很多回復(fù),你會如何設(shè)計這個評論系統(tǒng)?
32. 業(yè)務(wù)上 什么情況使用悲觀鎖,什么情況使用樂觀鎖?
33. .我用了一個多線程去查多個結(jié)果集,主線程使用線程池獲取多個結(jié)果集,主線程如何知道前面的線程執(zhí)行完了,并且得到結(jié)果集?
34. 你怎么對帖子按照最熱進行排行?用戶點贊/關(guān)注這個三元組(如果數(shù)據(jù)量很大)怎么存儲查詢?
35. 1000w url排序,10M內(nèi)存
36. 一個商品1000萬庫存,20w秒殺,只用設(shè)計減庫存環(huán)節(jié)
37. 怎么快速定位到五分鐘內(nèi)重復(fù)登錄了兩次的QQ號,用什么數(shù)據(jù)結(jié)構(gòu)。
38. 兩個500G的文件存ip地址,給30G內(nèi)存,求兩個文件的交集
39. 設(shè)計一個 QPS 一百萬的分布式數(shù)據(jù)庫的訂單號方案。
40. 我現(xiàn)在有一些海外業(yè)務(wù),從國內(nèi)將數(shù)據(jù)發(fā)送到海外延遲比較大,有沒有什么改善方法?
41. 主題里面假如有1萬條消息,這個 topic 的 badcase 有 10 個,那我這個1萬條消息是怎么分布的?Kafka為什么要有這個 partition 這個概念?消費者是按照 topic 去消費的還是按 position 去消費的?consumer group有了解嗎?一個 consumer group 下面有 5 個節(jié)點,就比方說剛才那個 topic 下面有十個partition,有五個這個消費節(jié)點,它這個五個消費節(jié)點是怎么去消費這些 partition?Kafka 它的性能比用 其它mq 那些都要快,那你了解過Kafka 為什么能實現(xiàn)高吞吐量嗎?
42. 場景:設(shè)計一個網(wǎng)絡(luò)服務(wù)器,現(xiàn)在有【多線程 + 每個線程內(nèi)部阻塞IO】 和 【單線程 + Epoll】這兩種方案
(1)這兩種方案在cpu負載,時間效率,內(nèi)存資源占用這三個方面各有什么特點?
(2)現(xiàn)在有大量的就緒socket需要處理,使用單線程模型有什么問題?該怎么優(yōu)化?
(3)開放題:如果讓你來設(shè)計一個網(wǎng)絡(luò)服務(wù)器,你有什么方案?
43. 場景:現(xiàn)在有一天內(nèi)的大量日志,每條日志記錄了用戶id, 登陸時間,登出時間 {userid, login_time, logout_time}, 時間單位是秒。
(1)怎么求出一天內(nèi)的最大在線人數(shù)?
(2)怎么求出維持在最大在線人數(shù)的最長持續(xù)時間?
鏈接:http://fangfengwang8.cn/discuss/733322587777888256?sourceSSR=users
1. 淘寶,在你商品的購物車頁面,有幾個商品,點擊商品購物之后點擊支付會跳轉(zhuǎn)到第三方頁面不管是微信還是支付寶,從你點擊支付跳轉(zhuǎn)到支付頁面,輸入支付碼,完成支付之后返回響應(yīng)的訂單列表頁面,在這個業(yè)務(wù)場景中試著想想會有什么問題?架構(gòu)方面你會怎么設(shè)計?
?支付狀態(tài)同步延遲?(第三方回調(diào)不及時,訂單狀態(tài)不一致);
?網(wǎng)絡(luò)中斷或用戶中途退出?(支付未完成,訂單狀態(tài)卡在“處理中”);
?重復(fù)支付或超時失效?(用戶重復(fù)操作或支付超時未更新);
?數(shù)據(jù)一致性風(fēng)險?(訂單、庫存、支付系統(tǒng)間狀態(tài)沖突);
?第三方支付回調(diào)失敗?(網(wǎng)絡(luò)抖動或接口異常導(dǎo)致狀態(tài)丟失)。
架構(gòu)設(shè)計思路:
?異步通知 + 主動查詢:用MQ監(jiān)聽第三方支付結(jié)果,同時定時任務(wù)補償未確認訂單;
?冪等設(shè)計:訂單ID與支付流水號綁定,防止重復(fù)處理;
?分布式事務(wù)最終一致性:通過狀態(tài)機驅(qū)動訂單流轉(zhuǎn),結(jié)合日志和補償機制;
?前端兜底:支付完成后強制刷新訂單列表,并引導(dǎo)用戶手動查詢;
?容災(zāi)降級:第三方支付異常時,提供延遲跳轉(zhuǎn)或本地訂單狀態(tài)緩存。
2. 大文件小內(nèi)存,文件內(nèi)存儲的是數(shù)字,要求對文件內(nèi)容進行排序,詳細說明每一步干什么?
?分割:生成11個臨時文件(每個約0.9GB)。
?內(nèi)部排序:每個文件排序后保存。
?歸并:若系統(tǒng)允許同時打開10個文件,則每次歸并10路,兩輪完成(10→1)。
?輸出:得到最終有序文件,刪除臨時數(shù)據(jù)。
3. 在表上新增一個字段時,如果這個表正在進行讀寫操作,應(yīng)該如何處理以確保不影響現(xiàn)有操作?
? ?在線DDL:MySQL用ALGORITHM=INPLACE;SQL Server用ONLINE=ON。
? ?無鎖工具:pt-online-schema-change或gh-ost(影子表同步,秒級切換)。
?代碼與數(shù)據(jù)兼容
?? ?先發(fā)代碼:應(yīng)用層兼容新字段(允許NULL/默認值)。
?? ?默認值必填:如DEFAULT 0,避免臟讀。
?低風(fēng)險操作
? ?低峰執(zhí)行:監(jiān)控流量,避開業(yè)務(wù)高峰。
?? ?備回滾方案:工具自動備份原表,異常時快速回退。
4. 在Linux命令行敲下一行命令,會進行哪些事情?
命令類型判斷:檢查是內(nèi)建命令還是外部可執(zhí)行文件。
創(chuàng)建子進程:通過fork()和exec()加載并執(zhí)行命令。
執(zhí)行命令:程序運行,可能調(diào)用系統(tǒng)調(diào)用與內(nèi)核交互。
結(jié)束與清理:返回狀態(tài)碼,回收資源。
返回Shell:重新進入交互狀態(tài),等待下一條命令。
5. 比如說 42 億個 QQ 號,然后有 10 萬行數(shù)據(jù)。那比如它這個數(shù)據(jù)量就比較大了,查閱效率比較低。那你要提升查閱效率的話,采用分庫的方法,你覺得要怎么分?比如前5萬行放到一個庫里,然后5萬行放到一個庫里。這里有個問題,比如說想要查找名字叫做abc的所有賬號,可能前五萬行外行里邊有 10 個,后五萬個行里邊有 3 個,然后你要查出名字叫abc的用戶,你就要查兩次?
6. 從前端頁面到Java后臺再到數(shù)據(jù)庫,有一張表,表存在上百萬條數(shù)據(jù),從這三個層面,去做一個查詢方面的優(yōu)化,單表查詢。
7. 假設(shè)現(xiàn)在還有挺多內(nèi)存,有什么情況還會頻繁fullgc?
8. 如何判斷語言是面向?qū)ο蟮倪€是面向過程的?
9. 使用普通的互斥鎖實現(xiàn)讀寫鎖
10. 后端項目的集群部署,如果在使用canal同步數(shù)據(jù)庫binlog的時候發(fā)生了宕機,從節(jié)點的同步方案?
11. 如果服務(wù)和mq之前發(fā)送消息進行數(shù)據(jù)同步的過程意外暫停了,如何去排查?
12. 把面試官看成是一個小白的話,如何去給他講解mysql的作用和底層實現(xiàn)?對比使用文本文件存儲
13. 選課,課的人數(shù)不能超,人的時間段不能重
14. 設(shè)計表的時候,關(guān)聯(lián)表和在一個表中加冗余字段關(guān)聯(lián)各有什么優(yōu)勢
15. 分庫分表方案(題目:淘寶購物場景-區(qū)分用戶訂單和商家訂單)
16. 庫存系統(tǒng)設(shè)定(講到了分為讀和寫。高并發(fā)讀的情況下怎么扛住。數(shù)據(jù)一致性怎么保證。怎么加鎖的,鎖的粒度在流程中鎖了什么?)
17. 遇到內(nèi)存泄露有什么排查方式
18. 看堆內(nèi)存溢出的時候會看那些指標(biāo)?
19. 解決超賣問題的思路
20. 為什么你數(shù)據(jù)庫的ID不用自增ID而是用雪花ID?
21. 單例模式有沒有線程安全情況
22. 編寫Java程序到到運行經(jīng)歷了什么
23. viloate關(guān)鍵字作用,為什么jvm會指令重排序,我說加快運行速率,為什么可以加快?
24. 防抖和節(jié)流如何實現(xiàn)
25. 服務(wù)器大量請求超時,怎么排查
26. 棧溢出會對其他進程造成影響嗎?
27. 程序是如何在計算機上跑起來的?
28. 需要啟動一個線程去完成某一個工作,耗時是不確定的,我需要設(shè)置一個超時時間,不管運不運行完都要返回,如何設(shè)計呢?
29. 假如mysql和redis使用kafka解耦之后,有一部分失敗導(dǎo)致數(shù)據(jù)不一致怎么辦
30. bitmap的作用,及常見使用場景
31. 對于微博成千上萬的評論,一個評論可能還會有很多回復(fù),你會如何設(shè)計這個評論系統(tǒng)?
32. 業(yè)務(wù)上 什么情況使用悲觀鎖,什么情況使用樂觀鎖?
33. .我用了一個多線程去查多個結(jié)果集,主線程使用線程池獲取多個結(jié)果集,主線程如何知道前面的線程執(zhí)行完了,并且得到結(jié)果集?
34. 你怎么對帖子按照最熱進行排行?用戶點贊/關(guān)注這個三元組(如果數(shù)據(jù)量很大)怎么存儲查詢?
35. 1000w url排序,10M內(nèi)存
36. 一個商品1000萬庫存,20w秒殺,只用設(shè)計減庫存環(huán)節(jié)
37. 怎么快速定位到五分鐘內(nèi)重復(fù)登錄了兩次的QQ號,用什么數(shù)據(jù)結(jié)構(gòu)。
38. 兩個500G的文件存ip地址,給30G內(nèi)存,求兩個文件的交集
39. 設(shè)計一個 QPS 一百萬的分布式數(shù)據(jù)庫的訂單號方案。
40. 我現(xiàn)在有一些海外業(yè)務(wù),從國內(nèi)將數(shù)據(jù)發(fā)送到海外延遲比較大,有沒有什么改善方法?
41. 主題里面假如有1萬條消息,這個 topic 的 badcase 有 10 個,那我這個1萬條消息是怎么分布的?Kafka為什么要有這個 partition 這個概念?消費者是按照 topic 去消費的還是按 position 去消費的?consumer group有了解嗎?一個 consumer group 下面有 5 個節(jié)點,就比方說剛才那個 topic 下面有十個partition,有五個這個消費節(jié)點,它這個五個消費節(jié)點是怎么去消費這些 partition?Kafka 它的性能比用 其它mq 那些都要快,那你了解過Kafka 為什么能實現(xiàn)高吞吐量嗎?
42. 場景:設(shè)計一個網(wǎng)絡(luò)服務(wù)器,現(xiàn)在有【多線程 + 每個線程內(nèi)部阻塞IO】 和 【單線程 + Epoll】這兩種方案
(1)這兩種方案在cpu負載,時間效率,內(nèi)存資源占用這三個方面各有什么特點?
(2)現(xiàn)在有大量的就緒socket需要處理,使用單線程模型有什么問題?該怎么優(yōu)化?
(3)開放題:如果讓你來設(shè)計一個網(wǎng)絡(luò)服務(wù)器,你有什么方案?
43. 場景:現(xiàn)在有一天內(nèi)的大量日志,每條日志記錄了用戶id, 登陸時間,登出時間 {userid, login_time, logout_time}, 時間單位是秒。
(1)怎么求出一天內(nèi)的最大在線人數(shù)?
(2)怎么求出維持在最大在線人數(shù)的最長持續(xù)時間?
全部評論
mark住這個帖子
mark住這個帖子
m
mark住這個帖子
mark住這個帖子
mark
mark
mark學(xué)習(xí)一下
mark住這個帖子
m
Mark
mark住這個帖子
m
mark住這個帖子
mark住這個帖子
mark住這個帖子
mark住這個帖子
mark住這個帖子
mark住這個帖子
相關(guān)推薦
點贊 評論 收藏
分享
點贊 評論 收藏
分享

點贊 評論 收藏
分享
點贊 評論 收藏
分享