版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2026年百度技術(shù)崗面試題集一、編程基礎(chǔ)與算法(5題,每題10分,共50分)1.題目:給定一個非空整數(shù)數(shù)組,返回其中出現(xiàn)頻率最高的元素。如果有多個元素出現(xiàn)頻率相同,返回任意一個。例如,輸入`[1,1,2,2,3]`,輸出`1`或`2`。要求:時間復(fù)雜度O(n),空間復(fù)雜度O(n)。2.題目:實現(xiàn)一個LRU(最近最少使用)緩存,支持`get`和`put`操作。`get(key)`返回`key`對應(yīng)的值,如果不存在返回`-1`;`put(key,value)`將鍵值對插入緩存。當(dāng)緩存容量已滿時,需要刪除最近最少使用的元素。要求:使用哈希表和雙向鏈表實現(xiàn),時間復(fù)雜度O(1)。3.題目:給定一個字符串`s`和一個字符規(guī)律`p`,其中`p`包含字母和數(shù)字,字母表示字符本身,數(shù)字表示重復(fù)次數(shù)。例如,`s="abc"`,`p="a2c3"`,返回`true`(即`"aaabcc"`)。要求:支持``通配符,``可以匹配任意字符。4.題目:實現(xiàn)快速排序算法,要求原地排序(不使用額外數(shù)組),并分析其平均時間復(fù)雜度和最壞時間復(fù)雜度。5.題目:給定一個正整數(shù)`n`,判斷其是否為完全平方數(shù)。例如,`n=16`返回`true`,`n=14`返回`false`。要求:不使用`Math.sqrt`,時間復(fù)雜度O(logn)。二、系統(tǒng)設(shè)計與架構(gòu)(3題,每題15分,共45分)1.題目:設(shè)計一個短鏈接服務(wù),要求:-輸入任意長度的URL,輸出固定長度的短鏈接(如`/abc123`)。-支持長鏈接的反向解析(輸入短鏈接返回原鏈接)。-高并發(fā)場景下性能穩(wěn)定,支持分布式部署。要求:說明核心組件設(shè)計、數(shù)據(jù)結(jié)構(gòu)、分布式方案及容災(zāi)措施。2.題目:設(shè)計一個微博Feed流系統(tǒng),要求:-用戶可以發(fā)布不超過1000字的動態(tài),包含文字、圖片、視頻等多媒體內(nèi)容。-Feed流支持按時間倒序展示,并分頁加載(如每頁20條)。-支持關(guān)注/取消關(guān)注功能,關(guān)注者實時收到新動態(tài)。要求:說明數(shù)據(jù)存儲方案(SQL/NoSQL)、緩存策略、消息隊列應(yīng)用場景。3.題目:設(shè)計一個分布式限流系統(tǒng),要求:-支持按IP或用戶ID進(jìn)行限流(如每秒1000次)。-支持預(yù)熱期(如剛上線時逐步放開流量)。-限流策略需高可用,支持熱更新(如動態(tài)調(diào)整限流閾值)。要求:說明限流算法(如令牌桶、漏桶)、存儲方案(Redis/本地緩存)及分布式實現(xiàn)。三、數(shù)據(jù)庫與存儲(2題,每題20分,共40分)1.題目:對比MySQL和Redis在緩存場景下的優(yōu)劣,并說明如何結(jié)合兩者實現(xiàn)高可用緩存。要求:分析數(shù)據(jù)一致性、性能、成本等維度,給出具體架構(gòu)方案。2.題目:設(shè)計一個訂單表(`orders`),包含字段:`id`(自增主鍵)、`user_id`(用戶ID)、`total_amount`(訂單金額)、`status`(狀態(tài),如`pending`、`paid`、`delivered`)、`created_at`(創(chuàng)建時間)。要求:-支持按`user_id`和`status`快速查詢未支付的訂單。-支持按`created_at`分頁查詢最近7天的訂單。要求:說明索引設(shè)計、SQL優(yōu)化方案及分庫分表思路。四、分布式與中間件(2題,每題20分,共40分)1.題目:解釋CAP理論,并說明在百度等大型互聯(lián)網(wǎng)場景下,如何權(quán)衡一致性、可用性和分區(qū)容錯性。要求:結(jié)合具體業(yè)務(wù)場景(如搜索、推薦)給出設(shè)計決策。2.題目:設(shè)計一個分布式事務(wù)解決方案,要求:-支持至少兩種異構(gòu)存儲(如MySQL和MongoDB)。-保證事務(wù)的原子性和一致性。-考慮性能和延遲問題。要求:說明事務(wù)協(xié)議(如2PC)、補(bǔ)償機(jī)制及選型依據(jù)。答案與解析一、編程基礎(chǔ)與算法1.答案:pythonfromcollectionsimportCounterdeftop_frequent(nums):counter=Counter(nums)returncounter.most_common(1)[0][0]解析:使用`Counter`統(tǒng)計頻率,`most_common(1)`獲取最高頻元素。時間復(fù)雜度O(n),空間復(fù)雜度O(n)。2.答案:pythonclassLRUCache:def__init__(self,capacity):self.capacity=capacityself.cache={}self.head,self.tail=Node(0,0),Node(0,0)self.head.next,self.tail.prev=self.tail,self.headclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev,self.next=None,Nonedefget(self,key):ifkeynotinself.cache:return-1node=self.cache[key]self._move_to_head(node)returnnode.valuedefput(self,key,value):ifkeyinself.cache:node=self.cache[key]node.value=valueself._move_to_head(node)else:iflen(self.cache)==self.capacity:self._remove_tail()new_node=self.Node(key,value)self.cache[key]=new_nodeself._add_to_head(new_node)def_move_to_head(self,node):self._remove_node(node)self._add_to_head(node)def_add_to_head(self,node):node.prev,node.next=self.head,self.head.nextself.head.next.prev=nodeself.head.next=nodedef_remove_node(self,node):prev_node,next_node=node.prev,node.nextprev_node.next,next_node.prev=next_node,prev_nodedef_remove_tail(self):tail=self.tail.prevself._remove_node(tail)delself.cache[tail.key]解析:使用雙向鏈表維護(hù)訪問順序,哈希表記錄節(jié)點。`get`時移動到頭部,`put`時先刪除舊節(jié)點再添加新節(jié)點。時間復(fù)雜度O(1)。3.答案:pythondefisMatch(s,p):dp=[[False](len(p)+1)for_inrange(len(s)+1)]dp[0][0]=Trueforjinrange(2,len(p)+1):ifp[j-1]=='':dp[0][j]=dp[0][j-2]foriinrange(1,len(s)+1):forjinrange(1,len(p)+1):ifp[j-1]==s[i-1]orp[j-1]=='?':dp[i][j]=dp[i-1][j-1]elifp[j-1]=='':dp[i][j]=dp[i][j-2]ordp[i-1][j]returndp[-1][-1]解析:動態(tài)規(guī)劃解法,`dp[i][j]`表示`s[:i]`與`p[:j]`是否匹配。``可匹配零個或多個前一個字符。時間復(fù)雜度O(mn),空間復(fù)雜度O(mn)。4.答案:pythondefquick_sort(arr,low,high):iflow<high:pivot=partition(arr,low,high)quick_sort(arr,low,pivot-1)quick_sort(arr,pivot+1,high)defpartition(arr,low,high):pivot=arr[high]i=low-1forjinrange(low,high):ifarr[j]<=pivot:i+=1arr[i],arr[j]=arr[j],arr[i]arr[i+1],arr[high]=arr[high],arr[i+1]returni+1解析:快速排序核心是分治思想,通過`partition`函數(shù)將數(shù)組劃分為兩部分。平均時間復(fù)雜度O(nlogn),最壞O(n2)(當(dāng)pivot最小或最大時)。5.答案:pythondefisPerfectSquare(n):left,right=1,nwhileleft<=right:mid=(left+right)//2ifmidmid==n:returnTrueelifmidmid<n:left=mid+1else:right=mid-1returnFalse解析:二分查找法,逐步縮小平方根范圍。時間復(fù)雜度O(logn),空間復(fù)雜度O(1)。二、系統(tǒng)設(shè)計與架構(gòu)1.答案:核心組件:-短鏈接生成器:使用哈希函數(shù)(如MD5或Base62)將長鏈接映射為短ID。-分布式存儲:將長鏈接和短ID的映射關(guān)系存儲在Redis(內(nèi)存緩存)或分布式數(shù)據(jù)庫中。-負(fù)載均衡器:多臺短鏈接服務(wù)節(jié)點通過負(fù)載均衡分配請求。-反向解析服務(wù):定時同步短ID和長鏈接,支持快速查詢。分布式方案:-使用Snowflake算法生成全局唯一短ID。-Redis設(shè)置過期時間,自動清理無用的短鏈接。-異步寫入分布式數(shù)據(jù)庫(如HBase),支持高并發(fā)查詢。容災(zāi)措施:-數(shù)據(jù)庫異地多活,主從復(fù)制。-短鏈接生成器使用分布式鎖(如ZooKeeper)。2.答案:數(shù)據(jù)存儲:-關(guān)系型數(shù)據(jù)庫(MySQL):存儲用戶信息、動態(tài)基礎(chǔ)字段(`id`,`user_id`,`content`,`created_at`)。-NoSQL(Redis):緩存熱門Feed流,減少數(shù)據(jù)庫壓力。-消息隊列(Kafka):異步更新關(guān)注者Feed。緩存策略:-Feed流分頁加載時,先查Redis,緩存未命中再查MySQL。-動態(tài)發(fā)布時,先寫入Redis緩存,再異步更新數(shù)據(jù)庫。消息隊列應(yīng)用:-用戶關(guān)注/取關(guān)時,推送消息到Kafka。-關(guān)注者服務(wù)訂閱Kafka,實時更新Feed流。3.答案:限流算法:-令牌桶:每秒生成固定數(shù)量的令牌,請求需持有令牌才能通過。-漏桶:請求以固定速率流出,超限請求排隊等待。存儲方案:-Redis:使用`EXPIRE`設(shè)置令牌桶容量和速率。-本地內(nèi)存:低并發(fā)場景可使用原子操作(如CAS)。熱更新方案:-使用配置中心(如Nacos)動態(tài)下發(fā)限流閾值。-服務(wù)端監(jiān)聽配置變更,實時調(diào)整限流策略。三、數(shù)據(jù)庫與存儲1.答案:MySQLvsRedis:-MySQL:事務(wù)支持、復(fù)雜查詢、ACID兼容,適合結(jié)構(gòu)化數(shù)據(jù)。-Redis:內(nèi)存存儲、高速讀寫,適合緩存熱點數(shù)據(jù)。緩存架構(gòu):-多級緩存:Redis+Memcached(緩存頭信息)。-數(shù)據(jù)同步:MySQL主從復(fù)制+Redis發(fā)布訂閱,保證一致性。2.答案:索引設(shè)計:sqlCREATEINDEXidx_user_statusONorders(user_id,status);CREATEINDEXidx_created_atONorders(created_at);SQL優(yōu)化:sql--查詢未支付訂單SELECTFROMordersWHEREuser_id=?ANDstatus='pending';--分頁查詢SELECTFROMordersWHEREcreated_at>=?ANDcreated_at<?ORDERBYcreated_atDESCLIMIT20;分庫分表:-按`user_id`分表,支持水平擴(kuò)展。-使用ShardingSphere或MyCAT實現(xiàn)路由。四、分布式與中間件1.答案:CAP理論:-百度場景
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全生產(chǎn)事故雙報告制度
- 安全生產(chǎn)資金投入規(guī)定制度
- 精益生產(chǎn)走線管理制度匯編
- 2026中國進(jìn)出口銀行秋招面試題及答案
- 城管安全生產(chǎn)預(yù)警制度
- 建筑施工質(zhì)量檢查標(biāo)準(zhǔn)手冊
- 2026年生物醫(yī)學(xué)工程與儀器MEI研發(fā)人員能力測試
- 2026年IT項目管理專業(yè)知識及操作題集
- 青島營養(yǎng)師職業(yè)發(fā)展前景
- 小學(xué)數(shù)學(xué)題目及答案
- 2021??低旸S-AT1000S超容量系列網(wǎng)絡(luò)存儲設(shè)備用戶手冊
- 水利水電工程單元工程施工質(zhì)量驗收標(biāo)準(zhǔn)第8部分:安全監(jiān)測工程
- 【政治】2025年高考真題政治-海南卷(解析版-1)
- DB50∕T 1571-2024 智能網(wǎng)聯(lián)汽車自動駕駛功能測試規(guī)范
- 低蛋白血癥患者的護(hù)理講課件
- 建設(shè)工程招投標(biāo)培訓(xùn)課件
- T/ZGZS 0302-2023再生工業(yè)鹽氯化鈉
- 健康骨骼課件
- 水泵電機(jī)年度維修項目方案投標(biāo)文件(技術(shù)方案)
- 2024-2025學(xué)年江西省南昌市高二上學(xué)期期末聯(lián)考數(shù)學(xué)試卷(含答案)
- GB/T 6075.6-2024機(jī)械振動在非旋轉(zhuǎn)部件上測量評價機(jī)器的振動第6部分:功率大于100 kW的往復(fù)式機(jī)器
評論
0/150
提交評論