版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2026年騰訊公司技術(shù)部面試指南及答案解析一、編程能力測(cè)試(共5題,每題10分,總分50分)1.題目:請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),輸入一個(gè)非負(fù)整數(shù)n,返回其二進(jìn)制表示中1的個(gè)數(shù)。例如,輸入3(二進(jìn)制為11),返回2。答案:cppintcountBits(intn){intcount=0;while(n){count+=n&1;n>>=1;}returncount;}解析:-使用位運(yùn)算`n&1`判斷最低位是否為1,每次右移一位,直到n為0。-時(shí)間復(fù)雜度O(logn),空間復(fù)雜度O(1)。-也可使用內(nèi)置函數(shù)(如C++的`__builtin_popcount`)實(shí)現(xiàn)。2.題目:給定一個(gè)字符串s,請(qǐng)找到其中不重復(fù)的最長(zhǎng)子串的長(zhǎng)度。例如,輸入"abcabcbb",返回3("abc")。答案:cppintlengthOfLongestSubstring(strings){unordered_set<char>set;intleft=0,maxLen=0;for(intright=0;right<s.size();++right){while(set.find(s[right])!=set.end()){set.erase(s[left++]);}set.insert(s[right]);maxLen=max(maxLen,right-left+1);}returnmaxLen;}解析:-使用滑動(dòng)窗口思想,`left`和`right`分別表示窗口的左右邊界。-哈希集合記錄窗口內(nèi)的字符,若發(fā)現(xiàn)重復(fù),則移動(dòng)`left`直到無(wú)重復(fù)。-時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(min(m,n)),m為字符集大小。3.題目:實(shí)現(xiàn)一個(gè)LRU(LeastRecentlyUsed)緩存,支持get和put操作。例如:cppLRUCachecache=newLRUCache(2);cache.put(1,1);//緩存是{1=1}cache.put(2,2);//緩存是{1=1,2=2}cache.get(1);//返回1cache.put(3,3);//去除鍵2,緩存是{1=1,3=3}cache.get(2);//返回-1(未找到)答案:cppclassLRUCache{public:structNode{intkey,val;Nodeleft,right;Node(intk,intv):key(k),val(v),left(nullptr),right(nullptr){}};intcapacity;unordered_map<int,Node>cache;Nodehead=newNode(0,0),tail=newNode(0,0);LRUCache(intc):capacity(c){head->right=tail;tail->left=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){NodetoDel=tail->left;cache.erase(toDel->key);removeNode(toDel);deletetoDel;}}}voidmoveToHead(Nodenode){removeNode(node);addToHead(node);}voidaddToHead(Nodenode){node->left=head;node->right=head->right;head->right->left=node;head->right=node;}voidremoveNode(Nodenode){node->left->right=node->right;node->right->left=node->left;}};解析:-使用雙向鏈表和哈希集合實(shí)現(xiàn)。鏈表頭部為最近使用,尾部為最久未使用。-get操作將節(jié)點(diǎn)移至頭部,put操作若已存在則更新并移動(dòng)至頭部,若超出容量則刪除尾部節(jié)點(diǎn)。-時(shí)間復(fù)雜度O(1),空間復(fù)雜度O(capacity)。4.題目:給定一個(gè)無(wú)重復(fù)元素的數(shù)組nums,返回所有可能的子集。例如,輸入[1,2,3],返回[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]。答案:cppvector<vector<int>>subsets(vector<int>&nums){vector<vector<int>>res;vector<int>path;sort(nums.begin(),nums.end());dfs(nums,0,path,res);returnres;}voiddfs(vector<int>&nums,intstart,vector<int>&path,vector<vector<int>>&res){res.push_back(path);for(inti=start;i<nums.size();++i){path.push_back(nums[i]);dfs(nums,i+1,path,res);path.pop_back();}}解析:-回溯算法思想,從start位置開始遍歷,每次選擇當(dāng)前元素并遞歸,最后撤銷選擇。-時(shí)間復(fù)雜度O(2^n),空間復(fù)雜度O(n)。5.題目:實(shí)現(xiàn)一個(gè)二叉樹的中序遍歷,返回節(jié)點(diǎn)值的列表。例如:輸入:[1,null,2,3]1\2/3輸出:[1,3,2]答案:cppvector<int>inorderTraversal(TreeNoderoot){vector<int>res;stack<TreeNode>st;TreeNodenode=root;while(node!=nullptr||!st.empty()){while(node!=nullptr){st.push(node);node=node->left;}node=st.top();st.pop();res.push_back(node->val);node=node->right;}returnres;}解析:-迭代法中序遍歷,使用棧記錄節(jié)點(diǎn)。先遍歷左子樹,再訪問節(jié)點(diǎn),最后遍歷右子樹。-時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(h),h為樹的高度。二、系統(tǒng)設(shè)計(jì)能力測(cè)試(共4題,每題12分,總分48分)1.題目:設(shè)計(jì)一個(gè)高并發(fā)的短鏈接系統(tǒng),要求支持高并發(fā)訪問,并能在數(shù)小時(shí)內(nèi)生成唯一的短鏈接。答案:-核心思路:1.短鏈接生成:使用哈希函數(shù)(如MD5或自定義算法)將長(zhǎng)鏈接映射為固定長(zhǎng)度的短鏈接(如6位字母數(shù)字組合)。2.分布式存儲(chǔ):使用Redis或Memcached存儲(chǔ)長(zhǎng)鏈接與短鏈接的映射,利用其高并發(fā)特性。3.冪等性保證:若短鏈接已存在,則重新生成;若已映射長(zhǎng)鏈接,則直接返回。4.分布式ID生成器:使用TwitterSnowflake算法生成唯一ID,避免重復(fù)。5.緩存穿透:對(duì)熱點(diǎn)短鏈接設(shè)置TTL,防止頻繁查詢后端存儲(chǔ)。解析:-高并發(fā)處理:Redis/Memcached支持百萬(wàn)級(jí)QPS,配合分布式ID生成器確保唯一性。-性能優(yōu)化:哈希函數(shù)應(yīng)盡量減少?zèng)_突,短鏈接長(zhǎng)度不宜過長(zhǎng)(如6位可支持62^6種組合)。2.題目:設(shè)計(jì)一個(gè)微博系統(tǒng),要求支持用戶發(fā)布、關(guān)注、點(diǎn)贊等功能,并保證數(shù)據(jù)一致性。答案:-核心思路:1.數(shù)據(jù)存儲(chǔ):-用戶表:MySQL分表存儲(chǔ)(按用戶ID哈希)。-微博表:InnoDB引擎支持事務(wù),按時(shí)間倒序存儲(chǔ)。-關(guān)注關(guān)系:Redis存儲(chǔ)臨時(shí)關(guān)注列表,MySQL持久化。2.發(fā)布流程:-用戶提交微博后,先寫入Redis緩存,異步寫入MySQL。若失敗則重試。3.關(guān)注關(guān)系:-關(guān)注/取關(guān)操作先更新Redis,最終同步到MySQL。4.點(diǎn)贊功能:-使用Redis計(jì)數(shù)器(ZSet或Hash)存儲(chǔ)點(diǎn)贊數(shù),最終同步到微博表。解析:-數(shù)據(jù)一致性:通過Redis異步寫入MySQL實(shí)現(xiàn)最終一致性,避免熱點(diǎn)數(shù)據(jù)鎖表。-高可用:可用讀寫分離+分庫(kù)分表解決高并發(fā)瓶頸。3.題目:設(shè)計(jì)一個(gè)實(shí)時(shí)推薦系統(tǒng),輸入用戶行為日志,輸出推薦商品。答案:-核心思路:1.數(shù)據(jù)采集:Kafka收集用戶行為日志(點(diǎn)擊、購(gòu)買等)。2.實(shí)時(shí)處理:Flink或SparkStreaming實(shí)時(shí)計(jì)算用戶畫像(如協(xié)同過濾)。3.推薦算法:-短時(shí)推薦:基于用戶最近行為(如LRU緩存)。-長(zhǎng)時(shí)推薦:基于用戶畫像(如ItemCF、深度學(xué)習(xí)模型)。4.緩存層:Redis存儲(chǔ)熱門推薦結(jié)果,降低后端計(jì)算壓力。解析:-實(shí)時(shí)性:Kafka+流處理框架保證毫秒級(jí)推薦。-冷啟動(dòng):新用戶可推薦熱門商品,逐步積累行為數(shù)據(jù)。4.題目:設(shè)計(jì)一個(gè)高并發(fā)的秒殺系統(tǒng),要求支持每秒百萬(wàn)級(jí)請(qǐng)求。答案:-核心思路:1.流量控制:Nginx限流,熔斷器(如Hystrix)防雪崩。2.庫(kù)存扣減:Redis原子操作扣減庫(kù)存(Lua腳本保證原子性)。3.分布式鎖:若使用MySQL,需悲觀鎖或Redis分布式鎖防止超賣。4.結(jié)果通知:扣減成功后,異步寫入訂單(消息隊(duì)列)。解析:-性能優(yōu)化:Redis原子操作避免鎖競(jìng)爭(zhēng),消息隊(duì)列異步處理訂單。-容錯(cuò)性:訂單與庫(kù)存解耦,先扣庫(kù)存后創(chuàng)建訂單,失敗則回滾。三、數(shù)據(jù)庫(kù)與中間件(共4題,每題10分,總分40分)1.題目:解釋MySQL中的事務(wù)隔離級(jí)別,并說明臟讀、不可重復(fù)讀、幻讀的區(qū)別。答案:-隔離級(jí)別:-READUNCOMMITTED:允許臟讀(未提交數(shù)據(jù)可見)。-READCOMMITTED:允許不可重復(fù)讀(提交后新插入行可見)。-REPEATABLEREAD:允許幻讀(跨事務(wù)插入新行)。-SERIALIZABLE:完全隔離(鎖表)。解析:-臟讀:A未提交,B讀取到A的未提交數(shù)據(jù)。-不可重復(fù)讀:A讀取數(shù)據(jù)后,B提交新行,A再次讀取數(shù)據(jù)不一致。-幻讀:A讀取數(shù)據(jù)后,B提交新行,A再次讀取數(shù)據(jù)行數(shù)變化。2.題目:如何優(yōu)化MySQL查詢性能?答案:-索引優(yōu)化:-覆蓋索引(索引包含所有查詢字段)。-聚合索引(主鍵+其他字段)。-索引下推(聯(lián)合索引先過濾)。-SQL優(yōu)化:-避免`SELECT`,使用具體字段。-`JOIN`優(yōu)化(`INNERJOIN`優(yōu)先)。-避免全表掃描(`WHERE`條件覆蓋索引)。解析:-執(zhí)行計(jì)劃:使用`EXPLAIN`分析`key`、`rows`等指標(biāo)。-慢查詢?nèi)罩荆憾ㄆ诜治霾?yōu)化。3.題目:Redis的淘汰策略有哪些?如何選擇?答案:-淘汰策略:-`noeviction`:不淘汰(默認(rèn),內(nèi)存滿報(bào)錯(cuò))。-`allkeys-lru`:淘汰最少使用鍵。-`allkeys-random`:隨機(jī)淘汰鍵。-`volatile-lru`:淘汰過期鍵中最少使用的。-`volatile-ttl`:淘汰過期時(shí)間最短的鍵。解析:-選擇策略:-熱點(diǎn)數(shù)據(jù)用`allkeys-lru`。-冷數(shù)據(jù)用`volatile-ttl`。-內(nèi)存充足用`noeviction`。4.題目:如何保證消息隊(duì)列的可靠性?答案:-核心機(jī)制:1.重試機(jī)制:消息消費(fèi)失敗后,延遲重試。2.冪等性設(shè)計(jì):消息處理前檢查是否已處理(如數(shù)據(jù)庫(kù)標(biāo)記)。3.事務(wù)消息:RocketMQ/Redis支持事務(wù)消息,確保發(fā)送與消費(fèi)一致。4.消息確認(rèn):消費(fèi)者ack確認(rèn),未確認(rèn)則重新發(fā)送。解析:-Broker端:保證消息不丟失(持久化+發(fā)送方確認(rèn))。-Consumer端:避免重復(fù)消費(fèi)(冪等性)。四、算法與數(shù)據(jù)結(jié)構(gòu)(共5題,每題8分,總分40分)1.題目:給定一個(gè)字符串,判斷是否是有效的括號(hào)組合(如"()[]{}")。答案:cppboolisValid(strings){stack<char>st;unordered_map<char,char>pairs={{'}','{'},{']','['},{')','('}};for(charc:s){if(pairs.count(c)){if(st.empty()||st.top()!=pairs[c])returnfalse;st.pop();}else{st.push(c);}}returnst.empty();}解析:-使用棧匹配括號(hào),時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(n)。2.題目:合并兩個(gè)有序鏈表,返回合并后的頭節(jié)點(diǎn)。答案:cppListNodemergeTwoLists(ListNodel1,ListNodel2){ListNodedummy(0);ListNodetail=&dummy;while(l1&&l2){if(l1->val<l2->val){tail->next=l1;l1=l1->next;}else{tail->next=l2;l2=l2->next;}tail=tail->next;}tail->next=l1?l1:l2;returndummy.next;}解析:-使用虛擬頭節(jié)點(diǎn)簡(jiǎn)化邊界處理。3.題目:給定一個(gè)數(shù)組,找到其中和為target的三個(gè)數(shù)的組合。答案:cppvector<vector<int>>threeSum(vector<int>&nums){sort(nums.begin(),nums.end());vector<vector<int>>res;for(inti=0;i<nums.size();++i){if(i>0&&nums
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 寫作素材:為有源頭活水來(lái)
- 光化還原實(shí)驗(yàn)數(shù)據(jù)保密工作制度
- 2026年劇本殺運(yùn)營(yíng)公司員工溝通技巧培訓(xùn)管理制度
- 2026年劇本殺運(yùn)營(yíng)公司媒體對(duì)接與采訪管理制度
- 2026年教育科技領(lǐng)域創(chuàng)新模式報(bào)告及未來(lái)五年發(fā)展規(guī)劃報(bào)告
- 2026年航空航天行業(yè)可重復(fù)使用技術(shù)與應(yīng)用前景報(bào)告
- 2025年能源行業(yè)風(fēng)能發(fā)電技術(shù)報(bào)告
- 2026年智慧城市大數(shù)據(jù)創(chuàng)新報(bào)告
- 全員質(zhì)量創(chuàng)新制度
- 云南介紹英語(yǔ)
- 浙江金華市軌道交通控股集團(tuán)運(yùn)營(yíng)有限公司招聘筆試題庫(kù)2025
- 2025《義務(wù)教育體育與健康課程標(biāo)準(zhǔn)(2022年版)》測(cè)試題庫(kù)及答案
- 土方工程施工安全管理規(guī)范
- 《心臟瓣膜病診療指南》
- 五年級(jí)上冊(cè)道法期末模擬試卷及答案
- 財(cái)務(wù)信息化與財(cái)務(wù)共享服務(wù)模式2025年可行性分析報(bào)告
- 煙花爆竹經(jīng)營(yíng)零售申請(qǐng)書
- 提升施工企業(yè)安全管理水平的關(guān)鍵措施與路徑探索
- 自動(dòng)扶梯應(yīng)急預(yù)案演練計(jì)劃(3篇)
- GB/T 16271-2025鋼絲繩吊索插編索扣
- 暴盲的中醫(yī)護(hù)理方案
評(píng)論
0/150
提交評(píng)論