版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2026年美團(tuán)技術(shù)專家面試題及答案詳解一、編程基礎(chǔ)與數(shù)據(jù)結(jié)構(gòu)(共5題,每題8分,總分40分)1.題目:給定一個包含重復(fù)元素的數(shù)組,請編寫代碼找出所有不重復(fù)的三元組,使得這三個數(shù)的和等于給定的目標(biāo)值。例如,輸入數(shù)組`[1,-1,0,1,2]`,目標(biāo)值`0`,輸出`[-1,0,1]`和`[1,1,-2]`。要求時間復(fù)雜度為`O(n^2)`。答案與解析:pythondefthree_sum(nums,target):nums.sort()n=len(nums)res=[]foriinrange(n-2):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==target:res.append([nums[i],nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1right-=1eliftotal<target:left+=1else:right-=1returnres解析:1.首先對數(shù)組進(jìn)行排序,便于使用雙指針法。2.遍歷數(shù)組,對于每個`nums[i]`,使用雙指針`left`和`right`分別指向`i+1`和`n-1`,計算三數(shù)之和。3.如果和等于目標(biāo)值,將三元組加入結(jié)果列表,并跳過重復(fù)的`left`和`right`值。4.如果和小于目標(biāo)值,移動`left`指針;如果大于目標(biāo)值,移動`right`指針。5.最終返回所有不重復(fù)的三元組。2.題目:設(shè)計一個LRU(LeastRecentlyUsed)緩存,支持`get`和`put`操作。`get(key)`返回鍵對應(yīng)的值,如果不存在返回`-1`;`put(key,value)`將鍵值對插入緩存,如果鍵已存在則更新值,如果緩存已滿則刪除最久未使用的鍵。要求實現(xiàn)空間復(fù)雜度為`O(n)`。答案與解析:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:int)->int:ifkeyinself.cache:self.order.remove(key)self.order.append(key)returnself.cache[key]return-1defput(self,key:int,value:int)->None:ifkeyinself.cache:self.order.remove(key)eliflen(self.cache)>=self.capacity:oldest_key=self.order.pop(0)delself.cache[oldest_key]self.cache[key]=valueself.order.append(key)解析:1.使用字典`cache`存儲鍵值對,列表`order`記錄訪問順序。2.`get`操作:如果鍵存在,將其移到`order`尾部(表示最近訪問),返回值;否則返回`-1`。3.`put`操作:如果鍵已存在,更新值并移動到尾部;如果緩存已滿,刪除`order`頭部元素(最久未使用),并從`cache`中刪除對應(yīng)鍵;否則直接添加到`cache`和`order`尾部。3.題目:給定一個二叉樹,判斷其是否是平衡二叉樹(即任意節(jié)點(diǎn)的左右子樹高度差不超過1)。例如,`[3,9,20,null,null,15,7]`是平衡二叉樹。答案與解析:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefis_balanced(root:TreeNode)->bool:defcheck(node:TreeNode)->int:ifnotnode:return0left=check(node.left)right=check(node.right)ifleft==-1orright==-1orabs(left-right)>1:return-1returnmax(left,right)+1returncheck(root)!=-1解析:1.定義遞歸函數(shù)`check`,返回節(jié)點(diǎn)的高度。如果任意節(jié)點(diǎn)不平衡(左右子樹高度差>1或子樹本身不平衡),返回`-1`。2.遍歷每個節(jié)點(diǎn),計算左右子樹高度,判斷是否滿足平衡條件。3.如果所有節(jié)點(diǎn)都滿足,返回`True`;否則`False`。4.題目:實現(xiàn)一個函數(shù),判斷一個字符串是否是回文串(忽略大小寫和非字母字符)。例如,`"Aman,aplan,acanal:Panama"`是回文串。答案與解析:pythondefis_palindrome(s:str)->bool:s=''.join(c.lower()forcinsifc.isalnum())returns==s[::-1]解析:1.將字符串轉(zhuǎn)換為小寫,并過濾掉非字母數(shù)字字符。2.判斷處理后的字符串是否與反轉(zhuǎn)字符串相同。如果相同,是回文串;否則不是。5.題目:給定一個鏈表,反轉(zhuǎn)其節(jié)點(diǎn)順序。例如,`1->2->3->4->5`反轉(zhuǎn)后為`5->4->3->2->1`。答案與解析:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefreverse_list(head:ListNode)->ListNode:prev,curr=None,headwhilecurr:next_node=curr.nextcurr.next=prevprev=currcurr=next_nodereturnprev解析:1.使用三個指針`prev`、`curr`和`next_node`。2.遍歷鏈表,每次將`curr.next`指向`prev`,然后移動指針。3.最終`prev`成為新的頭節(jié)點(diǎn)。二、算法設(shè)計(共3題,每題12分,總分36分)1.題目:美團(tuán)外賣系統(tǒng)需要處理大量的訂單,假設(shè)每個訂單有一個唯一的`order_id`和一個`timestamp`。請設(shè)計一個算法,統(tǒng)計在某個時間窗口內(nèi)(例如過去5分鐘)的訂單數(shù)量。要求時間復(fù)雜度為`O(1)`。答案與解析:pythonclassWindowCounter:def__init__(self):self.counts={}self.current_time=0defadd_order(self,order_id:int,timestamp:int):iftimestamp-self.current_time>300:#5分鐘=300秒self.counts={}self.current_time=timestampself.counts[order_id]=timestampdefcount_in_window(self)->int:returnlen(self.counts)解析:1.使用字典`counts`存儲訂單的`order_id`和`timestamp`。2.添加訂單時,如果當(dāng)前時間與上次更新時間差超過5分鐘,清空字典并更新時間。3.統(tǒng)計窗口內(nèi)訂單數(shù)量即為`counts`的長度。2.題目:美團(tuán)點(diǎn)評需要推薦用戶可能感興趣的商品。給定用戶歷史行為數(shù)據(jù)(如購買記錄),請設(shè)計一個簡單的協(xié)同過濾算法,為用戶推薦相似用戶購買過的商品。要求實現(xiàn)步驟清晰。答案與解析:1.數(shù)據(jù)預(yù)處理:統(tǒng)計每個用戶購買的商品,構(gòu)建用戶-商品矩陣。2.相似度計算:使用余弦相似度計算用戶之間的相似度。3.推薦生成:對于目標(biāo)用戶,找到最相似的`k`個用戶,推薦這些用戶購買過但目標(biāo)用戶未購買的商品。pythonimportnumpyasnpdefcosine_similarity(vec1,vec2):dot_product=np.dot(vec1,vec2)norm1=np.linalg.norm(vec1)norm2=np.linalg.norm(vec2)returndot_product/(norm1norm2)defrecommend(user_id,user_item_matrix,k=5):user_vector=user_item_matrix[user_id]similarities={}forother_id,other_vectorinenumerate(user_item_matrix):ifother_id!=user_id:sim=cosine_similarity(user_vector,other_vector)similarities[other_id]=simtop_k_users=sorted(similarities,key=similarities.get,reverse=True)[:k]recommendations=set()foruserintop_k_users:foritem,boughtinenumerate(user_item_matrix[user]):ifboughtanditemnotinuser_item_matrix[user_id]:recommendations.add(item)returnrecommendations解析:1.余弦相似度計算用戶行為的向量夾角,值越大越相似。2.推薦時忽略用戶自己已購買的商品。3.題目:美團(tuán)地圖需要優(yōu)化路徑規(guī)劃,給定起點(diǎn)和終點(diǎn),以及可能的中間興趣點(diǎn)(如餐廳、加油站),請設(shè)計一個算法,在保證最短路徑的同時,盡可能覆蓋更多興趣點(diǎn)。要求時間復(fù)雜度合理。答案與解析:1.問題建模:將路徑規(guī)劃問題轉(zhuǎn)化為圖論中的路徑覆蓋問題,使用動態(tài)規(guī)劃或回溯法。2.動態(tài)規(guī)劃:定義`dp[mask][u]`表示從節(jié)點(diǎn)`u`出發(fā),覆蓋`mask`中的節(jié)點(diǎn)時最短路徑長度。3.轉(zhuǎn)移方程:枚舉所有子集,更新`dp`值,最終選擇覆蓋最多興趣點(diǎn)的最優(yōu)路徑。pythondefoptimal_path_with_interests(start,end,interests):fromitertoolsimportcombinationsn=len(interests)+2#起點(diǎn)和終點(diǎn)graph=[[float('inf')]nfor_inrange(n)]foriinrange(n):graph[i][i]=0填充圖(簡化示例)foriinrange(n):forjinrange(i+1,n):graph[i][j]=graph[j][i]=abs(interests[i][0]-interests[j][0])+abs(interests[i][1]-interests[j][1])dp=[[float('inf')]nfor_inrange(1<<n)]dp[1<<start][start]=0formaskinrange(1<<n):foruinrange(n):ifdp[mask][u]==float('inf'):continueforvinrange(n):ifnot(mask&(1<<v))andgraph[u][v]!=float('inf'):dp[mask|(1<<v)][v]=min(dp[mask|(1<<v)][v],dp[mask][u]+graph[u][v])returndp[(1<<n)-1][end]解析:1.使用狀態(tài)壓縮動態(tài)規(guī)劃,`mask`表示已訪問的節(jié)點(diǎn)集合。2.轉(zhuǎn)移時枚舉所有可能的下一個節(jié)點(diǎn),更新`dp`值。3.最終返回覆蓋所有興趣點(diǎn)的最短路徑。三、系統(tǒng)設(shè)計(共2題,每題20分,總分40分)1.題目:設(shè)計一個美團(tuán)外賣的實時訂單分配系統(tǒng),要求系統(tǒng)能夠高效地將新訂單分配給距離用戶最近的騎手,并支持騎手狀態(tài)實時更新(如正在接單、已完成訂單)。要求說明系統(tǒng)架構(gòu)、關(guān)鍵模塊和數(shù)據(jù)存儲方案。答案與解析:1.系統(tǒng)架構(gòu):-訂單模
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 律師諒解協(xié)議書
- 床品清洗協(xié)議書
- 廣西出境合同范本
- 應(yīng)急保供協(xié)議書
- 證券跳槽協(xié)議書
- 引進(jìn)項目協(xié)議書
- 藥師聘請協(xié)議書
- 裝修受傷協(xié)議書
- 怎樣打開協(xié)議書
- 異地置換協(xié)議書
- 北師大版八年級數(shù)學(xué)上冊全冊同步練習(xí)
- 制造業(yè)數(shù)字化轉(zhuǎn)型公共服務(wù)平臺可行性研究報告
- 氫能與燃料電池技術(shù) 課件 5-燃料電池
- DG-TJ08-2011-2007 鋼結(jié)構(gòu)檢測與鑒定技術(shù)規(guī)程
- 【課件】臺灣的社區(qū)總體營造
- 重慶市兩江新區(qū)2023-2024學(xué)年五年級上學(xué)期英語期末試卷
- BGO晶體、LYSO晶體、碲鋅鎘晶體項目可行性研究報告寫作模板-備案審批
- 昆明理工大學(xué)《機(jī)器學(xué)習(xí)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2023版國開電大本科《高級財務(wù)會計》在線形考(任務(wù)一至四)試題及答案
- 難治性類風(fēng)濕關(guān)節(jié)炎的診治進(jìn)展
- 城鎮(zhèn)職工醫(yī)療保險
評論
0/150
提交評論