2026年騰訊面試題及基礎答案_第1頁
2026年騰訊面試題及基礎答案_第2頁
2026年騰訊面試題及基礎答案_第3頁
2026年騰訊面試題及基礎答案_第4頁
2026年騰訊面試題及基礎答案_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

2026年騰訊面試題及基礎答案一、編程題(共3題,每題20分)1.(20分)字符串反轉(zhuǎn)題目:編寫一個函數(shù),將輸入的字符串反轉(zhuǎn),且不使用額外的字符串變量。例如,輸入`"hello"`,輸出`"olleh"`。答案:cppinclude<iostream>include<string>usingnamespacestd;stringreverseString(strings){intleft=0,right=s.size()-1;while(left<right){swap(s[left],s[right]);left++;right--;}returns;}intmain(){stringinput="hello";cout<<reverseString(input)<<endl;return0;}解析:通過雙指針法,從字符串兩端開始交換字符,直到中間相遇。時間復雜度為O(n),空間復雜度為O(1)。2.(20分)二叉樹遍歷題目:給定一個二叉樹,編寫代碼實現(xiàn)前序遍歷(根節(jié)點→左子樹→右子樹)。假設二叉樹節(jié)點定義如下:cppstructTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intx):val(x),left(NULL),right(NULL){}};答案:cppinclude<iostream>include<vector>usingnamespacestd;voidpreorderTraversal(TreeNoderoot,vector<int>&result){if(root==NULL)return;result.push_back(root->val);preorderTraversal(root->left,result);preorderTraversal(root->right,result);}intmain(){//構(gòu)建二叉樹示例TreeNoderoot=newTreeNode(1);root->left=newTreeNode(2);root->right=newTreeNode(3);root->left->left=newTreeNode(4);root->left->right=newTreeNode(5);vector<int>result;preorderTraversal(root,result);for(intval:result)cout<<val<<"";return0;}解析:前序遍歷采用遞歸或迭代方式,核心邏輯是先訪問根節(jié)點,再遞歸左子樹,最后遞歸右子樹。遞歸實現(xiàn)簡潔,但需注意棧溢出問題。3.(20分)動態(tài)規(guī)劃——爬樓梯題目:假設你正在爬樓梯,每次可以爬1或2級。給定一個整數(shù)n,返回到達頂樓的方法總數(shù)。例如,n=2,返回2(1+1或2)。答案:cppinclude<iostream>usingnamespacestd;intclimbStairs(intn){if(n==1)return1;inta=1,b=1,c=0;for(inti=2;i<=n;i++){c=a+b;a=b;b=c;}returnc;}intmain(){cout<<climbStairs(2)<<endl;//輸出2return0;}解析:動態(tài)規(guī)劃解法,dp[i]=dp[i-1]+dp[i-2]。使用空間壓縮優(yōu)化為O(1)時間復雜度。二、算法題(共3題,每題20分)1.(20分)排序與查找題目:給定一個無序數(shù)組,找出其中第k個最大的元素。例如,數(shù)組`[3,2,1,5,6,4]`,k=2,輸出5。答案:cppinclude<vector>include<algorithm>usingnamespacestd;intfindKthLargest(vector<int>&nums,intk){sort(nums.begin(),nums.end(),greater<int>());returnnums[k-1];}intmain(){vector<int>nums={3,2,1,5,6,4};cout<<findKthLargest(nums,2)<<endl;//輸出5return0;}解析:排序后直接返回第k個元素。時間復雜度為O(nlogn),可優(yōu)化為O(n)的快速選擇算法。2.(20分)鏈表操作題目:刪除鏈表的倒數(shù)第n個節(jié)點,并返回鏈表頭。例如,鏈表`1->2->3->4->5`,n=2,刪除后為`1->2->3->5`。答案:cppinclude<iostream>usingnamespacestd;structListNode{intval;ListNodenext;ListNode(intx):val(x),next(NULL){}};ListNoderemoveNthFromEnd(ListNodehead,intn){ListNodedummy=newListNode(0);dummy->next=head;ListNodefast=dummy;ListNodeslow=dummy;for(inti=0;i<n;i++)fast=fast->next;while(fast->next!=NULL){fast=fast->next;slow=slow->next;}slow->next=slow->next->next;deletedummy;returnhead;}intmain(){//構(gòu)建鏈表ListNodehead=newListNode(1);head->next=newListNode(2);head->next->next=newListNode(3);head->next->next->next=newListNode(4);head->next->next->next->next=newListNode(5);ListNodenewHead=removeNthFromEnd(head,2);//打印鏈表return0;}解析:雙指針法,快指針先走n步,慢指針再開始移動,當快指針到達末尾時,慢指針的下一個節(jié)點即為待刪除節(jié)點。3.(20分)堆與優(yōu)先隊列題目:用最小堆實現(xiàn)一個LRU(最近最少使用)緩存,支持get和put操作。假設緩存容量為3。答案:cppinclude<unordered_map>include<list>include<functional>usingnamespacestd;classLRUCache{public:LRUCache(intcapacity):capacity(capacity){}intget(intkey){if(cache.find(key)==cache.end())return-1;autoit=cache[key];//將訪問的元素移動到頭部cache[key]->second->splice(cache[key]->second,cache[key]->first,cache[key]);returnit->second;}voidput(intkey,intvalue){if(cache.find(key)!=cache.end()){//更新值并移動到頭部cache[key]->second=value;cache[key]->first->splice(cache[key]->first,cache[key]->first,cache[key]);}else{//新增元素if(cache.size()==capacity){//刪除最久未使用的元素cache.erase(lru.back().first);lru.pop_back();}lru.emplace_front(key,value);cache[key]=lru.begin();}}private:intcapacity;list<pair<int,int>>lru;//雙向鏈表存儲鍵值對unordered_map<int,list<pair<int,int>>::iterator>cache;//哈希表映射鍵到鏈表節(jié)點};intmain(){LRUCachecache(3);cache.put(1,1);cache.put(2,2);cache.get(1);//返回1cache.put(3,3);//去除鍵2cache.get(2);//返回-1(未找到)cache.put(4,4);//去除鍵1cache.get(1);//返回-1(未找到)cache.get(3);//返回3cache.get(4);//返回4return0;}解析:LRU緩存使用雙向鏈表和哈希表實現(xiàn)。鏈表維護訪問順序,哈希表實現(xiàn)O(1)的get和put操作。三、系統(tǒng)設計題(共2題,每題30分)1.(30分)分布式短鏈系統(tǒng)設計題目:設計一個分布式短鏈系統(tǒng),要求:-輸入長鏈接,輸出短鏈接(如`/abc`)。-支持全局唯一ID生成。-高可用、高并發(fā)。答案:系統(tǒng)架構(gòu):1.前端服務(Nginx+APIGateway):負載均衡,路由請求到后端集群。2.后端服務(微服務集群):負責ID生成、短鏈映射存儲(Redis+MySQL)。3.ID生成器(RedisCluster):分布式原子自增ID。4.CDN緩存:加速短鏈解析。核心邏輯:-用戶輸入長鏈接,后端生成唯一ID(如UUID或Redis自增)。-將`ID<->長鏈接`映射存入Redis(熱key),MySQL(持久化)。-返回短鏈`/{ID}`,并設置TTL(如24小時)。-訪問短鏈時,后端查Redis,若未命中則查MySQL,返回長鏈接。高可用方案:-Redis集群分片,MySQL讀寫分離。-服務降級熔斷,限流防洪。解析:關(guān)鍵點在于ID生成和映射存儲,Redis保證高并發(fā)讀寫,MySQL持久化數(shù)據(jù)。2.(30分)實時消息推送系統(tǒng)題目:設計一個實時消息推送系統(tǒng)(如微信消息),要求:-支持離線推送、在線推送。-支持按用戶標簽、群組推送。-高并發(fā)、低延遲。答案:系統(tǒng)架構(gòu):1.消息隊列(Kafka/RabbitMQ):異步解耦,削峰填谷。2.用戶服務(Redis+MySQL):存儲用戶在線狀態(tài)、標簽。3.推送服務(MQTT/WebSocket):實時推送。4.離線存儲(Redis):緩存未送達消息。核心邏輯

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論