版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2026年技術(shù)部軟件工程師面試題及答案一、編程題(共3題,每題20分,總分60分)1.題目(20分):編寫一個函數(shù),實現(xiàn)將任意長度為N的鏈表進行反轉(zhuǎn)。鏈表節(jié)點定義如下:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=next要求:-時間復(fù)雜度O(N),空間復(fù)雜度O(1)。-示例輸入:`1->2->3->4->5`,輸出:`5->4->3->2->1`。2.題目(20分):實現(xiàn)一個LRU(LeastRecentlyUsed)緩存機制,支持以下操作:-`get(key)`:獲取鍵對應(yīng)的值,若不存在返回-1。-`put(key,value)`:插入或更新鍵值對,當(dāng)緩存容量滿時,刪除最久未使用的項。要求:-使用哈希表和雙向鏈表實現(xiàn),支持O(1)時間復(fù)雜度。-示例:-`put(1,1)`→緩存:{1:1}-`put(2,2)`→緩存:{1:1,2:2}-`get(1)`→返回1-`put(3,3)`→緩存容量滿,刪除鍵1,緩存:{2:2,3:3}-`get(2)`→返回23.題目(20分):給定一個包含重復(fù)元素的數(shù)組,返回所有不重復(fù)的全排列。要求:-使用回溯法實現(xiàn),避免重復(fù)排列。-示例輸入:`[1,1,2]`,輸出:`[1,1,2],[1,2,1],[2,1,1]`。二、算法題(共4題,每題15分,總分60分)1.題目(15分):給定一個非空字符串,統(tǒng)計其中字母的頻率(區(qū)分大小寫),并返回按頻率降序排列的字符串。示例輸入:`"tree"`,輸出:`"eetr"`(e:2,t:1,r:1)。2.題目(15分):實現(xiàn)二叉樹的層序遍歷(BFS),返回結(jié)果為列表形式。示例輸入:3/\920/\157輸出:`[[3],[9,20],[15,7]]`。3.題目(15分):給定兩個字符串,判斷是否可以通過插入少量字符使其中一個字符串變?yōu)榱硪粋€字符串的子序列。示例輸入:`s="abc"`,`t="ahbgdc"`,輸出:`True`(插入`h`和`g`)。4.題目(15分):實現(xiàn)快速排序算法,要求不使用遞歸,改用迭代方式實現(xiàn)。三、系統(tǒng)設(shè)計題(共2題,每題25分,總分50分)1.題目(25分):設(shè)計一個高并發(fā)的短鏈接服務(wù)(如TinyURL),要求:-支持高并發(fā)訪問(QPS>10000)。-支持自定義短鏈接前綴(如`/abc`)。-支持鏈路狀態(tài)監(jiān)控(如點擊統(tǒng)計)。2.題目(25分):設(shè)計一個分布式任務(wù)隊列(如Kafka),要求:-支持消息持久化(不丟失)。-支持消息重試機制(失敗任務(wù)自動重發(fā))。-支持消息分片和負載均衡。四、數(shù)據(jù)庫題(共2題,每題20分,總分40分)1.題目(20分):設(shè)計一個電商訂單表,要求:-支持高并發(fā)寫入(每秒數(shù)千筆訂單)。-支持訂單狀態(tài)實時查詢(如待支付、已發(fā)貨)。-支持按時間范圍和用戶ID統(tǒng)計訂單數(shù)量。2.題目(20分):解釋MySQL中的事務(wù)隔離級別(讀未提交、讀已提交、可重復(fù)讀、串行化),并說明臟讀、不可重復(fù)讀、幻讀的區(qū)別。五、綜合題(共2題,每題20分,總分40分)1.題目(20分):某電商平臺需要實時計算用戶購買行為的熱度指數(shù)(如“爆款”商品),要求:-數(shù)據(jù)源包括用戶點擊、加購、下單等行為。-熱度指數(shù)需考慮時間衰減(如近1小時權(quán)重更高)。-支持實時更新和異步計算。2.題目(20分):設(shè)計一個分布式爬蟲系統(tǒng),要求:-支持URL去重(使用布隆過濾器)。-支持多線程/多進程并發(fā)抓取。-支持反爬蟲策略應(yīng)對(如驗證碼識別)。答案與解析一、編程題答案與解析1.鏈表反轉(zhuǎn)(20分):pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefreverseList(head:ListNode)->ListNode:prev=Nonecurrent=headwhilecurrent:next_node=current.next#暫存下一個節(jié)點current.next=prev#反轉(zhuǎn)指針prev=current#移動prev和currentcurrent=next_nodereturnprev解析:-使用迭代法,通過`prev`和`current`兩個指針實現(xiàn)。每次將當(dāng)前節(jié)點的`next`指向前一個節(jié)點,并移動指針。-時間復(fù)雜度O(N),空間復(fù)雜度O(1)。2.LRU緩存(20分):pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head,self.tail=ListNode(0,0),ListNode(0,0)self.head.next,self.tail.prev=self.tail,self.headdefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]self._remove(node)self._add(node)returnnode.valreturn-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:ListNode)->None:delself.cache[node.key]node.prev.next=node.nextnode.next.prev=node.prevdef_add(self,node:ListNode)->None:node.next=self.head.nextnode.next.prev=nodeself.head.next=nodenode.prev=self.head解析:-使用雙向鏈表+哈希表實現(xiàn)。鏈表頭部為最近使用,尾部為最久未使用。哈希表記錄鍵值對,支持O(1)訪問。-`get`操作將節(jié)點移動到鏈表頭部,`put`操作先刪除舊節(jié)點,再插入新節(jié)點并檢查是否需要淘汰。3.全排列(20分):pythondefpermuteUnique(nums):res=[]nums.sort()#排序去重used=[False]len(nums)defbacktrack(path):iflen(path)==len(nums):res.append(path[:])returnforiinrange(len(nums)):ifused[i]:continueifi>0andnums[i]==nums[i-1]andnotused[i-1]:continueused[i]=Truepath.append(nums[i])backtrack(path)path.pop()used[i]=Falsebacktrack([])returnres解析:-使用回溯法,通過`used`數(shù)組記錄已使用節(jié)點,避免重復(fù)。-排序后跳過相同元素的前一個(若當(dāng)前元素與前一元素相同且前一元素未使用),防止重復(fù)排列。二、算法題答案與解析1.字母頻率統(tǒng)計(15分):pythondeffrequencySort(s:str)->str:freq=[0]128forcins:freq[ord(c)]+=1chars=sorted(s,key=lambdax:(-freq[ord(x)],x))return''.join(chars)解析:-統(tǒng)計每個字符頻率,然后按頻率降序排列(頻率相同按字母順序)。-時間復(fù)雜度O(NlogN),空間復(fù)雜度O(N)。2.二叉樹層序遍歷(15分):pythonfromcollectionsimportdequefromtypingimportList,OptionalclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdeflevelOrder(root:Optional[TreeNode])->List[List[int]]:ifnotroot:return[]res,queue=[],deque([root])whilequeue:level=[]for_inrange(len(queue)):node=queue.popleft()level.append(node.val)ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)res.append(level)returnres解析:-使用隊列實現(xiàn)BFS,按層遍歷節(jié)點。每層將節(jié)點值加入`level`,最后加入`res`。3.子序列判斷(15分):pythondefisSubsequence(s:str,t:str)->bool:m,n=len(s),len(t)i,j=0,0whilei<mandj<n:ifs[i]==t[j]:i+=1j+=1returni==m解析:-雙指針法,`i`遍歷`s`,`j`遍歷`t`。若`s[i]==t[j]`,則`i`移動。最終判斷`s`是否全部匹配。4.快速排序(迭代版)(15分):pythondefquickSort(arr):stack=[(0,len(arr)-1)]whilestack:left,right=stack.pop()ifleft>=right:continuepivot=arr[right]i=left-1forjinrange(left,right):ifarr[j]<=pivot:i+=1arr[i],arr[j]=arr[j],arr[i]arr[i+1],arr[right]=arr[right],arr[i+1]stack.append((left,i))stack.append((i+2,right))returnarr解析:-使用棧模擬遞歸,避免遞歸調(diào)用棧。核心思想與遞歸版一致:分治法,選擇基準值并分區(qū)。三、系統(tǒng)設(shè)計題答案與解析1.短鏈接服務(wù)(25分):核心組件:-ID生成器:使用Snowflake算法生成唯一ID(含時間戳、機器ID、序列號)。-哈希映射:將ID映射到短鏈接(如`/a1b2c3`)。-緩存層:Redis緩存熱點短鏈接,加速訪問。-數(shù)據(jù)庫:MySQL存儲完整映射關(guān)系,支持查詢和更新。-負載均衡:Nginx分發(fā)請求,支持水平擴展。偽代碼:pythondefgenerate_short_url(long_url):id=snowflake_generator()hash_url=hash(id)#簡化示例short_url=f"/{hash_url}"db.insert(id,long_url)redis.set(short_url,long_url,expire=3600)returnshort_url解析:-Snowflake算法保證ID唯一性,哈希映射快速查詢。緩存層提升性能,數(shù)據(jù)庫持久化數(shù)據(jù)。2.分布式任務(wù)隊列(25分):核心組件:-生產(chǎn)者:添加任務(wù)到Kafka分區(qū)(如`tasks`主題)。-消費者:按分區(qū)消費任務(wù),失敗重試(如RabbitMQ死信隊列)。-消息存儲:Kafka持久化消息,保證不丟失。-監(jiān)控:Prometheus統(tǒng)計延遲、失敗率。偽代碼:pythondefadd_task(task):kafka_producer.send("tasks",task)解析:-Kafka支持分區(qū)和副本,保證高可用。死信隊列處理失敗任務(wù),監(jiān)控組件實時反饋系統(tǒng)狀態(tài)。四、數(shù)據(jù)庫題答案與解析1.電商訂單表設(shè)計(20分):sqlCREATETABLEorders(idBIGINTAUTO_INCREMENTPRIMARYKEY,user_idBIGINT,order_timeTIMESTAMPDEFAULTCURRENT_TIMESTAMP,statusENUM('pending','paid','shipped','completed'),amountDECIMAL(10,2),INDEXidx_user_time(user_id,order_time));解析:-使用`BIGINT`存儲ID和用戶ID,避免溢出。`TIMESTAMP`記錄時間,`ENUM`限制狀態(tài)。索引優(yōu)化查詢。2.事務(wù)隔離級別(20分):-讀未提交:可能臟讀(B讀取A未提交的數(shù)據(jù),A回滾)。-讀已提交:避免臟讀,但不可重復(fù)讀(B讀取A已提交的數(shù)據(jù),A再次修改)。-可重復(fù)讀:避免臟讀和不可重復(fù)讀,但幻讀(B掃描A已提交的新行)。-串行化:完全隔離,但性能最低。解析:-MySQL默認隔離級別為可重復(fù)讀,可通過`SETTRANSACTIONISOLATIONLEVEL`調(diào)整。五、綜合題答案與解析1.熱度指數(shù)計算(20分):核心邏輯:-用戶行為加權(quán):點擊0.1+加購0.3+下單1.0。-時間衰減:`weight=deca
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 規(guī)范性文件制定管理制度
- 相關(guān)核心制度與規(guī)范要求
- 酒店新旅客登記制度規(guī)范
- 萬科營銷管理制度規(guī)范
- 陪護家屬管理規(guī)范化制度
- 門衛(wèi)室制度上墻規(guī)范標準
- 生鮮操作流程與制度規(guī)范
- 企業(yè)員工規(guī)范管理制度
- 瓶裝液化氣配送制度規(guī)范
- 生產(chǎn)管理相關(guān)制度及規(guī)范
- 原材料進場驗收制度規(guī)范
- 物業(yè)公司競標方案
- 施工員個人工作總結(jié)課件
- 四川省瀘州市2026屆數(shù)學(xué)高二上期末統(tǒng)考試題含解析
- 2026湖北武漢市文旅集團市場化選聘部分中層管理人員4人筆試參考題庫及答案解析
- 中國金融電子化集團有限公司2026年度校園招聘備考題庫及一套完整答案詳解
- 生物實驗探究教學(xué)中學(xué)生實驗探究能力培養(yǎng)與評價體系研究教學(xué)研究課題報告
- 華東理工大學(xué)2026年公開招聘工作人員46名備考題庫(含答案詳解)
- 《急性主動脈綜合征診斷與治療規(guī)范中國專家共識(2021版)》重點
- 2025中華護理學(xué)會團體標準-無創(chuàng)正壓通氣護理技術(shù)
- 雨課堂在線學(xué)堂《社會研究方法》作業(yè)單元考核答案
評論
0/150
提交評論