2026年騰訊公司技術(shù)部面試題集_第1頁
2026年騰訊公司技術(shù)部面試題集_第2頁
2026年騰訊公司技術(shù)部面試題集_第3頁
2026年騰訊公司技術(shù)部面試題集_第4頁
2026年騰訊公司技術(shù)部面試題集_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡介

2026年騰訊公司技術(shù)部面試題集編程能力測試(共5題,每題20分)1.題目:實(shí)現(xiàn)一個(gè)函數(shù),輸入一個(gè)非負(fù)整數(shù)`n`,返回`n`的二進(jìn)制表示中`1`的個(gè)數(shù)。例如:`countBits(5)`返回`2`,因?yàn)閌5`的二進(jìn)制表示為`101`,有`2`個(gè)`1`。要求:時(shí)間復(fù)雜度不超過O(logn)。2.題目:編寫一個(gè)函數(shù)`merge`,將兩個(gè)有序鏈表合并為一個(gè)新的有序鏈表,并返回合并后的鏈表的頭節(jié)點(diǎn)。鏈表節(jié)點(diǎn)定義如下:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=next示例:輸入:`l1=[1,2,4]`,`l2=[1,3,4]`輸出:`[1,1,2,3,4,4]`3.題目:給定一個(gè)字符串`s`,找到其中最長的回文子串。例如:`longestPalindrome("babad")`可以返回`"bab"`或`"aba"`。要求:時(shí)間復(fù)雜度不超過O(n2)。4.題目:實(shí)現(xiàn)一個(gè)LRU(最近最少使用)緩存,支持`get`和`put`操作。緩存容量為`capacity`。示例:pythonlru=LRUCache(2)lru.put(1,1)lru.put(2,2)lru.get(1)//返回1lru.put(3,3)//去除鍵2lru.get(2)//返回-1(未找到)5.題目:編寫一個(gè)函數(shù),判斷一個(gè)字符串是否是另一個(gè)字符串的子序列。例如:`isSubsequence("abc","ahbgdc")`返回`True`,因?yàn)閌"abc"`是`"ahbgdc"`的子序列。要求:時(shí)間復(fù)雜度不超過O(n)。算法設(shè)計(jì)測試(共4題,每題25分)1.題目:設(shè)計(jì)一個(gè)算法,找到無序數(shù)組中第三大的數(shù)。如果數(shù)組中少于三個(gè)元素,返回最大的數(shù)。例如:`thirdMax([1,2,-2147483648])`返回`1`。要求:時(shí)間復(fù)雜度不超過O(n)。2.題目:給定一個(gè)`mxn`的矩陣,每一行和每一列都按升序排列。實(shí)現(xiàn)一個(gè)函數(shù),返回矩陣中第`k`小的元素。例如:pythonmatrix=[[1,5,9],[10,11,13],[12,13,15]]k=8//返回13要求:時(shí)間復(fù)雜度不超過O(mn)。3.題目:設(shè)計(jì)一個(gè)算法,將一個(gè)無重復(fù)元素的數(shù)組分成兩個(gè)子數(shù)組,使得兩個(gè)子數(shù)組的和的差的絕對值最小。例如:`splitArray([1,2,3,4,5])`可以分成`[1,2,3]`和`[4,5]`,和的差為`3`。要求:時(shí)間復(fù)雜度不超過O(n2)。4.題目:給定一個(gè)包含`n`個(gè)整數(shù)的數(shù)組`nums`,判斷該數(shù)組是否可以劃分為至少`k`個(gè)連續(xù)的整數(shù)序列。例如:`nums=[1,2,3,3,4,5]`,`k=3`,可以劃分為`[1,2,3]`,`[3,4,5]`,返回`True`。要求:時(shí)間復(fù)雜度不超過O(nlogn)。系統(tǒng)設(shè)計(jì)測試(共3題,每題30分)1.題目:設(shè)計(jì)一個(gè)高并發(fā)的短鏈接生成系統(tǒng)。要求:-鏈接長度不超過6位;-支持高并發(fā)訪問;-鏈接唯一且可快速解析回原始URL。要求:說明設(shè)計(jì)思路、數(shù)據(jù)結(jié)構(gòu)、存儲(chǔ)方案及高并發(fā)處理方式。2.題目:設(shè)計(jì)一個(gè)實(shí)時(shí)推薦系統(tǒng),輸入用戶的行為日志(如點(diǎn)擊、購買等),實(shí)時(shí)推薦用戶可能感興趣的商品。要求:-支持實(shí)時(shí)更新;-推薦結(jié)果需考慮用戶歷史行為和實(shí)時(shí)行為;-高可用、可擴(kuò)展。要求:說明系統(tǒng)架構(gòu)、數(shù)據(jù)存儲(chǔ)方案、推薦算法及高可用設(shè)計(jì)。3.題目:設(shè)計(jì)一個(gè)分布式消息隊(duì)列(如Kafka),要求:-支持高吞吐量;-保證消息的順序性;-可靠性(不丟失消息);-支持分區(qū)和擴(kuò)展。要求:說明系統(tǒng)架構(gòu)、數(shù)據(jù)一致性保證機(jī)制、分區(qū)策略及可擴(kuò)展性設(shè)計(jì)。答案與解析編程能力測試1.答案:pythondefcountBits(n):count=0whilen:count+=n&1n>>=1returncount解析:使用位運(yùn)算,每次將`n`右移一位,統(tǒng)計(jì)最低位的`1`的個(gè)數(shù)。時(shí)間復(fù)雜度為O(logn)。2.答案:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefmerge(l1,l2):dummy=ListNode(0)current=dummywhilel1andl2:ifl1.val<l2.val:current.next=l1l1=l1.nextelse:current.next=l2l2=l2.nextcurrent=current.nextcurrent.next=l1orl2returndummy.next解析:使用虛擬頭節(jié)點(diǎn),比較兩個(gè)鏈表的當(dāng)前節(jié)點(diǎn),逐個(gè)合并到新鏈表中。時(shí)間復(fù)雜度為O(m+n)。3.答案:pythondeflongestPalindrome(s):ifnots:return""start,end=0,0foriinrange(len(s)):len1=expandAroundCenter(s,i,i)len2=expandAroundCenter(s,i,i+1)max_len=max(len1,len2)ifmax_len>end-start:start=i-(max_len-1)//2end=i+max_len//2returns[start:end+1]defexpandAroundCenter(s,left,right):whileleft>=0andright<len(s)ands[left]==s[right]:left-=1right+=1returnright-left-1解析:雙指針法,遍歷每個(gè)字符,以該字符為中心向兩邊擴(kuò)展,記錄最長回文子串。時(shí)間復(fù)雜度為O(n2)。4.答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache=OrderedDict()defget(self,key:int)->int:ifkeynotinself.cache:return-1self.cache.move_to_end(key)returnself.cache[key]defput(self,key:int,value:int)->None:self.cache[key]=valueself.cache.move_to_end(key)iflen(self.cache)>self.capacity:self.cache.popitem(last=False)解析:使用`OrderedDict`維護(hù)緩存順序,`get`時(shí)移動(dòng)到末尾,`put`時(shí)插入并移動(dòng)到末尾,超出容量時(shí)刪除最舊的元素。時(shí)間復(fù)雜度為O(1)。5.答案:pythondefisSubsequence(s:str,t:str)->bool:m,n=len(s),len(t)i,j=0,0whilei<mandj<n:ifs[i]==t[j]:i+=1j+=1returni==m解析:雙指針法,逐個(gè)匹配`s`和`t`的字符,如果`s[i]==t[j]`則移動(dòng)`i`,`j`始終移動(dòng)。時(shí)間復(fù)雜度為O(n)。算法設(shè)計(jì)測試1.答案:pythondefthirdMax(nums):first,second,third=float('-inf'),float('-inf'),float('-inf')fornuminnums:ifnum>first:first,second,third=num,first,secondeliffirst>num>second:second,third=num,secondelifsecond>num>third:third=numreturnthirdifthird!=float('-inf')elsefirst解析:遍歷數(shù)組,維護(hù)三個(gè)變量記錄最大、次大、第三大的數(shù)。時(shí)間復(fù)雜度為O(n)。2.答案:pythonimportheapqdefkthSmallest(matrix,k):min_heap=[(matrix[0][0],0,0)]visited=set([(0,0)])for_inrange(k):val,i,j=heapq.heappop(min_heap)ifi+1<len(matrix):if(i+1,j)notinvisited:heapq.heappush(min_heap,(matrix[i+1][j],i+1,j))visited.add((i+1,j))ifj+1<len(matrix):if(i,j+1)notinvisited:heapq.heappush(min_heap,(matrix[i][j+1],i,j+1))visited.add((i,j+1))returnval解析:使用小頂堆,初始堆頂為左上角元素,每次彈出堆頂并加入相鄰元素。時(shí)間復(fù)雜度為O(klogk)。3.答案:pythondefsplitArray(nums):n=len(nums)dp=[[float('inf')](n+1)for_inrange(n+1)]dp[0][0]=0foriinrange(1,n+1):forjinrange(i):total=sum(nums[j:i])ifdp[j][i-j-1]!=float('inf'):dp[i][j]=min(dp[i][j],abs(total-sum(nums[i:])))returnmin(dp[n])解析:動(dòng)態(tài)規(guī)劃,`dp[i][j]`表示從`j`到`i`的子數(shù)組和的差的絕對值最小值。時(shí)間復(fù)雜度為O(n2)。4.答案:pythondefcanPartition(nums,k):iflen(nums)<k:returnFalsenums.sort()target=sum(nums)//kifsum(nums)%k!=0:returnFalsebuckets=[0]kreturnbacktrack(nums,0,buckets,target)defbacktrack(nums,index,buckets,target):ifindex==len(nums):returnall(bucket==targetforbucketinbuckets)foriinrange(k):ifbuckets[i]+nums[index]>target:continueifi>0andbuckets[i]==buckets[i-1]:continuebuckets[i]+=nums[index]ifbacktrack(nums,index+1,buckets,target):returnTruebuckets[i]-=nums[index]returnFalse解析:排序后貪心分配,使用回溯法嘗試將每個(gè)數(shù)字分配到合適的桶中。時(shí)間復(fù)雜度為O(nk)。系統(tǒng)設(shè)計(jì)測試1.答案:設(shè)計(jì)思路:-使用Base62編碼(a-z,A-Z,0-9)將數(shù)字映射為短鏈接;-使用哈希表(如Redis)緩存原始URL和短鏈接的映射;-高并發(fā)處理:使用分布式緩存+負(fù)載均衡(如Nginx)。數(shù)據(jù)結(jié)構(gòu):-哈希表:`{"short":"original_url"}`;-Base62編碼:`defencode(num):`。高并發(fā)處理:-負(fù)載均衡:多個(gè)服務(wù)實(shí)例通過Nginx分發(fā)請求;-分布式緩存:Redis分布式鎖防止沖突;-異步寫入:使用消息隊(duì)列(如Kafka)緩沖寫入操作。2.答案:系統(tǒng)架構(gòu):-用戶行為日志收集:Flume/Kafka;-實(shí)時(shí)計(jì)算:Flink/SparkStreaming;-推薦引擎:協(xié)同過濾+實(shí)時(shí)特征加權(quán)。數(shù)據(jù)存儲(chǔ):-用戶行為:Red

溫馨提示

  • 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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論