版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2026年騰訊研發(fā)工程師面試指南及答案一、編程能力測試(共5題,每題10分,總分50分)1.題目(10分):實(shí)現(xiàn)一個函數(shù),輸入一個正整數(shù)`n`,返回`1`到`n`中所有奇數(shù)的平方和。要求時(shí)間復(fù)雜度為`O(n)`,空間復(fù)雜度為`O(1)`。答案:cppintsumOfOddSquares(intn){intsum=0;for(inti=1;i<=n;i+=2){sum+=ii;}returnsum;}解析:-遍歷`1`到`n`的奇數(shù)(步長為`2`),計(jì)算平方并累加。-時(shí)間復(fù)雜度:`O(n)`,因?yàn)楸闅v了所有奇數(shù)。-空間復(fù)雜度:`O(1)`,僅使用`sum`變量存儲結(jié)果。2.題目(10分):給定一個字符串`s`,判斷是否可以通過刪除某些字符使其變?yōu)榛匚拇?。例如,`s="abca"`可以刪除`b`變?yōu)?aca",是回文串。答案:cppboolcanBePalindrome(conststring&s){intleft=0,right=s.size()-1;while(left<right){if(s[left]!=s[right]){//嘗試跳過左或右的字符returncanBePalindrome(s.substr(left+1,right-left))||canBePalindrome(s.substr(left,right-left-1));}left++;right--;}returntrue;}解析:-雙指針法從兩端向中間遍歷,遇到不匹配時(shí)遞歸嘗試跳過左或右的字符。-遞歸時(shí)間復(fù)雜度較高(`O(2^n)`),實(shí)際面試可能要求更優(yōu)解(動態(tài)規(guī)劃)。3.題目(10分):實(shí)現(xiàn)快速排序算法,要求在原地排序(不使用額外數(shù)組),并處理重復(fù)元素的情況。答案:cppvoidquickSort(vector<int>&nums,intleft,intright){if(left>=right)return;intpivot=nums[left+(right-left)/2];intl=left,r=right;while(l<=r){while(l<=r&&nums[l]<pivot)l++;while(l<=r&&nums[r]>pivot)r--;if(l<=r){swap(nums[l],nums[r]);l++;r--;}}quickSort(nums,left,r);quickSort(nums,l,right);}解析:-選擇中間值作為基準(zhǔn)(pivot),將小于等于基準(zhǔn)的放左邊,大于基準(zhǔn)的放右邊。-處理重復(fù)元素時(shí),`l`和`r`會跳過相同的值,避免無限循環(huán)。4.題目(10分):設(shè)計(jì)一個LRU(最近最少使用)緩存,支持`get`和`put`操作,容量為`capacity`。答案:cppclassLRUCache{private:unordered_map<int,int>cache;list<int>lruList;intcapacity;voidtouch(intkey){if(cache.find(key)!=cache.end()){lruList.remove(key);lruList.push_back(key);}}public:LRUCache(intcapacity_):capacity(capacity_){}intget(intkey){if(cache.find(key)==cache.end())return-1;touch(key);returncache[key];}voidput(intkey,intvalue){if(cache.find(key)!=cache.end()){cache[key]=value;touch(key);}else{if(cache.size()==capacity){intoldest=lruList.front();lruList.pop_front();cache.erase(oldest);}cache[key]=value;lruList.push_back(key);}}};解析:-使用`unordered_map`存儲鍵值對,`list`維護(hù)訪問順序。-`get`時(shí)將鍵移到末尾(最近使用),`put`時(shí)若超出容量則刪除最久未使用的鍵。5.題目(10分):實(shí)現(xiàn)二叉樹的深度優(yōu)先遍歷(前序、中序、后序),要求使用遞歸和非遞歸方式。答案:cpp//遞歸方式voidpreorderTraversal(TreeNoderoot,vector<int>&res){if(!root)return;res.push_back(root->val);preorderTraversal(root->left,res);preorderTraversal(root->right,res);}voidinorderTraversal(TreeNoderoot,vector<int>&res){if(!root)return;inorderTraversal(root->left,res);res.push_back(root->val);inorderTraversal(root->right,res);}voidpostorderTraversal(TreeNoderoot,vector<int>&res){if(!root)return;postorderTraversal(root->left,res);postorderTraversal(root->right,res);res.push_back(root->val);}//非遞歸方式(前序)voidpreorderTraversalIterative(TreeNoderoot,vector<int>&res){if(!root)return;stack<TreeNode>stk;stk.push(root);while(!stk.empty()){TreeNodenode=stk.top();stk.pop();res.push_back(node->val);if(node->right)stk.push(node->right);if(node->left)stk.push(node->left);}}解析:-遞歸方式直觀但棧溢出風(fēng)險(xiǎn)高。非遞歸方式使用棧模擬遞歸,適合大節(jié)點(diǎn)樹。二、系統(tǒng)設(shè)計(jì)測試(共2題,每題25分,總分50分)1.題目(25分):設(shè)計(jì)一個高并發(fā)的短鏈接生成系統(tǒng),要求:-支持分布式部署,水平擴(kuò)展。-鏈接生成快速,解析效率高。-具備一定的容錯能力(如ID丟失重試)。答案:系統(tǒng)架構(gòu):1.短鏈接服務(wù):-每個節(jié)點(diǎn)存儲部分短鏈接映射(如`hash(key)%node_count`分配)。-使用Redis緩存熱點(diǎn)鏈接,減少數(shù)據(jù)庫查詢。2.分布式ID生成器(如TwitterSnowflake):-時(shí)間戳(41位)+工作機(jī)器ID(10位)+序列號(12位)。-保證全局唯一且單調(diào)遞增。3.數(shù)據(jù)庫設(shè)計(jì):-表結(jié)構(gòu):`id`(主鍵)、`short_url`(短鏈接)、`long_url`(原鏈接)、`timestamp`(創(chuàng)建時(shí)間)。-索引:`short_url`和`timestamp`復(fù)合索引優(yōu)化查詢。4.容錯機(jī)制:-檢查鏈接是否存在,若丟失則重新生成并更新緩存。-使用熔斷器防止雪崩效應(yīng)。關(guān)鍵技術(shù):-一致性哈希:分配短鏈接時(shí)避免熱點(diǎn)節(jié)點(diǎn)。-分片:將ID空間劃分為多個區(qū),不同節(jié)點(diǎn)處理不同范圍。解析:-高并發(fā)場景下,分布式ID和Redis緩存是關(guān)鍵。-分片設(shè)計(jì)需平衡節(jié)點(diǎn)負(fù)載,避免單點(diǎn)過載。2.題目(25分):設(shè)計(jì)一個實(shí)時(shí)推薦系統(tǒng),支持用戶點(diǎn)擊流接入、實(shí)時(shí)計(jì)算與離線冷啟動。要求:-處理每秒上萬條點(diǎn)擊流。-推薦結(jié)果需包含Top10熱門商品。-支持新商品冷啟動(基于規(guī)則或輕量模型)。答案:系統(tǒng)架構(gòu):1.數(shù)據(jù)接入層:-Kafka/Flume收集用戶行為(點(diǎn)擊、購買等)。-TTL清理過期數(shù)據(jù),避免冷存儲。2.實(shí)時(shí)計(jì)算層(Flink/SparkStreaming):-Top10熱門商品:滑動窗口統(tǒng)計(jì)點(diǎn)擊量,更新排行榜。-協(xié)同過濾:基于用戶歷史行為計(jì)算相似度。3.離線模型:-使用SparkMLlib訓(xùn)練用戶畫像,定期更新。-新商品加入時(shí),標(biāo)記為“待評估”并優(yōu)先推薦。4.冷啟動策略:-規(guī)則:新商品默認(rèn)展示給活躍用戶。-模型:輕量LRU模型結(jié)合點(diǎn)擊率預(yù)估。關(guān)鍵技術(shù):-增量更新:實(shí)時(shí)計(jì)算與離線模型結(jié)果融合。-緩存:Redis存儲熱門商品和用戶畫像。解析:-實(shí)時(shí)計(jì)算需保證低延遲,冷啟動需平衡探索與利用。-新商品需快速進(jìn)入推薦池,避免“冷啟動困境”。三、算法與數(shù)據(jù)結(jié)構(gòu)(共3題,每題25分,總分75分)1.題目(25分):給定一個包含重復(fù)元素的數(shù)組,找出所有不重復(fù)的三元組,使得`a+b+c=0`。例如,`nums=[-1,0,1,2,-1,-4]`,結(jié)果為`[[-1,-1,2],[-1,0,1]]`。答案:cppvector<vector<int>>threeSum(vector<int>&nums){sort(nums.begin(),nums.end());vector<vector<int>>res;intn=nums.size();for(inti=0;i<n-2;i++){if(i>0&&nums[i]==nums[i-1])continue;//跳過重復(fù)intleft=i+1,right=n-1;while(left<right){intsum=nums[i]+nums[left]+nums[right];if(sum==0){res.push_back({nums[i],nums[left],nums[right]});//跳過重復(fù)while(left<right&&nums[left]==nums[left+1])left++;while(left<right&&nums[right]==nums[right-1])right--;left++;right--;}elseif(sum<0)left++;elseright--;}}returnres;}解析:-排序后固定第一個數(shù),雙指針查找另外兩個數(shù)。-跳過重復(fù)的數(shù)以避免重復(fù)三元組。2.題目(25分):設(shè)計(jì)一個數(shù)據(jù)結(jié)構(gòu)支持以下操作:-`add(num)`:添加數(shù)字。-`find(target)`:返回比`target`小的所有數(shù)的平方和。答案:cppclassNumSum{private:multiset<int>nums;unordered_map<int,longlong>cache;longlonggetSum(inttarget){if(cache.find(target)!=cache.end())returncache[target];longlongsum=0;for(intnum:nums){if(numnum<target)sum+=numnum;}cache[target]=sum;returnsum;}public:voidadd(intnum){nums.insert(num);}longlongfind(inttarget){returngetSum(target);}};解析:-使用`multiset`存儲有序數(shù)字,避免重復(fù)。-緩存結(jié)果避免重復(fù)計(jì)算。3.題目(25分):給定一個字符串`s`,找到最長的無重復(fù)字符的子串長度。例如,`s="abcabcbb"`,最長為"abc",長度3。答案:cppintlengthOfLongestSubstring(strings){intn=s.size();intleft=0,right=0;intmaxLen=0;unordered_set<char>window;while(
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嶺南版第八冊美術(shù)教案
- 2025年中國科學(xué)院光電技術(shù)研究所園區(qū)運(yùn)行維護(hù)崗位社會招聘8人備考題庫及參考答案詳解一套
- 2025年昭覺縣應(yīng)急管理局公開招聘綜合應(yīng)急救援隊(duì)伍人員的備考題庫參考答案詳解
- 2025年招商銀行東莞分行社會招聘備考題庫及一套參考答案詳解
- 2025年中國民用航空局局屬事業(yè)單位公開招聘88人備考題庫(第二批)完整參考答案詳解
- 國家知識產(chǎn)權(quán)局專利局專利審查協(xié)作四川中心2026年度專利審查員公開招聘備考題庫及1套參考答案詳解
- 2025年宿松縣人民政府龍山街道辦事處選調(diào)工作人員備考題庫含答案詳解
- 2025年涼山八桂人力資源服務(wù)有限公司代美姑縣公安局公開招聘警務(wù)輔助人員的備考題庫帶答案詳解
- 2025年青島市檢察機(jī)關(guān)公開招聘聘用制書記員25人的備考題庫及參考答案詳解
- 2026年及未來5年市場數(shù)據(jù)中國農(nóng)藥中間體行業(yè)市場調(diào)查研究及投資前景預(yù)測報(bào)告
- 2025年高職(鐵道車輛技術(shù))鐵道車輛制動試題及答案
- 2025陜西榆林市榆陽區(qū)部分區(qū)屬國有企業(yè)招聘20人考試筆試模擬試題及答案解析
- 代辦執(zhí)照合同范本
- (2025年)教育博士(EdD)教育領(lǐng)導(dǎo)與管理方向考試真題附答案
- 2025年起重機(jī)司機(jī)(限門式起重機(jī))理論考試考題(有答案)
- 招商引資合作協(xié)議書
- 趙州橋介紹教學(xué)課件
- 鄉(xiāng)土地理云南課件
- 高鐵列車自主導(dǎo)航-洞察與解讀
- 醫(yī)院住院患者身體約束規(guī)范化管理實(shí)踐資料
- 《中國哲學(xué)史》課程考核大綱
評論
0/150
提交評論