版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2026年網(wǎng)絡(luò)公司研發(fā)崗必刷題庫:菜鳥網(wǎng)絡(luò)研發(fā)經(jīng)理經(jīng)典面試題一、編程語言與數(shù)據(jù)結(jié)構(gòu)(共5題,每題10分)1.題目:請實(shí)現(xiàn)一個(gè)函數(shù),輸入一個(gè)鏈表,反轉(zhuǎn)鏈表后返回反轉(zhuǎn)后的鏈表。鏈表節(jié)點(diǎn)定義如下:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=next要求:時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。2.題目:給定一個(gè)包含n個(gè)整數(shù)的數(shù)組,請你找出其中和最接近0的三個(gè)數(shù)的組合。假設(shè)數(shù)組中的整數(shù)范圍在-10^4到10^4之間,且數(shù)組長度至少為3。例如:輸入數(shù)組[1,60,-10,70,-80,55],輸出[-10,1,55](因?yàn)?10+1+55=46,是距離0最近的和)。3.題目:請實(shí)現(xiàn)一個(gè)LRU(LeastRecentlyUsed)緩存機(jī)制,使用哈希表和雙向鏈表實(shí)現(xiàn),支持get和put操作。要求:-get(key)——返回key對應(yīng)的值,如果不存在返回-1。-put(key,value)——插入或更新key對應(yīng)的值,如果緩存容量已滿,則刪除最久未使用的項(xiàng)。緩存容量為固定值。4.題目:給定一個(gè)字符串,請你找出其中不含有重復(fù)字母的子串的最長長度。例如:輸入"abcabcbb",輸出"abc"的長度3。5.題目:請實(shí)現(xiàn)一個(gè)二叉樹的深度優(yōu)先遍歷(前序、中序、后序),并分別用遞歸和迭代方式實(shí)現(xiàn)。二叉樹節(jié)點(diǎn)定義如下:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=right二、系統(tǒng)設(shè)計(jì)(共3題,每題20分)1.題目:設(shè)計(jì)一個(gè)高并發(fā)的短鏈接系統(tǒng),要求:-支持將任意長度的URL轉(zhuǎn)換為固定長度的短鏈接。-支持通過短鏈接快速反查原始URL。-系統(tǒng)需要具備高可用性和高擴(kuò)展性,支持分布式部署。2.題目:設(shè)計(jì)一個(gè)微博系統(tǒng)的用戶關(guān)注功能,要求:-支持用戶A關(guān)注用戶B,用戶B關(guān)注用戶C。-支持查看用戶A的粉絲列表和關(guān)注列表。-支持實(shí)時(shí)推送關(guān)注者的動態(tài)。-數(shù)據(jù)量可能達(dá)到千萬級別,需要考慮性能優(yōu)化。3.題目:設(shè)計(jì)一個(gè)消息推送系統(tǒng),要求:-支持多種推送渠道(如短信、App推送、微信推送)。-支持定時(shí)推送和實(shí)時(shí)推送。-推送失敗時(shí)需要重試機(jī)制,并記錄推送日志。-系統(tǒng)需要具備高可靠性和低延遲。三、數(shù)據(jù)庫與緩存(共4題,每題15分)1.題目:假設(shè)你正在設(shè)計(jì)一個(gè)電商平臺的訂單表,表結(jié)構(gòu)如下:sqlCREATETABLEorders(idINTPRIMARYKEYAUTO_INCREMENT,user_idINT,product_idINT,order_timeTIMESTAMP,total_amountDECIMAL(10,2),statusENUM('pending','paid','shipped','completed','cancelled'));請寫出以下SQL查詢:-查詢最近30天內(nèi)狀態(tài)為"paid"的訂單數(shù)量。-查詢每個(gè)用戶的訂單總金額,并按金額降序排列。2.題目:請解釋MySQL中的索引類型(如B-Tree索引、哈希索引、全文索引),并說明在什么場景下使用哪種索引。3.題目:假設(shè)你正在使用Redis作為緩存,請寫出以下場景的Redis緩存設(shè)計(jì):-緩存用戶個(gè)人信息,如昵稱、頭像等。-緩存熱點(diǎn)商品數(shù)據(jù),如商品詳情、價(jià)格等。-緩存查詢結(jié)果,如SQL查詢結(jié)果、第三方API調(diào)用結(jié)果。4.題目:請解釋數(shù)據(jù)庫事務(wù)的ACID特性,并說明在什么場景下會出現(xiàn)事務(wù)問題(如臟讀、不可重復(fù)讀、幻讀)。四、分布式與微服務(wù)(共4題,每題15分)1.題目:假設(shè)你正在設(shè)計(jì)一個(gè)分布式事務(wù)系統(tǒng),請解釋以下概念:-CAP理論-2PC(兩階段提交)協(xié)議-TCC(Try-Confirm-Cancel)協(xié)議-Saga模式2.題目:請解釋分布式系統(tǒng)中的常見問題,如:-超時(shí)問題-鎖競爭問題-數(shù)據(jù)一致性問題3.題目:假設(shè)你正在使用Kafka作為消息隊(duì)列,請寫出以下場景的Kafka使用場景:-用戶行為日志采集-微服務(wù)解耦-分布式事務(wù)補(bǔ)償4.題目:請解釋微服務(wù)架構(gòu)中的服務(wù)發(fā)現(xiàn)機(jī)制,并說明常用的服務(wù)發(fā)現(xiàn)工具(如Consul、Eureka、Nacos)。五、網(wǎng)絡(luò)與系統(tǒng)(共3題,每題20分)1.題目:請解釋TCP的三次握手和四次揮手過程,并說明在什么場景下會出現(xiàn)TCP連接問題(如死鎖、超時(shí))。2.題目:請解釋HTTP/1.1和HTTP/2的區(qū)別,并說明HTTP/2的優(yōu)勢。3.題題:假設(shè)你正在設(shè)計(jì)一個(gè)高可用的Web服務(wù),請寫出以下方案:-使用Nginx作為反向代理-使用Keepalived實(shí)現(xiàn)服務(wù)高可用-使用負(fù)載均衡(如LVS、HAProxy)答案與解析一、編程語言與數(shù)據(jù)結(jié)構(gòu)1.反轉(zhuǎn)鏈表pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefreverseList(head:ListNode)->ListNode:prev=Nonecurrent=headwhilecurrent:next_node=current.nextcurrent.next=prevprev=currentcurrent=next_nodereturnprev解析:-使用三個(gè)指針prev、current、next_node實(shí)現(xiàn)鏈表反轉(zhuǎn)。-每次將current的next指向prev,然后移動指針。-時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。2.三數(shù)和最接近0pythondefthreeSumClosest(nums):nums.sort()n=len(nums)closest_sum=sum(nums[:3])foriinrange(n-2):left,right=i+1,n-1whileleft<right:current_sum=nums[i]+nums[left]+nums[right]ifabs(current_sum)<abs(closest_sum):closest_sum=current_sumifcurrent_sum<0:left+=1else:right-=1returnclosest_sum解析:-先排序數(shù)組,然后固定一個(gè)數(shù),使用雙指針法查找另外兩個(gè)數(shù)。-每次計(jì)算三數(shù)之和,并與當(dāng)前最接近0的值比較。-時(shí)間復(fù)雜度O(n^2),空間復(fù)雜度O(1)。3.LRU緩存pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head=ListNode(0)self.tail=ListNode(0)self.head.next=self.tailself.tail.prev=self.headdefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]self._remove(node)self._add(node)returnnode.valuereturn-1defput(self,key:int,value:int)->None:ifkeyinself.cache:self._remove(self.cache[key])node=ListNode(key,value)self.cache[key]=nodeself._add(node)iflen(self.cache)>self.capacity:lru=self.tail.prevself._remove(lru)delself.cache[lru.key]def_remove(self,node):delself.cache[node.key]node.prev.next=node.nextnode.next.prev=node.prevdef_add(self,node):node.next=self.head.nextnode.next.prev=nodeself.head.next=nodenode.prev=self.head解析:-使用雙向鏈表和哈希表實(shí)現(xiàn)LRU緩存。-get操作將節(jié)點(diǎn)移動到鏈表頭部,put操作將新節(jié)點(diǎn)插入頭部,并刪除最久未使用的節(jié)點(diǎn)。-時(shí)間復(fù)雜度O(1),空間復(fù)雜度O(capacity)。4.最長無重復(fù)子串pythondeflengthOfLongestSubstring(s:str)->int:char_set=set()left=0max_len=0forrightinrange(len(s)):whiles[right]inchar_set:char_set.remove(s[left])left+=1char_set.add(s[right])max_len=max(max_len,right-left+1)returnmax_len解析:-使用滑動窗口法,左指針和右指針分別表示子串的左右邊界。-每次移動右指針,如果字符已存在,則移動左指針。-時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(min(m,n)),m為字符集大小。5.二叉樹遍歷前序遍歷(遞歸)pythondefpreorderTraversal(root:TreeNode)->List[int]:result=[]defdfs(node):ifnotnode:returnresult.append(node.val)dfs(node.left)dfs(node.right)dfs(root)returnresult前序遍歷(迭代)pythondefpreorderTraversal(root:TreeNode)->List[int]:ifnotroot:return[]stack,result=[root],[]whilestack:node=stack.pop()result.append(node.val)ifnode.right:stack.append(node.right)ifnode.left:stack.append(node.left)returnresult中序遍歷(遞歸)pythondefinorderTraversal(root:TreeNode)->List[int]:result=[]defdfs(node):ifnotnode:returndfs(node.left)result.append(node.val)dfs(node.right)dfs(root)returnresult中序遍歷(迭代)pythondefinorderTraversal(root:TreeNode)->List[int]:stack,result,node=[],[],rootwhilestackornode:whilenode:stack.append(node)node=node.leftnode=stack.pop()result.append(node.val)node=node.rightreturnresult后序遍歷(遞歸)pythondefpostorderTraversal(root:TreeNode)->List[int]:result=[]defdfs(node):ifnotnode:returndfs(node.left)dfs(node.right)result.append(node.val)dfs(root)returnresult后序遍歷(迭代)pythondefpostorderTraversal(root:TreeNode)->List[int]:stack1,stack2,result=[root],[],[]whilestack1:node=stack1.pop()ifnode:stack2.append(node)stack1.append(node.left)stack1.append(node.right)whilestack2:node=stack2.pop()result.append(node.val)returnresult解析:-前序遍歷先訪問根節(jié)點(diǎn),中序遍歷左-根-右,后序遍歷左-右-根。-遞歸方式簡單直觀,迭代方式需要借助棧實(shí)現(xiàn)。二、系統(tǒng)設(shè)計(jì)1.短鏈接系統(tǒng)設(shè)計(jì)思路:-使用哈希算法(如MD5、SHA1)將長URL轉(zhuǎn)換為固定長度的短鏈接。-使用分布式緩存(如Redis)存儲短鏈接與長URL的映射關(guān)系。-使用分布式ID生成器(如Snowflake)生成唯一短鏈接。-使用負(fù)載均衡(如Nginx)分發(fā)請求。偽代碼:pythondefgenerate_short_url(long_url):hash_value=md5(long_url).hexdigest()short_url=base58.encode(int(hash_value,16))redis.set(short_url,long_url)returnshort_url2.微博關(guān)注功能設(shè)計(jì)思路:-使用關(guān)系型數(shù)據(jù)庫(如MySQL)存儲用戶關(guān)系表,表結(jié)構(gòu)如下:sqlCREATETABLEfollow關(guān)系(follower_idINT,followee_idINT,PRIMARYKEY(follower_id,followee_id));-使用Redis緩存用戶關(guān)注列表和粉絲列表。-使用消息隊(duì)列(如Kafka)實(shí)時(shí)推送關(guān)注者動態(tài)。偽代碼:pythondeffollow(userA,userB):db.insert("follow關(guān)系",follower_id=userA,followee_id=userB)redis.sadd(f"{userA}_fans",userB)redis.sadd(f"{userB}_followers",userA)kafka.send("follow_topic",userA,userB)3.消息推送系統(tǒng)設(shè)計(jì)思路:-使用消息隊(duì)列(如RabbitMQ、Kafka)接收推送請求。-使用定時(shí)任務(wù)(如Celery)處理定時(shí)推送。-使用Redis存儲推送狀態(tài)和重試次數(shù)。-使用分布式服務(wù)(如PushService)負(fù)責(zé)具體推送邏輯。偽代碼:pythondefpush_message(user_id,channel,message,delay=0):ifdelay>0:celery.schedule(delay,push_service.push,args=(user_id,channel,message))else:push_service.push(user_id,channel,message)三、數(shù)據(jù)庫與緩存1.訂單表SQL查詢sql--查詢最近30天內(nèi)狀態(tài)為"paid"的訂單數(shù)量SELECTCOUNT()ASpaid_order_countFROMordersWHEREstatus='paid'ANDorder_time>NOW()-INTERVAL30DAY;--查詢每個(gè)用戶的訂單總金額,并按金額降序排列SELECTuser_id,SUM(total_amount)AStotal_amountFROMordersGROUPBYuser_idORDERBYtotal_amountDESC;2.索引類型-B-Tree索引:適用于范圍查詢和排序,如`order_time>'2023-01-01'`。-哈希索引:適用于精確查詢,如`user_id=100`。-全文索引:適用于文本搜索,如`nameLIKE'%張%'`。3.Redis緩存設(shè)計(jì)-用戶信息緩存:使用`SETuser:100:nickname"Alice"`存儲用戶昵稱,過期時(shí)間1小時(shí)。-熱點(diǎn)商品緩存:使用`SETproduct:1000:details'{"name":"iPhone15",...}'`存儲商品詳情,過期時(shí)間10分鐘。-查詢結(jié)果緩存:使用`SETquery:orders'{"time":"2023-01-01","count":100}'`緩存SQL查詢結(jié)果,過期時(shí)間5分鐘。4.事務(wù)問題-臟讀:一個(gè)事務(wù)讀取了另一個(gè)未提交事務(wù)的數(shù)據(jù)。-不可重復(fù)讀:一個(gè)事務(wù)多次讀取同一數(shù)據(jù),但數(shù)據(jù)被其他事務(wù)修改。-幻讀:一個(gè)事務(wù)多次讀取同一范圍的數(shù)據(jù),但其他事務(wù)插入了新的數(shù)據(jù)。四、分布式與微服務(wù)1.分布式事務(wù)-CAP理論:一致性(Consisten
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安全生產(chǎn)月電氣測試試題及答案
- 工業(yè)機(jī)器人系統(tǒng)操作員(三級)職業(yè)鑒定理論考試題及答案(新版)
- 2025年人工智能應(yīng)用技術(shù)考試試卷及答案
- 建設(shè)工程施工合同糾紛要素式起訴狀模板要素清晰無混淆
- 2026年動物園管理提升
- 2026 年離婚協(xié)議書正式合規(guī)版
- 統(tǒng)編版九年級上冊歷史期末質(zhì)量監(jiān)測試卷(含答案)
- 食堂反食品浪費(fèi)管理制度
- 環(huán)衛(wèi)考核培訓(xùn)
- 門店規(guī)章制度守則7篇
- JGJ256-2011 鋼筋錨固板應(yīng)用技術(shù)規(guī)程
- 上海建橋?qū)W院簡介招生宣傳
- 《智慧教育黑板技術(shù)規(guī)范》
- 《電力建設(shè)安全工作規(guī)程》-第1部分火力發(fā)電廠
- 歌曲《我會等》歌詞
- 八年級物理上冊期末測試試卷-附帶答案
- 小學(xué)英語五年級上冊Unit 5 Part B Let's talk 教學(xué)設(shè)計(jì)
- 老年癡呆科普課件整理
- 學(xué)生校服供應(yīng)服務(wù)實(shí)施方案
- GB/T 22900-2022科學(xué)技術(shù)研究項(xiàng)目評價(jià)通則
- 自動控制系統(tǒng)的類型和組成
評論
0/150
提交評論