版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2026年騰訊公司技術(shù)面試全解析及答案一、編程基礎(chǔ)(5題,每題10分,共50分)1.題目:請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),輸入一個(gè)正整數(shù)`n`,返回`n`的階乘。要求不使用遞歸,且考慮大數(shù)問(wèn)題(即結(jié)果可能超過(guò)`int`或`long`的范圍)。答案:javaimportjava.math.BigInteger;publicclassFactorial{publicstaticBigIntegerfactorial(intn){BigIntegerresult=BigInteger.ONE;for(inti=2;i<=n;i++){result=result.multiply(BigInteger.valueOf(i));}returnresult;}publicstaticvoidmain(String[]args){System.out.println(factorial(100));//輸出100的階乘}}解析:-使用`BigInteger`類(lèi)處理大數(shù),避免溢出。-避免遞歸以優(yōu)化性能和內(nèi)存使用。-循環(huán)從`2`開(kāi)始乘到`n`,因?yàn)閌1`的階乘是`1`。2.題目:給定一個(gè)字符串`s`,請(qǐng)判斷它是否是一個(gè)有效的括號(hào)字符串(只包含`'('`和`')'`,且括號(hào)匹配)。答案:javapublicclassParenthesesValidator{publicstaticbooleanisValid(Strings){Stack<Character>stack=newStack<>();for(charc:s.toCharArray()){if(c=='('){stack.push(c);}elseif(c==')'){if(stack.isEmpty())returnfalse;stack.pop();}}returnstack.isEmpty();}publicstaticvoidmain(String[]args){System.out.println(isValid("()"));//trueSystem.out.println(isValid("(()"));//false}}解析:-使用棧結(jié)構(gòu)匹配括號(hào),左括號(hào)入棧,右括號(hào)出棧。-如果棧為空時(shí)遇到右括號(hào)或最后棧不為空,則無(wú)效。3.題目:請(qǐng)實(shí)現(xiàn)一個(gè)快速排序算法,并分析其時(shí)間復(fù)雜度。答案:javapublicclassQuickSort{publicstaticvoidquickSort(int[]arr,intleft,intright){if(left<right){intpivotIndex=partition(arr,left,right);quickSort(arr,left,pivotIndex-1);quickSort(arr,pivotIndex+1,right);}}privatestaticintpartition(int[]arr,intleft,intright){intpivot=arr[right];inti=left-1;for(intj=left;j<right;j++){if(arr[j]<=pivot){i++;swap(arr,i,j);}}swap(arr,i+1,right);returni+1;}privatestaticvoidswap(int[]arr,inti,intj){inttemp=arr[i];arr[i]=arr[j];arr[j]=temp;}publicstaticvoidmain(String[]args){int[]arr={3,1,4,1,5,9,2,6};quickSort(arr,0,arr.length-1);for(intnum:arr)System.out.print(num+"");//輸出排序后數(shù)組}}解析:-快速排序時(shí)間復(fù)雜度:平均`O(nlogn)`,最壞`O(n^2)`(選擇不均勻的樞軸)。-通過(guò)分治法實(shí)現(xiàn),選擇右端為樞軸,分區(qū)后遞歸排序。4.題目:給定一個(gè)鏈表,請(qǐng)反轉(zhuǎn)它并返回反轉(zhuǎn)后的頭節(jié)點(diǎn)。答案:javaclassListNode{intval;ListNodenext;ListNode(intx){val=x;}}publicclassReverseLinkedList{publicstaticListNodereverseList(ListNodehead){ListNodeprev=null;ListNodecurrent=head;while(current!=null){ListNodenextTemp=current.next;current.next=prev;prev=current;current=nextTemp;}returnprev;}publicstaticvoidmain(String[]args){ListNodehead=newListNode(1);head.next=newListNode(2);head.next.next=newListNode(3);ListNodereversed=reverseList(head);//打印反轉(zhuǎn)后的鏈表}}解析:-迭代反轉(zhuǎn)鏈表,使用三個(gè)指針:`prev`、`current`、`nextTemp`。-時(shí)間復(fù)雜度`O(n)`,空間復(fù)雜度`O(1)`。5.題目:請(qǐng)實(shí)現(xiàn)一個(gè)二叉樹(shù)的深度優(yōu)先遍歷(前序、中序、后序),并選擇其中一種實(shí)現(xiàn)。答案:javaclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intx){val=x;}}publicclassBinaryTreeTraversal{//前序遍歷(根-左-右)publicstaticvoidpreOrder(TreeNoderoot){if(root==null)return;System.out.print(root.val+"");preOrder(root.left);preOrder(root.right);}publicstaticvoidmain(String[]args){TreeNoderoot=newTreeNode(1);root.left=newTreeNode(2);root.right=newTreeNode(3);preOrder(root);//輸出:123}}解析:-前序遍歷:根節(jié)點(diǎn)先處理,再遞歸左子樹(shù)和右子樹(shù)。-時(shí)間復(fù)雜度`O(n)`,空間復(fù)雜度`O(h)`(`h`為樹(shù)的高度)。二、系統(tǒng)設(shè)計(jì)(2題,每題25分,共50分)1.題目:設(shè)計(jì)一個(gè)短鏈接(TinyURL)系統(tǒng)。要求:-輸入任意長(zhǎng)鏈接,返回短鏈接。-支持短鏈接回溯到原鏈接。-高并發(fā)場(chǎng)景下性能良好。答案:javaimportjava.util.UUID;publicclassTinyURL{privateMap<String,String>longToShort=newHashMap<>();privateMap<String,String>shortToLong=newHashMap<>();publicStringencode(StringlongUrl){StringshortKey=UUID.randomUUID().toString().substring(0,8);while(shortToLong.containsKey(shortKey)){shortKey=UUID.randomUUID().toString().substring(0,8);}longToShort.put(longUrl,shortKey);shortToLong.put(shortKey,longUrl);return"/"+shortKey;}publicStringdecode(StringshortUrl){StringshortKey=shortUrl.substring(16);returnshortToLong.getOrDefault(shortKey,"InvalidURL");}publicstaticvoidmain(String[]args){TinyURLtiny=newTinyURL();StringshortUrl=tiny.encode("/article");System.out.println(shortUrl);//e.g.,/a1b2c3d4System.out.println(tiny.decode(shortUrl));//輸出原鏈接}}解析:-使用`UUID`生成唯一短鍵,避免沖突。-雙向映射表存儲(chǔ)長(zhǎng)鏈接和短鏈接,支持快速回溯。-高并發(fā)下可優(yōu)化:使用分布式ID生成器、緩存層(Redis)。2.題目:設(shè)計(jì)一個(gè)實(shí)時(shí)消息推送系統(tǒng)(如微信、抖音)。要求:-支持多用戶訂閱和發(fā)布消息。-保證消息的實(shí)時(shí)性和可靠性。-支持消息離線存儲(chǔ)。答案:javaimportjava.util.;publicclassMessagePushSystem{//用戶訂閱關(guān)系Map<String,Set<String>>userSubscriptions=newHashMap<>();//消息隊(duì)列Queue<String>messageQueue=newLinkedList<>();//消息存儲(chǔ)(離線)Map<String,List<String>>offlineMessages=newHashMap<>();//訂閱消息publicvoidsubscribe(StringuserId,Stringtopic){userSputeIfAbsent(userId,k->newHashSet<>()).add(topic);}//發(fā)布消息publicvoidpublish(Stringtopic,Stringmessage){messageQueue.offer(message);for(Map.Entry<String,Set<String>>entry:userSubscriptions.entrySet()){if(entry.getValue().contains(topic)){deliverMessage(entry.getKey(),message);}else{storeOfflineMessage(entry.getKey(),message);}}}//推送消息privatevoiddeliverMessage(StringuserId,Stringmessage){//實(shí)際推送邏輯(WebSocket、MQ等)System.out.println("Pushto"+userId+":"+message);}//離線存儲(chǔ)privatevoidstoreOfflineMessage(StringuserId,Stringmessage){offlineMputeIfAbsent(userId,k->newArrayList<>()).add(message);}publicstaticvoidmain(String[]args){MessagePushSystemsystem=newMessagePushSystem();system.subscribe("user1","news");system.subscribe("user2","news");system.publish("news","Breakingnews!");//輸出:Pushtouser1:Breakingnews!Pushtouser2:Breakingnews!}}解析:-用戶訂閱`topic`,發(fā)布時(shí)向訂閱者推送消息。-實(shí)時(shí)推送:使用消息隊(duì)列(如Kafka)。-離線存儲(chǔ):將未及時(shí)送達(dá)的消息存入Redis或數(shù)據(jù)庫(kù)。-可擴(kuò)展性:分布式部署、負(fù)載均衡。三、數(shù)據(jù)庫(kù)與存儲(chǔ)(3題,每題15分,共45分)1.題目:解釋數(shù)據(jù)庫(kù)事務(wù)的ACID特性,并舉例說(shuō)明為何需要事務(wù)。答案:-原子性(Atomicity):事務(wù)中的所有操作要么全部成功,要么全部失敗。-示例:轉(zhuǎn)賬操作,扣款和加款必須同時(shí)成功或失敗。-一致性(Consistency):事務(wù)執(zhí)行后數(shù)據(jù)庫(kù)狀態(tài)必須符合業(yè)務(wù)規(guī)則。-示例:庫(kù)存扣減不能小于0。-隔離性(Isolation):并發(fā)事務(wù)互不干擾。-示例:兩個(gè)事務(wù)同時(shí)修改同一行數(shù)據(jù),一個(gè)成功一個(gè)失敗。-持久性(Durability):事務(wù)提交后數(shù)據(jù)永久保存。-示例:寫(xiě)入磁盤(pán)后即使斷電數(shù)據(jù)不丟失。解析:-事務(wù)用于保證數(shù)據(jù)操作的完整性和可靠性。-關(guān)鍵場(chǎng)景:金融、訂單系統(tǒng)等
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廣告行業(yè)規(guī)范與操作指南
- 復(fù)學(xué)學(xué)生自購(gòu)口罩申請(qǐng)書(shū)
- 護(hù)士招聘面試題目及答案
- 幾日內(nèi)提出聽(tīng)證的申請(qǐng)書(shū)
- 夏季養(yǎng)老護(hù)理員培訓(xùn)課件
- 腫瘤醫(yī)院綜合治療中心建設(shè)項(xiàng)目實(shí)施方案
- 施工現(xiàn)場(chǎng)職能劃分與管理方案
- 法碩文職面試題目及答案
- 競(jìng)聘教師面試題目及答案
- 工程項(xiàng)目合作模式方案
- 四川省南充市2024-2025學(xué)年高一上學(xué)期期末質(zhì)量檢測(cè)語(yǔ)文試題(含答案)
- 甲烷活化機(jī)制研究
- 住培中醫(yī)病例討論-面癱
- 設(shè)備安裝施工方案范本
- 衛(wèi)生院副院長(zhǎng)先進(jìn)事跡材料
- 復(fù)發(fā)性抑郁癥個(gè)案查房課件
- 人類(lèi)學(xué)概論(第四版)課件 第1、2章 人類(lèi)學(xué)要義第一節(jié)何為人類(lèi)學(xué)、人類(lèi)學(xué)的理論發(fā)展過(guò)程
- 《功能性食品學(xué)》第七章-輔助改善記憶的功能性食品
- 幕墻工程竣工驗(yàn)收?qǐng)?bào)告2-2
- 1、工程竣工決算財(cái)務(wù)審計(jì)服務(wù)項(xiàng)目投標(biāo)技術(shù)方案
- 改進(jìn)維持性血液透析患者貧血狀況PDCA
評(píng)論
0/150
提交評(píng)論