版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2026年后端開發(fā)工程師面試題及數(shù)據(jù)庫優(yōu)化含答案一、編程基礎(chǔ)與算法(15分)題目1(5分)請用Python實現(xiàn)一個函數(shù),輸入一個非負(fù)整數(shù)n,返回其對應(yīng)的二進(jìn)制表示中1的個數(shù)。例如:輸入5,返回2(因為5的二進(jìn)制為101)。pythondefcount_bits(n):你的代碼題目2(5分)給定一個排序數(shù)組,編寫一個函數(shù)在該數(shù)組中查找一個目標(biāo)值target。如果找到返回其索引,否則返回-1。要求時間復(fù)雜度為O(logn)。pythondefbinary_search(nums,target):你的代碼題目3(5分)實現(xiàn)一個LRU(最近最少使用)緩存,支持get和put操作。要求get操作返回對應(yīng)鍵的值,如果不存在返回-1;put操作將鍵值對插入緩存,如果鍵已存在則更新值。緩存容量為capacity。pythonclassLRUCache:def__init__(self,capacity):初始化defget(self,key):實現(xiàn)defput(self,key,value):實現(xiàn)二、系統(tǒng)設(shè)計(20分)題目4(10分)設(shè)計一個簡單的微博系統(tǒng),需要支持以下功能:1.用戶注冊與登錄2.發(fā)布微博(最多140字符)3.關(guān)注/取消關(guān)注用戶4.獲取某個用戶的關(guān)注者列表5.獲取某個用戶的關(guān)注列表中的用戶動態(tài)請簡述系統(tǒng)架構(gòu)設(shè)計,包括:-關(guān)鍵數(shù)據(jù)表設(shè)計-主要接口設(shè)計-技術(shù)選型建議(數(shù)據(jù)庫、緩存、消息隊列等)題目5(10分)設(shè)計一個高并發(fā)的短鏈接系統(tǒng),要求:1.支持將任意長度的URL轉(zhuǎn)換為固定長度的短鏈接2.支持從短鏈接反解析出原始URL3.系統(tǒng)需要具備高可用性和高并發(fā)能力4.說明如何保證短鏈接的全局唯一性三、數(shù)據(jù)庫設(shè)計與優(yōu)化(25分)題目6(10分)設(shè)計一個電商訂單系統(tǒng)中的核心數(shù)據(jù)表,需要支持以下場景:1.訂單創(chuàng)建、支付、發(fā)貨、完成、取消等狀態(tài)流轉(zhuǎn)2.支持按用戶、時間、商品等條件查詢訂單3.支持訂單關(guān)聯(lián)多個收貨地址請設(shè)計主要的數(shù)據(jù)表結(jié)構(gòu),并說明表之間的關(guān)系。題目7(10分)假設(shè)你負(fù)責(zé)優(yōu)化一個電商網(wǎng)站的商品詳情頁查詢性能,該頁面需要加載商品的基本信息、銷量、評價、相關(guān)商品等數(shù)據(jù)。請分析可能的性能瓶頸,并提出優(yōu)化方案。題目8(5分)解釋數(shù)據(jù)庫索引的原理,并說明以下場景應(yīng)該使用哪種索引類型:1.快速查找某個特定記錄2.查詢范圍數(shù)據(jù)(如日期區(qū)間)3.需要進(jìn)行排序的操作4.需要保證數(shù)據(jù)唯一性的場景四、分布式與中間件(20分)題目9(10分)設(shè)計一個高并發(fā)的秒殺系統(tǒng),需要支持:1.用戶加購商品2.校驗庫存3.扣減庫存4.發(fā)送訂單請說明系統(tǒng)架構(gòu)設(shè)計,包括如何處理高并發(fā)、超賣問題。題目10(10分)解釋分布式事務(wù)的概念和常見解決方案(如2PC、TCC、Saga等),并說明每種方案的特點和適用場景。五、安全與性能(20分)題目11(10分)列舉常見的Web安全漏洞,并說明如何防范。請至少列舉5種漏洞類型。題目12(10分)解釋什么是緩存穿透、緩存擊穿和緩存雪崩,并說明如何解決這些問題。答案與解析編程基礎(chǔ)與算法答案題目1答案(5分)pythondefcount_bits(n):count=0whilen:count+=n&1n>>=1returncount解析:使用位運算,每次與1進(jìn)行與操作,統(tǒng)計最低位的1的個數(shù),然后右移一位繼續(xù)統(tǒng)計,直到n為0。時間復(fù)雜度為O(logn)。題目2答案(5分)pythondefbinary_search(nums,target):left,right=0,len(nums)-1whileleft<=right:mid=left+(right-left)//2ifnums[mid]==target:returnmidelifnums[mid]<target:left=mid+1else:right=mid-1return-1解析:二分查找的基本實現(xiàn),每次將查找范圍縮小一半,時間復(fù)雜度為O(logn)。題目3答案(5分)pythonclassLRUCache:def__init__(self,capacity):self.capacity=capacityself.cache={}self.order=[]defget(self,key):ifkeyinself.cache:self.order.remove(key)self.order.append(key)returnself.cache[key]return-1defput(self,key,value):ifkeyinself.cache:self.order.remove(key)eliflen(self.cache)>=self.capacity:self.cache.pop(self.order.pop(0))self.cache[key]=valueself.order.append(key)解析:使用字典存儲鍵值對,列表維護(hù)使用順序。get時將鍵移到末尾表示最近使用,put時如果已存在則更新,如果超出容量則刪除最久未使用的元素。系統(tǒng)設(shè)計答案題目4答案(10分)系統(tǒng)架構(gòu)設(shè)計:1.關(guān)鍵數(shù)據(jù)表設(shè)計:-users:存儲用戶信息(id,username,password,email等)-tweets:存儲微博內(nèi)容(id,user_id,content,created_at等)-followships:存儲關(guān)注關(guān)系(follower_id,followee_id)-likes:存儲點贊關(guān)系(user_id,tweet_id)2.主要接口設(shè)計:-注冊:POST/api/users-登錄:POST/api/login-發(fā)布微博:POST/api/tweets-關(guān)注用戶:POST/api/follow/{followee_id}-獲取關(guān)注者:GET/api/users/{user_id}/followers-獲取動態(tài):GET/api/users/{user_id}/timeline3.技術(shù)選型建議:-數(shù)據(jù)庫:MySQL(關(guān)系型數(shù)據(jù))+Redis(緩存熱點數(shù)據(jù))-緩存:Redis緩存用戶信息、熱門微博等-消息隊列:Kafka處理異步操作如通知-緩存穿透:使用布隆過濾器攔截非法請求-負(fù)載均衡:Nginx分發(fā)請求題目5答案(10分)短鏈接系統(tǒng)設(shè)計:1.技術(shù)實現(xiàn):-使用Base62編碼將長URL轉(zhuǎn)換為短URL-將短URL映射到原始URL的數(shù)據(jù)庫表-使用Redis緩存熱點短鏈接2.高可用性:-使用分布式數(shù)據(jù)庫(如TiKV)-部署多個短鏈接服務(wù)節(jié)點-使用DNS輪詢和負(fù)載均衡3.全局唯一性:-使用雪花算法生成唯一ID-或者使用隨機碼+校驗和的方式4.架構(gòu)圖:用戶請求->Nginx負(fù)載均衡->短鏈接服務(wù)||VVRedis緩存分布式數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計與優(yōu)化答案題目6答案(10分)訂單系統(tǒng)數(shù)據(jù)表設(shè)計:sqlCREATETABLEorders(idBIGINTAUTO_INCREMENTPRIMARYKEY,user_idBIGINTNOTNULL,product_idBIGINTNOTNULL,total_amountDECIMAL(10,2)NOTNULL,statusENUM('created','paid','shipped','completed','cancelled')NOTNULL,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,updated_atTIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,FOREIGNKEY(user_id)REFERENCESusers(id),FOREIGNKEY(product_id)REFERENCESproducts(id));CREATETABLEorder_addresses(idBIGINTAUTO_INCREMENTPRIMARYKEY,order_idBIGINTNOTNULL,addressTEXTNOTNULL,is_defaultBOOLEANDEFAULTFALSE,FOREIGNKEY(order_id)REFERENCESorders(id)ONDELETECASCADE);解析:orders表存儲訂單核心信息,status字段使用枚舉類型限制狀態(tài)值。order_addresses表存儲收貨地址,一個訂單可以關(guān)聯(lián)多個地址。題目7答案(10分)商品詳情頁查詢優(yōu)化:1.性能瓶頸分析:-多表聯(lián)合查詢導(dǎo)致性能下降-緩存命中率低-熱點數(shù)據(jù)未緩存-索引缺失或不當(dāng)2.優(yōu)化方案:-緩存優(yōu)化:-使用Redis緩存商品基本信息、銷量、評價等-設(shè)置合理的過期時間-使用Hash結(jié)構(gòu)存儲關(guān)聯(lián)數(shù)據(jù)-SQL優(yōu)化:-使用JOIN代替子查詢-為關(guān)鍵字段添加索引(商品ID、用戶ID等)-使用EXPLAIN分析查詢計劃-數(shù)據(jù)分離:-將商品評價、相關(guān)商品等數(shù)據(jù)分離存儲-使用異步加載方式加載非核心數(shù)據(jù)-硬件優(yōu)化:-使用更快的存儲介質(zhì)-升級數(shù)據(jù)庫服務(wù)器題目8答案(5分)數(shù)據(jù)庫索引類型選擇:1.快速查找特定記錄:B-Tree索引(如MySQL默認(rèn)索引)2.查詢范圍數(shù)據(jù):R-Tree索引(空間范圍查詢)或B-Tree索引(日期范圍查詢)3.需要排序的操作:使用覆蓋索引(包含排序所需所有字段)4.保證數(shù)據(jù)唯一性:唯一索引(UNIQUE約束)解析:不同場景選擇不同索引類型,B-Tree適用于精確匹配和范圍查詢,唯一索引保證數(shù)據(jù)不重復(fù),R-Tree適用于空間數(shù)據(jù)。分布式與中間件答案題目9答案(10分)秒殺系統(tǒng)設(shè)計:1.架構(gòu)設(shè)計:-使用Redis實現(xiàn)分布式鎖-使用消息隊列(Kafka)處理訂單異步創(chuàng)建-庫存預(yù)扣減+最終扣減模式2.處理高并發(fā):-使用讀寫分離-設(shè)置合理的超時時間-使用限流措施3.防止超賣:-庫存預(yù)扣減,成功后才扣減-使用分布式鎖保證原子性-使用事務(wù)保證數(shù)據(jù)一致性4.系統(tǒng)架構(gòu)圖:用戶請求->API網(wǎng)關(guān)->業(yè)務(wù)服務(wù)||VVRedis鎖消息隊列||VV庫存服務(wù)訂單服務(wù)題目10答案(10分)分布式事務(wù)解決方案:1.2PC(兩階段提交):-特點:強一致性,實現(xiàn)簡單-適用場景:金融系統(tǒng)等要求嚴(yán)格一致性的場景2.TCC(Try-Confirm-Cancel):-特點:最終一致性,實現(xiàn)復(fù)雜-適用場景:訂單系統(tǒng)等需要補償?shù)臉I(yè)務(wù)場景3.Saga:-特點:異步執(zhí)行,補償事務(wù)-適用場景:長事務(wù)場景4.本地消息表:-特點:簡單實現(xiàn)最終一致性-適用場景:對一致性要求不高的場景解析:不同方案適用于不同場景,2PC最嚴(yán)格但最復(fù)雜,TCC和Saga適用于需要補償?shù)臉I(yè)務(wù),本地消息表實現(xiàn)簡單。安全與性能答案題目11答案(10分)常見Web安全漏洞及防范:1.SQL注入:使用預(yù)編譯語句和參數(shù)化查詢2.XSS跨站腳本:對用戶輸入進(jìn)行過濾和轉(zhuǎn)義3.CSRF跨站請求偽造:使用CSRFToken驗證4.權(quán)限繞過:嚴(yán)格驗證用戶權(quán)限5.文件上傳漏洞:限制文件類型和大小,使用沙箱執(zhí)行6.DDoS攻擊:使用CDN和流量清洗服務(wù)7.敏感信息
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 呼吸系統(tǒng)疾病患者的營養(yǎng)支持
- 勞動爭議調(diào)查試題和答案
- 獸醫(yī)學(xué)題庫及答案
- 中級會計師考試模擬試題及答案
- 企業(yè)文化試題與答案(供參考)
- 《傳染病護(hù)理》考試試卷及答案
- 產(chǎn)科規(guī)培考試試題附答案
- 鹽山縣輔警考試公安基礎(chǔ)知識考試真題庫及答案
- 教師招聘考試教育學(xué)題庫及答案
- 稅法考試真題卷子及答案
- (一診)重慶市九龍坡區(qū)區(qū)2026屆高三學(xué)業(yè)質(zhì)量調(diào)研抽測(第一次)物理試題
- 2026新疆伊犁州新源縣總工會面向社會招聘工會社會工作者3人考試備考試題及答案解析
- 2026年榆能集團(tuán)陜西精益化工有限公司招聘備考題庫完整答案詳解
- 2026廣東省環(huán)境科學(xué)研究院招聘專業(yè)技術(shù)人員16人筆試參考題庫及答案解析
- 2026年保安員理論考試題庫
- 駱駝祥子劇本殺課件
- DGTJ08-10-2022 城鎮(zhèn)天然氣管道工程技術(shù)標(biāo)準(zhǔn)
- 加油站安保反恐工作總結(jié)分享范文
- 反洗錢風(fēng)險自評價制度
- 隱框、半隱框玻璃幕墻分項工程檢驗批質(zhì)量驗收記錄
- 包扎技術(shù)課件
評論
0/150
提交評論