2026年騰訊研發(fā)工程師面試題集_第1頁
2026年騰訊研發(fā)工程師面試題集_第2頁
2026年騰訊研發(fā)工程師面試題集_第3頁
2026年騰訊研發(fā)工程師面試題集_第4頁
2026年騰訊研發(fā)工程師面試題集_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2026年騰訊研發(fā)工程師面試題集一、編程基礎(chǔ)(3題,每題15分,共45分)1.編程題:字符串反轉(zhuǎn)-題目:給定一個(gè)字符串`s`,不使用內(nèi)置的反轉(zhuǎn)函數(shù),編寫一個(gè)函數(shù)`reverseString`,將字符串中的字符順序反轉(zhuǎn)。例如,輸入`"hello"`,輸出`"olleh"`。-要求:時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。-答案:cppvoidreverseString(chars){if(s==nullptr)return;intleft=0,right=strlen(s)-1;while(left<right){swap(s[left],s[right]);left++;right--;}}2.編程題:合并兩個(gè)有序數(shù)組-題目:給定兩個(gè)有序數(shù)組`nums1`和`nums2`,合并它們?yōu)橐粋€(gè)有序數(shù)組。假設(shè)`nums1`的長(zhǎng)度為`m`,`nums2`的長(zhǎng)度為`n`,且`nums1`的末尾有足夠的空間容納`nums2`的元素。-要求:不使用額外的數(shù)組空間,時(shí)間復(fù)雜度O(m+n)。-答案:cppvoidmerge(intnums1,intm,intnums2,intn){inti=m-1,j=n-1,k=m+n-1;while(i>=0&&j>=0){if(nums1[i]>nums2[j]){nums1[k]=nums1[i];i--;}else{nums1[k]=nums2[j];j--;}k--;}while(j>=0){nums1[k]=nums2[j];j--;k--;}}3.編程題:二叉樹的最大深度-題目:給定一個(gè)二叉樹,編寫一個(gè)函數(shù)`maxDepth`,返回其最大深度。二叉樹的深度為根節(jié)點(diǎn)到最遠(yuǎn)葉子節(jié)點(diǎn)的最長(zhǎng)路徑上的節(jié)點(diǎn)數(shù)。-要求:使用遞歸方法。-答案:cppstructTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intx):val(x),left(nullptr),right(nullptr){}};intmaxDepth(TreeNoderoot){if(root==nullptr)return0;returnmax(maxDepth(root->left),maxDepth(root->right))+1;}二、算法設(shè)計(jì)(3題,每題20分,共60分)1.算法設(shè)計(jì)題:LRU緩存機(jī)制-題目:設(shè)計(jì)一個(gè)LRU(LeastRecentlyUsed)緩存機(jī)制,支持容量為`capacity`的緩存。實(shí)現(xiàn)`get`和`put`操作:`get(key)`返回鍵`key`對(duì)應(yīng)的值,如果不存在返回-1;`put(key,value)`將鍵`key`和值`value`插入緩存中,如果鍵已存在,則更新其值。當(dāng)緩存容量已滿時(shí),刪除最久未使用的鍵。-要求:使用哈希表和雙向鏈表實(shí)現(xiàn),時(shí)間復(fù)雜度O(1)。-答案:cppclassLRUCache{public:structNode{intkey,val;Nodeprev;Nodenext;Node(intk,intv):key(k),val(v),prev(nullptr),next(nullptr){}};LRUCache(intcapacity):capacity_(capacity),head_(newNode(0,0)),tail_(newNode(0,0)){head_->next=tail_;tail_->prev=head_;}intget(intkey){if(cache.find(key)==cache.end())return-1;Nodenode=cache[key];moveToHead(node);returnnode->val;}voidput(intkey,intvalue){if(cache.find(key)!=cache.end()){Nodenode=cache[key];node->val=value;moveToHead(node);}else{Nodenode=newNode(key,value);cache[key]=node;addToHead(node);if(cache.size()>capacity_){NodenodeToRemove=tail_->prev;removeNode(nodeToRemove);cache.erase(nodeToRemove->key);deletenodeToRemove;}}}private:intcapacity_;unordered_map<int,Node>cache;Nodehead_,tail_;voidaddToHead(Nodenode){node->prev=head_;node->next=head_->next;head_->next->prev=node;head_->next=node;}voidremoveNode(Nodenode){node->prev->next=node->next;node->next->prev=node->prev;}voidmoveToHead(Nodenode){removeNode(node);addToHead(node);}};2.算法設(shè)計(jì)題:N皇后問題-題目:編寫一個(gè)函數(shù)`solveNQueens`,解決N皇后問題。該問題要求放置N個(gè)皇后在N×N的棋盤上,使得任何兩個(gè)皇后都不在同一條行、列或?qū)蔷€上。-要求:返回所有可能的解決方案。-答案:cppclassSolution{public:vector<vector<string>>solveNQueens(intn){vector<vector<string>>results;vector<int>queenPos(n,0);solveNQueensHelper(n,0,queenPos,results);returnresults;}private:voidsolveNQueensHelper(intn,introw,vector<int>&queenPos,vector<vector<string>>&results){if(row==n){vector<string>solution(n,string(n,'.'));for(inti=0;i<n;++i){solution[i][queenPos[i]]='Q';}results.push_back(solution);return;}for(intcol=0;col<n;++col){if(isValid(queenPos,row,col)){queenPos[row]=col;solveNQueensHelper(n,row+1,queenPos,results);}}}boolisValid(constvector<int>&queenPos,introw,intcol){for(inti=0;i<row;++i){if(queenPos[i]==col||abs(queenPos[i]-col)==abs(i-row)){returnfalse;}}returntrue;}};3.算法設(shè)計(jì)題:滑動(dòng)窗口最大值-題目:給定一個(gè)數(shù)組`nums`和一個(gè)整數(shù)`k`,設(shè)計(jì)一個(gè)函數(shù)`maxSlidingWindow`,返回一個(gè)數(shù)組,其中每個(gè)元素是`nums`中長(zhǎng)度為`k`的滑動(dòng)窗口內(nèi)的最大值。-要求:時(shí)間復(fù)雜度O(n)。-答案:cppclassSolution{public:vector<int>maxSlidingWindow(intnums,intnumsSize,intk){vector<int>result;if(numsSize==0||k==0)returnresult;deque<int>dq;for(inti=0;i<numsSize;++i){while(!dq.empty()&&nums[dq.back()]<=nums[i]){dq.pop_back();}dq.push_back(i);if(dq.front()<=i-k){dq.pop_front();}if(i>=k-1){result.push_back(nums[dq.front()]);}}returnresult;}};三、系統(tǒng)設(shè)計(jì)(2題,每題25分,共50分)1.系統(tǒng)設(shè)計(jì)題:設(shè)計(jì)一個(gè)微博系統(tǒng)-題目:設(shè)計(jì)一個(gè)微博系統(tǒng),支持用戶發(fā)布微博、關(guān)注/取消關(guān)注用戶、獲取關(guān)注者的微博時(shí)間線等功能。-要求:說明系統(tǒng)架構(gòu)、數(shù)據(jù)存儲(chǔ)設(shè)計(jì)、主要接口設(shè)計(jì)。-答案:-系統(tǒng)架構(gòu):-前端:Web端(React/Vue)、移動(dòng)端(iOS/Android)-后端:API服務(wù)器(Node.js/Go/JavaSpringBoot)、消息隊(duì)列(Kafka/RabbitMQ)-數(shù)據(jù)庫:關(guān)系型數(shù)據(jù)庫(MySQL/PostgreSQL)存儲(chǔ)用戶信息、微博數(shù)據(jù);NoSQL數(shù)據(jù)庫(Redis/Memcached)緩存熱點(diǎn)數(shù)據(jù);圖數(shù)據(jù)庫(Neo4j)存儲(chǔ)用戶關(guān)系。-其他:CDN加速靜態(tài)資源;日志系統(tǒng)(ELKStack)記錄系統(tǒng)日志。-數(shù)據(jù)存儲(chǔ)設(shè)計(jì):-用戶表:存儲(chǔ)用戶基本信息(用戶ID、用戶名、密碼、注冊(cè)時(shí)間等)-微博表:存儲(chǔ)微博內(nèi)容(微博ID、用戶ID、內(nèi)容、發(fā)布時(shí)間等)-關(guān)系表:存儲(chǔ)關(guān)注關(guān)系(用戶ID、關(guān)注者ID)-點(diǎn)贊表:存儲(chǔ)點(diǎn)贊關(guān)系(微博ID、用戶ID)-主要接口設(shè)計(jì):-`POST/api/tweets`:發(fā)布微博-`GET/api/tweets`:獲取用戶微博時(shí)間線-`POST/api/follow`:關(guān)注用戶-`POST/api/unfollow`:取消關(guān)注用戶-`GET/api/tweets/:tweetId/like`:點(diǎn)贊微博2.系統(tǒng)設(shè)計(jì)題:設(shè)計(jì)一個(gè)短鏈接系統(tǒng)-題目:設(shè)計(jì)一個(gè)短鏈接系統(tǒng),支持將長(zhǎng)鏈接轉(zhuǎn)換為短鏈接,并能夠通過短鏈接訪問原始長(zhǎng)鏈接。-要求:說明系統(tǒng)架構(gòu)、數(shù)據(jù)存儲(chǔ)設(shè)計(jì)、主要接口設(shè)計(jì)。-答案:-系統(tǒng)架構(gòu):-前端:Web端、移動(dòng)端-后端:API服務(wù)器(Node.js/Go/JavaSpringBoot)、緩存系統(tǒng)(Redis)-數(shù)據(jù)庫:關(guān)系型數(shù)據(jù)庫(MySQ

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論