版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2026年騰訊軟件開發(fā)工程師面試要點(diǎn)與答案一、編程基礎(chǔ)(共5題,每題10分,總分50分)1.題目(10分):編寫一個(gè)函數(shù),實(shí)現(xiàn)判斷一個(gè)字符串是否為“回文串”(正讀和反讀相同)。例如,輸入`"abba"`返回`true`,輸入`"abcba"`也返回`true`,輸入`"hello"`返回`false`。要求不使用額外空間,時(shí)間復(fù)雜度盡可能低。答案與解析:javapublicbooleanisPalindrome(Strings){intleft=0,right=s.length()-1;while(left<right){if(s.charAt(left)!=s.charAt(right)){returnfalse;}left++;right--;}returntrue;}解析:-使用雙指針法,從字符串兩端向中間遍歷,比較對(duì)應(yīng)字符是否相同。-時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1),滿足不使用額外空間的要求。-可優(yōu)化:忽略非字母數(shù)字字符(如僅判斷`"abba"`),但題目未要求。2.題目(10分):實(shí)現(xiàn)一個(gè)無重復(fù)字符的最長子串函數(shù)。例如,輸入`"abcabcbb"`,返回`"abc"`(長度3)。輸入`"bbbbb"`,返回`"b"`(長度1)。答案與解析:javapublicintlengthOfLongestSubstring(Strings){int[]last=newint[128];Arrays.fill(last,-1);intmaxLen=0,start=0;for(inti=0;i<s.length();i++){charc=s.charAt(i);start=Math.max(start,last[c]+1);last[c]=i;maxLen=Math.max(maxLen,i-start+1);}returnmaxLen;}解析:-使用數(shù)組`last`記錄每個(gè)字符最近一次出現(xiàn)的位置,初始化為-1。-維護(hù)滑動(dòng)窗口的左邊界`start`,當(dāng)前字符`c`若已存在且位置大于等于`start`,則更新`start`。-時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)(固定數(shù)組長度128)。3.題目(10分):給定一個(gè)整數(shù)數(shù)組`nums`和一個(gè)目標(biāo)值`target`,返回`nums`中和為`target`的三個(gè)數(shù)的組合。例如,輸入`nums=[-1,0,1,2]`,`target=0`,返回`[[-1,0,1]]`。答案與解析:javapublicList<List<Integer>>threeSum(int[]nums){List<List<Integer>>res=newArrayList<>();if(nums==null||nums.length<3)returnres;Arrays.sort(nums);for(inti=0;i<nums.length-2;i++){if(i>0&&nums[i]==nums[i-1])continue;//跳過重復(fù)intleft=i+1,right=nums.length-1;while(left<right){intsum=nums[i]+nums[left]+nums[right];if(sum==target){res.add(Arrays.asList(nums[i],nums[left],nums[right]));while(left<right&&nums[left]==nums[left+1])left++;while(left<right&&nums[right]==nums[right-1])right--;left++;right--;}elseif(sum<target){left++;}else{right--;}}}returnres;}解析:-排序后固定一個(gè)數(shù),使用雙指針遍歷剩余部分。-時(shí)間復(fù)雜度O(n2),空間復(fù)雜度O(1)。-跳過重復(fù)元素避免重復(fù)組合。4.題目(10分):實(shí)現(xiàn)一個(gè)LRU(最近最少使用)緩存,支持`get`和`put`操作。例如:-初始化`capacity=2`。-`put(1,1)`→緩存為`{1=1}`。-`put(2,2)`→緩存為`{1=1,2=2}`。-`get(1)`→返回`1`,緩存更新為`{2=2,1=1}`。-`put(3,3)`→超出容量,刪除`2`,緩存為`{1=1,3=3}`。-`get(2)`→返回`-1`(未命中)。答案與解析:javaclassLRUCache{classNode{intkey,val;Nodeleft,right;Node(intk,intv){key=k;val=v;}}Map<Integer,Node>map=newHashMap<>();Nodehead=newNode(0,0),tail=newNode(0,0);intcapacity;publicLRUCache(intcap){capacity=cap;head.right=tail;tail.left=head;}publicintget(intkey){if(map.containsKey(key)){Nodenode=map.get(key);moveToHead(node);returnnode.val;}return-1;}publicvoidput(intkey,intvalue){if(map.containsKey(key)){Nodenode=map.get(key);node.val=value;moveToHead(node);}else{if(map.size()==capacity){map.remove(tail.left.key);removeNode(tail.left);}NodenewNode=newNode(key,value);map.put(key,newNode);addToHead(newNode);}}privatevoidmoveToHead(Nodenode){removeNode(node);addToHead(node);}privatevoidaddToHead(Nodenode){node.left=head;node.right=head.right;head.right.left=node;head.right=node;}privatevoidremoveNode(Nodenode){node.left.right=node.right;node.right.left=node.left;}}解析:-使用雙向鏈表+哈希表實(shí)現(xiàn)。鏈表頭為最近使用,尾為最久未使用。-`get`時(shí)移動(dòng)節(jié)點(diǎn)到頭部,`put`時(shí)先刪除最久未使用節(jié)點(diǎn)(若超容量),再添加新節(jié)點(diǎn)到頭部。-時(shí)間復(fù)雜度O(1),空間復(fù)雜度O(capacity)。5.題目(10分):給定一個(gè)二叉樹,判斷其是否為平衡二叉樹(左右子樹高度差不超過1)。例如:-`[3,9,20,null,null,15,7]`返回`true`。-`[1,2,2,3,3,null,null,4,4]`返回`false`。答案與解析:javapublicbooleanisBalanced(TreeNoderoot){returncheckHeight(root)!=-1;}privateintcheckHeight(TreeNodenode){if(node==null)return0;intleft=checkHeight(node.left);if(left==-1)return-1;//左子樹不平衡intright=checkHeight(node.right);if(right==-1)return-1;//右子樹不平衡if(Math.abs(left-right)>1)return-1;//當(dāng)前節(jié)點(diǎn)不平衡returnMath.max(left,right)+1;}解析:-遞歸計(jì)算左右子樹高度,若任意子樹不平衡(返回-1)或當(dāng)前節(jié)點(diǎn)不平衡(高度差>1),則整棵樹不平衡。-時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(h)(遞歸棧深度)。二、系統(tǒng)設(shè)計(jì)(共3題,每題20分,總分60分)1.題目(20分):設(shè)計(jì)一個(gè)短鏈接系統(tǒng)(如`tinyurl`)。用戶輸入長鏈接,系統(tǒng)返回短鏈接;點(diǎn)擊短鏈接可跳轉(zhuǎn)回原長鏈接。要求:-短鏈接唯一且可快速生成。-支持高并發(fā)訪問。-可擴(kuò)展(如支持自定義域名)。答案與解析:系統(tǒng)架構(gòu):1.前端服務(wù)(Nginx/LoadBalancer):負(fù)責(zé)路由請求,高可用部署。2.短鏈接服務(wù)(如Java/Go實(shí)現(xiàn)):-生成短ID(如62進(jìn)制隨機(jī)碼,如`aW3`)。-存儲(chǔ)映射關(guān)系(Redis/MySQL):`shortId->longUrl`。-緩存熱點(diǎn)短鏈接(Redis)。3.長鏈接服務(wù)(APIGateway):-跳轉(zhuǎn)邏輯:查緩存,若命中則返回;否則查數(shù)據(jù)庫,緩存后返回。4.自定義域名支持:DNS解析指向短鏈接服務(wù)。技術(shù)細(xì)節(jié):-ID生成:哈希算法(如SHA1)+Base62編碼(`a-z`+`A-Z`+`0-9`)。-高并發(fā)處理:-短鏈接服務(wù)使用無鎖隊(duì)列(RedisLua腳本)或分布式鎖生成ID。-分庫分表存儲(chǔ)映射關(guān)系(如按首字母分表)。-可擴(kuò)展性:-模塊化設(shè)計(jì)(生成、存儲(chǔ)、跳轉(zhuǎn)分離)。-支持集群部署(如Kubernetes)。2.題目(20分):設(shè)計(jì)一個(gè)高并發(fā)的秒殺系統(tǒng)。用戶輸入商品ID和數(shù)量,系統(tǒng)返回?fù)屬徑Y(jié)果(成功/失?。?。要求:-防止超賣(庫存不足時(shí)仍能搶購)。-高并發(fā)下系統(tǒng)穩(wěn)定。-實(shí)時(shí)反饋搶購結(jié)果。答案與解析:系統(tǒng)架構(gòu):1.前端(Web/App):-預(yù)加載庫存數(shù)據(jù)(Redis緩存)。-點(diǎn)擊秒殺時(shí)驗(yàn)證庫存(本地緩存優(yōu)先)。2.秒殺服務(wù)(APIGateway):-請求流水線(消息隊(duì)列如Kafka/RedisStream):異步處理,防超賣。-庫存扣減:Redis事務(wù)/Lua腳本保證原子性。3.庫存管理:-Redis計(jì)數(shù)器(樂觀鎖)。-MySQL備份(數(shù)據(jù)一致性)。4.結(jié)果反饋:-成功:返回訂單信息(MQ通知)。-失?。悍祷貛齑娌蛔慊蛞褤屚?。技術(shù)細(xì)節(jié):-防超賣:-秒殺請求先減庫存(Redis),再寫入訂單(MySQL)。-使用RedisWatch或Lua腳本保證原子性。-高并發(fā)優(yōu)化:-負(fù)載均衡(Nginx)。-限流(令牌桶算法)。-異步化處理(MQ解耦)。3.題目(20分):設(shè)計(jì)一個(gè)實(shí)時(shí)推薦系統(tǒng)(如淘寶首頁商品推薦)。要求:-輸入用戶行為(瀏覽、點(diǎn)擊、購買),動(dòng)態(tài)調(diào)整推薦。-支持離線+在線協(xié)同過濾。-高效擴(kuò)展。答案與解析:系統(tǒng)架構(gòu):1.數(shù)據(jù)采集層:-用戶行為日志(Flume/Kafka)→HDFS。2.離線計(jì)算(Spark):-用戶畫像(協(xié)同過濾、用戶標(biāo)簽)。-商品特征(TF-IDF、LDA)。-推薦模型(矩陣分解、深度學(xué)習(xí))。3.在線服務(wù)(Java/Go):-熱門推薦(Redis緩存)。-實(shí)時(shí)推薦(用戶實(shí)時(shí)行為觸發(fā)重計(jì)算)。4.前端(Web/App):-調(diào)用API獲取推薦列表。技術(shù)細(xì)節(jié):-推薦算法:-離線:MatrixFactorization(如SVD)。-在線:實(shí)時(shí)更新用戶特征向量。-實(shí)時(shí)性優(yōu)化:-流處理(Flink/SparkStreaming)更新模型。-緩存策略(LRU、預(yù)熱)。-擴(kuò)展性:-微服務(wù)化(用戶畫像、推薦引擎分離)。-分布式部署(如Spark集群)。三、數(shù)據(jù)庫與存儲(chǔ)(共2題,每題15分,總分30分)1.題目(15分):設(shè)計(jì)一個(gè)支持高并發(fā)讀寫的訂單表(`orders`),包含字段:`id`(主鍵)、`user_id`(用戶ID)、`total_amount`(訂單金額)、`status`(訂單狀態(tài),如待支付/已支付)、`create_time`(創(chuàng)建時(shí)間)。要求:-快速查詢用戶訂單。-支持事務(wù)性扣款。-性能優(yōu)化方案。答案與解析:表設(shè)計(jì):sqlCREATETABLEorders(idBIGINTAUTO_INCREMENTPRIMARYKEY,user_idBIGINTNOTNULL,total_amountDECIMAL(10,2)NOTNULL,statusENUM('pending','paid')DEFAULT'pending',create_timeTIMESTAMPDEFAULTCURRENT_TIMESTAMP,INDEXidx_user_id(user_id),INDEXidx_status_create(status,create_time));優(yōu)化方案:1.索引:-`user_id`高頻查詢,加索引。-`status`+`create_time`用于分頁查詢(如最新訂單)。2.事務(wù):-使用樂觀鎖(`version`字段)或分布式鎖(Redis)。-扣款時(shí)先減庫存(Redis原子操作),再更新訂單狀態(tài)。3.分表:-按月分表(`create_time`前綴)。-分庫(如按`user_id`哈希)。2.題目(15分):解釋MySQL中的MVCC(多版本并發(fā)控制)原理,并說明如何解決幻讀問題。答案與解析:MVCC原理:1.數(shù)據(jù)版本:-每個(gè)事務(wù)讀取的行都有一個(gè)快照版本(基于`REPEATABLEREAD`隔離級(jí)別)。-寫入時(shí),舊版本被標(biāo)記為刪除(`InnoDB`)。2.讀取過程:-`REPEATABLEREAD`:查詢時(shí)固定一個(gè)版本(事務(wù)開始時(shí)的狀態(tài))。-`READCOMMITTED`:每次讀取都獲取最新版本。3.實(shí)現(xiàn)機(jī)制:-`undolog`保存行的舊版本。-`readview`(快照)記錄事務(wù)開始時(shí)的數(shù)據(jù)可見性?;米x解決方案:-`REPEATABLEREAD`(MySQL默認(rèn))解決臟讀,但允許幻讀(如事務(wù)A掃描兩次,B插入新行)。-解決方法:-使用`SERIALIZABLE`隔離級(jí)別(鎖表,完全串行化)。-或通過應(yīng)用層邏輯處理(如掃描后重新檢查)。四、網(wǎng)絡(luò)與系統(tǒng)(共2題,每題15分,總分30分)1.題目(15分):解釋TCP三次握手和四次揮手過程,并說明為什么`TIME_WAIT`狀態(tài)需要存在。答案與解析:三次握手:1.`SYN`:客戶端發(fā)送`SYN=1`,請求連接。2.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職工業(yè)機(jī)器人(編程綜合實(shí)操)試題及答案
- 2025年大學(xué)測繪工程(地圖版權(quán)設(shè)計(jì))試題及答案
- 中職第二學(xué)年(電子技術(shù)應(yīng)用)電子元器件識(shí)別2026年試題及答案
- 2025年高職數(shù)控技術(shù)(機(jī)床操作)試題及答案
- 高職第三學(xué)年(工業(yè)分析技術(shù))工業(yè)樣品檢測2026年綜合測試題及答案
- 2026屆廣西柳州市高考一模地理模擬試卷(含答案詳解)
- 深度解析(2026)《GBT 18004-1999輥式砂光機(jī)通 用技術(shù)條件》
- 深度解析(2026)《GBT 17980.123-2004農(nóng)藥 田間藥效試驗(yàn)準(zhǔn)則(二) 第123部分殺菌劑防治葡萄黑痘病》
- 深度解析(2026)《GBT 17980.7-2000農(nóng)藥 田間藥效試驗(yàn)準(zhǔn)則(一) 殺螨劑防治蘋果葉螨》
- 深度解析(2026)《GBT 17623-2017絕緣油中溶解氣體組分含量的氣相色譜測定法》(2026年)深度解析
- 企業(yè)安全管理年度總結(jié)
- 國家開放大學(xué)電大本科《政府經(jīng)濟(jì)學(xué)》2025年期末試題及答案
- 景區(qū)應(yīng)急預(yù)案法規(guī)
- 毛皮學(xué)課件教學(xué)課件
- 測繪地理信息安全保密管理制度
- 智慧樹知道網(wǎng)課《外國文學(xué)史(山東聯(lián)盟)》課后章節(jié)測試滿分答案
- 污水處理極端天氣應(yīng)急預(yù)案
- 靜脈留置針沖封管課件
- 2025ESC心肌炎與心包炎管理指南解讀
- 辦公室節(jié)約課件
- 2025-2026秋學(xué)生國旗下演講稿:第17周呵護(hù)心靈擁抱陽光成長-心理健康教育
評(píng)論
0/150
提交評(píng)論