版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2026年騰訊技術專家面試題集及答案詳解一、編程題(共5題,每題20分)題目1(20分)實現(xiàn)一個LRU(LeastRecentlyUsed)緩存機制,要求:1.支持自動刪除最久未使用項2.提供get(key)和put(key,value)操作3.時間復雜度為O(1)4.使用Python實現(xiàn)答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:str)->int:ifkeyinself.cache:更新訪問順序self.order.remove(key)self.order.append(key)returnself.cache[key]return-1defput(self,key:str,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)解析:-使用哈希表實現(xiàn)O(1)的get操作-使用雙向鏈表維護訪問順序,實現(xiàn)O(1)的put操作-當緩存容量滿時,刪除鏈表頭部元素(最久未使用)-實現(xiàn)過程中注意key存在時的順序更新題目2(20分)給定一個包含n個點的無向圖,點編號從0到n-1。每個點有一個權值,你需要找到一個路徑,使得:1.路徑經(jīng)過所有點至少一次2.路徑總權值最小3.路徑可以重復經(jīng)過點4.請返回最小總權值答案:pythondefmin_weighted_hamiltonian_path(n,edges,weights):fromheapqimportheappop,heappush構建鄰接表graph={i:[]foriinrange(n)}for(u,v)inedges:graph[u].append((v,weights[u]))graph[v].append((u,weights[v]))暴力解法(適用于小規(guī)模問題)實際面試可能需要啟發(fā)式算法或近似解ifn<=10:預處理所有點的排列fromitertoolsimportpermutationsmin_cost=float('inf')forperminpermutations(range(n)):ifperm[0]==0:#確保從0開始cost=0foriinrange(n-1):u,v=perm[i],perm[i+1]找到相鄰邊的最小權值min_edge=float('inf')for(x,w)ingraph[u]:ifx==v:min_edge=min(min_edge,w)cost+=min_edgemin_cost=min(min_cost,cost)returnmin_costelse:對于大規(guī)模問題,使用啟發(fā)式算法這里提供近似解思路return"對于大規(guī)模問題,可以使用貪心算法或近似算法"解析:-小規(guī)模問題使用暴力枚舉所有排列-大規(guī)模問題需要使用啟發(fā)式算法(如貪心算法或近似算法)-貪心策略:每次選擇當前未訪問點中與已訪問點連接權值最小的邊-注意題目允許重復經(jīng)過點,但要求經(jīng)過所有點至少一次-真實面試中可能需要根據(jù)n的大小決定使用哪種算法題目3(20分)實現(xiàn)一個字符串匹配算法,要求:1.支持在文本串中查找多個模式串2.時間復雜度為O(n+mk),其中n是文本長度,m是模式串長度,k是模式串數(shù)量3.支持正則表達式匹配(簡單版本)4.使用C++實現(xiàn)答案:cppinclude<vector>include<string>include<unordered_map>classMultiPatternMatcher{public:MultiPatternMatcher(conststd::vector<std::string>&patterns){for(constauto&pattern:patterns){buildNextArray(pattern);}}std::vector<int>match(conststd::string&text){std::vector<int>results;for(inti=0;i<patterns.size();++i){intpos=search(text,patterns[i]);if(pos!=-1){results.push_back(pos);}}returnresults;}private:std::vector<std::string>patterns;std::vector<std::vector<int>>next;voidbuildNextArray(conststd::string&pattern){intm=pattern.size();next.emplace_back(m,-1);intj=-1;for(inti=1;i<m;++i){while(j>=0&&pattern[i]!=pattern[j]){j=next[i-1][j];}if(pattern[i]==pattern[j]){j++;}next.back()[i]=j;}}intsearch(conststd::string&text,conststd::string&pattern){intn=text.size();intm=pattern.size();if(m==0)return0;std::vector<int>next_array=next[patterns.index(pattern)];intj=-1;for(inti=0;i<n;++i){while(j>=0&&text[i]!=pattern[j]){j=next_array[j];}if(text[i]==pattern[j]){j++;}if(j==m){returni-m+1;}}return-1;}};解析:-使用KMP算法的多模式匹配變體-構建每個模式串的next數(shù)組(部分匹配表)-對每個模式串獨立進行KMP匹配-時間復雜度滿足O(n+mk)要求-對于正則表達式匹配,可以在此基礎上擴展支持特殊字符題目4(20分)實現(xiàn)一個分布式鎖服務,要求:1.支持多個客戶端獲取和釋放鎖2.確保同一時間只有一個客戶端持有鎖3.支持鎖超時機制4.使用Python實現(xiàn)答案:pythonimportthreadingimporttimeimportuuidimportsocketclassDistributedLock:def__init__(self):self.lock=threading.Lock()self.locks={}#{resource_id:(client_id,timestamp)}self.server_id=str(uuid.uuid4())self.host=socket.gethostname()defacquire(self,resource_id,timeout=10):"""獲取分布式鎖"""deadline=time.time()+timeoutclient_id=f"{self.server_id}-{socket.gethostname()}:{uuid.uuid4()}"whiletime.time()<deadline:withself.lock:ifresource_idnotinself.locks:self.locks[resource_id]=(client_id,time.time())returnTrue輪詢等待time.sleep(0.01)returnFalsedefrelease(self,resource_id):"""釋放分布式鎖"""withself.lock:ifresource_idinself.locksandself.locks[resource_id][0]==client_id:delself.locks[resource_id]defis_locked(self,resource_id):"""檢查鎖狀態(tài)"""withself.lock:returnresource_idinself.locks解析:-使用本地鎖保護全局狀態(tài)-每個資源記錄持有者和服務端ID-實現(xiàn)鎖超時機制,避免死鎖-通過唯一標識符區(qū)分不同服務器的客戶端-實際生產環(huán)境可能需要結合Redis等存儲實現(xiàn)更可靠的分布式鎖題目5(20分)設計一個消息隊列系統(tǒng),要求:1.支持發(fā)布/訂閱模式2.支持消息持久化3.支持消息確認機制4.支持至少一次傳遞保證5.使用Java實現(xiàn)答案:javaimportjava.util.;importjava.util.concurrent.;publicclassMessageQueue{privatestaticclassMessage{Stringcontent;longtimestamp;Stringpublisher;booleanacknowledged;Message(Stringcontent,Stringpublisher){this.content=content;this.timestamp=System.currentTimeMillis();this.publisher=publisher;this.acknowledged=false;}}privateMap<String,Set<String>>topicSubscribers;privateMap<String,Queue<Message>>messageQueues;privateMap<String,Set<String>>subscriberAck;privateExecutorServiceexecutor;publicMessageQueue(){topicSubscribers=newConcurrentHashMap<>();messageQueues=newConcurrentHashMap<>();subscriberAck=newConcurrentHashMap<>();executor=Executors.newFixedThreadPool(10);}publicvoidpublish(Stringtopic,Stringmessage,Stringpublisher){Messagemsg=newMessage(message,publisher);messageQputeIfAbsent(topic,k->newConcurrentLinkedQueue<>()).add(msg);//通知訂閱者topicSputeIfPresent(topic,(k,subs)->{for(Stringsub:subs){executor.submit(()->{try{messageQueues.get(k).add(msg);//等待訂閱者確認subscriberAputeIfAbsent(k,v->newHashSet<>()).add(sub);//假設5秒超時if(!subscriberAck.get(k).remove(sub,System.currentTimeMillis()+5000)){System.out.println("Messagedeliveryfailedfortopic"+k);}}catch(Exceptione){e.printStackTrace();}});}returnsubs;});}publicvoidsubscribe(Stringtopic,Stringsubscriber){topicSputeIfAbsent(topic,k->newConcurrentHashSet<>()).add(subscriber);}publicvoidacknowledge(Stringtopic,Stringsubscriber){subscriberAputeIfPresent(topic,(k,subs)->{subs.add(subscriber);returnsubs;});}publicvoidclose(){executor.shutdown();try{if(!executor.awaitTermination(60,TimeUnit.SECONDS)){executor.shutdownNow();}}catch(InterruptedExceptione){executor.shutdownNow();}}}解析:-使用ConcurrentHashMap實現(xiàn)線程安全-支持消息持久化:將消息存儲在隊列中-實現(xiàn)至少一次傳遞:通過acknowledged標志和確認機制-發(fā)布者-訂閱者模式:使用topic組織消息-使用ExecutorService異步處理訂閱者通知-注意:實際生產系統(tǒng)需要更完善的消息存儲和傳輸機制二、系統(tǒng)設計題(共3題,每題30分)題目6(30分)設計一個微信級別的消息推送系統(tǒng),要求:1.支持全球用戶(10億級別)2.支持多種推送類型(通知、消息、訂閱)3.支持離線推送4.支持推送失敗重試5.支持推送效果統(tǒng)計答案:plaintext系統(tǒng)架構設計:1.消息中心(MQ+Redis+MySQL)-消息生產:通過Kafka/Flink處理用戶行為,生成推送需求-消息存儲:Redis存儲待推送消息(TTL+過期),MySQL存儲持久化記錄-消息路由:根據(jù)用戶標簽、設備類型、推送類型等進行路由2.推送服務(微服務集群)-推送服務:處理消息分發(fā),支持同步/異步推送-離線推送:將未觸達的消息存入Redis,定時重試-推送失敗處理:記錄失敗原因,按優(yōu)先級重試3.資源管理(Redis+Zookeeper)-用戶標簽管理:Redis存儲用戶標簽,支持實時更新-設備管理:記錄設備信息,支持設備失效處理-負載均衡:Zookeeper實現(xiàn)服務發(fā)現(xiàn)和負載均衡4.數(shù)據(jù)統(tǒng)計(Hadoop+Elasticsearch)-實時統(tǒng)計:Elasticsearch存儲實時推送效果-離線統(tǒng)計:Hadoop處理歷史推送數(shù)據(jù)-數(shù)據(jù)看板:提供多維度推送效果分析關鍵點:1.全球用戶支持:-多區(qū)域部署消息中心-CDN加速推送-地域化內容生成2.高可用設計:-消息中心集群化-推送服務冗余部署-多副本存儲3.性能優(yōu)化:-消息批處理-熱點用戶/消息預加載-按設備分組推送4.安全設計:-用戶身份驗證-推送簽名-敏感內容過濾解析:-采用分布式架構支持海量用戶-多層次消息隊列處理高并發(fā)-離線推送機制保證消息不丟失-推送效果多維度統(tǒng)計-考慮全球部署和地域優(yōu)化-需要關注跨區(qū)域網(wǎng)絡延遲問題-可以進一步擴展支持消息透傳和APNS/FCM等推送協(xié)議題目7(30分)設計一個類似抖音/快手的內容推薦系統(tǒng),要求:1.支持個性化推薦2.支持實時更新3.支持冷啟動問題4.支持多樣性和新穎性5.支持實時反饋優(yōu)化答案:plaintext系統(tǒng)架構設計:1.數(shù)據(jù)采集層(Kafka+HDFS)-用戶行為:實時采集點擊、點贊、評論等數(shù)據(jù)-內容特征:提取視頻標簽、音頻特征等-用戶畫像:存儲用戶興趣、偏好等信息2.推薦引擎(SparkMLlib+TensorFlow)-協(xié)同過濾:基于用戶行為的相似度推薦-內容特征:基于視頻內容的相似度推薦-混合推薦:結合多種算法生成最終推薦列表3.實時計算(Flink+Redis)-實時特征:實時更新用戶興趣-冷啟動處理:新用戶推薦熱門內容-推薦更新:根據(jù)實時反饋調整推薦4.服務層(微服務集群)-推薦服務:提供推薦API-緩存服務:Redis存儲熱點推薦-推送服務:將推薦結果下發(fā)到客戶端關鍵點:1.個性化推薦:-基于用戶歷史行為-基于用戶畫像-基于內容特征2.實時更新:-實時特征更新-推薦模型在線學習-實時反饋處理3.冷啟動問題:-新用戶推薦熱門內容-基于用戶注冊信息推薦-群智推薦(初始階段)4.多樣性和新穎性:-限制相似內容比例-探索新內容-混合推薦策略5.實時反饋優(yōu)化:-實時收集用戶點擊、停留時間等反饋-基于反饋調整推薦模
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025溫州甌??萍籍a業(yè)發(fā)展集團有限公司下屬子公司溫州科興生命健康產業(yè)發(fā)展有限公司面向社會招聘工作人員5人備考筆試題庫及答案解析
- 2025河南焦作市中醫(yī)院下半年招聘31人備考筆試試題及答案解析
- 2025江蘇南京白下人力資源開發(fā)服務有限公司招聘勞務派遣人員1人(五十)參考考試題庫及答案解析
- 2025瑞昌市投資有限責任公司下屬瑞昌市瑞興置業(yè)有限公司招聘7人參考考試題庫及答案解析
- 職業(yè)軍人合同范本
- 聯(lián)合建廠協(xié)議合同
- 聯(lián)盟活動合同范本
- 聯(lián)通改套餐協(xié)議書
- 聘用合同協(xié)議范本
- 聘用車司機協(xié)議書
- 濟南市2025-2030年中小學及幼兒園布局規(guī)劃方案公示細節(jié)
- (2025年標準)鐵路實習協(xié)議書
- 重慶市涪陵榨菜集團股份有限公司營運能力分析
- 與4s店二手車合作合同協(xié)議
- 《中華民族共同體概論》考試復習題庫(含答案)
- 國家開放大學《公共政策概論》形考任務1-4答案
- 學堂在線 雨課堂 學堂云 西方哲學精神探源 期末考試答案
- 2025年楚雄州金江能源集團有限公司招聘考試試題【答案】
- 道路應急搶修方案
- 頂管穿越公路安全評估(二篇)
- 人體工程學-第五章-人體工程學與室外環(huán)境設施設計
評論
0/150
提交評論