版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2026年IT部門程序員面試題及答案一、編程語言基礎(chǔ)(共5題,每題10分,總分50分)1.題目(Java):編寫一個Java方法,實(shí)現(xiàn)將一個字符串中的所有空格替換為"%20"。要求:時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。示例:輸入"HelloWorld",輸出"Hello%20World"。答案:javapublicclassURLify{publicstaticvoidreplaceSpaces(char[]str,inttrueLength){intspaceCount=0;for(inti=0;i<trueLength;i++){if(str[i]==''){spaceCount++;}}intindex=trueLength+spaceCount2;for(inti=trueLength-1;i>=0;i--){if(str[i]==''){str[index-1]='0';str[index-2]='2';str[index-3]='%';index-=3;}else{str[index-1]=str[i];index--;}}}publicstaticvoidmain(String[]args){char[]str="HelloWorld".toCharArray();replaceSpaces(str,11);System.out.println(str);}}解析:-首先統(tǒng)計(jì)字符串中空格的數(shù)量,計(jì)算替換后的長度(每個空格替換為"%20"占用3個字符)。-從后向前遍歷字符串,避免覆蓋未處理的字符??崭駝t替換為"%20",其他字符直接前移。2.題目(Python):實(shí)現(xiàn)一個函數(shù),判斷一個字符串是否為回文(忽略大小寫和空格)。示例:輸入"racecar",輸出`True`;輸入"hello",輸出`False`。答案:pythondefis_palindrome(s:str)->bool:s=''.join(c.lower()forcinsifc.isalnum())returns==s[::-1]測試print(is_palindrome("racecar"))#Trueprint(is_palindrome("hello"))#False解析:-去除字符串中的非字母數(shù)字字符并轉(zhuǎn)換為小寫。-判斷處理后的字符串是否與反轉(zhuǎn)字符串相同。3.題目(C++):編寫一個C++函數(shù),找出數(shù)組中重復(fù)次數(shù)最多的元素及其重復(fù)次數(shù)。示例:輸入`[1,2,2,3,3,3]`,輸出`(3,3)`。答案:cppinclude<iostream>include<unordered_map>include<vector>usingnamespacestd;pair<int,int>findMaxFrequency(constvector<int>&nums){unordered_map<int,int>freq;for(intnum:nums){freq[num]++;}intmaxFreq=0,maxNum=0;for(constauto&[num,count]:freq){if(count>maxFreq){maxFreq=count;maxNum=num;}}return{maxNum,maxFreq};}intmain(){vector<int>nums={1,2,2,3,3,3};auto[num,freq]=findMaxFrequency(nums);cout<<"("<<num<<","<<freq<<")"<<endl;return0;}解析:-使用哈希表統(tǒng)計(jì)每個數(shù)字的頻率。-遍歷哈希表,記錄最大頻率及其對應(yīng)的數(shù)字。4.題目(JavaScript):實(shí)現(xiàn)一個JavaScript函數(shù),將一個數(shù)組中的所有0移動到數(shù)組的末尾,保持非零元素的相對順序。示例:輸入`[0,1,0,3,12]`,輸出`[1,3,12,0,0]`。答案:javascriptfunctionmoveZeroes(nums){letinsertPos=0;for(letnumofnums){if(num!==0){nums[insertPos++]=num;}}while(insertPos<nums.length){nums[insertPos++]=0;}}//測試moveZeroes([0,1,0,3,12]);console.log([0,1,0,3,12]);//[1,3,12,0,0]解析:-雙指針法:一個指針用于遍歷數(shù)組,另一個指針用于記錄非零元素的位置。-遍歷結(jié)束后,將剩余位置填充為0。5.題目(Go):編寫一個Go函數(shù),計(jì)算一個鏈表的中間節(jié)點(diǎn)。假設(shè)鏈表長度為奇數(shù)或偶數(shù)。示例:輸入`1->2->3->4->5`,輸出`3`。答案:gopackagemainimport"fmt"typeListNodestruct{ValintNextListNode}funcmiddleNode(headListNode)ListNode{slow,fast:=head,headforfast!=nil&&fast.Next!=nil{slow=slow.Nextfast=fast.Next.Next}returnslow}funcmain(){//構(gòu)建鏈表1->2->3->4->5head:=&ListNode{1,nil}head.Next=&ListNode{2,nil}head.Next.Next=&ListNode{3,nil}head.Next.Next.Next=&ListNode{4,nil}head.Next.Next.Next.Next=&ListNode{5,nil}mid:=middleNode(head)fmt.Println(mid.Val)//輸出3}解析:-快慢指針法:慢指針每次移動1步,快指針每次移動2步。當(dāng)快指針到達(dá)末尾時(shí),慢指針位于中間。二、數(shù)據(jù)結(jié)構(gòu)與算法(共5題,每題10分,總分50分)6.題目(二叉樹):給定一個二叉搜索樹,刪除一個節(jié)點(diǎn)并返回新的二叉搜索樹。示例:輸入樹`[5,3,6,2,4,null,7]`,刪除節(jié)點(diǎn)3,輸出`[5,4,6,2,null,null,7]`。答案:pythonDefinitionforabinarytreenode.classTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefdeleteNode(root:TreeNode,key:int)->TreeNode:ifnotroot:returnNoneifkey<root.val:root.left=deleteNode(root.left,key)elifkey>root.val:root.right=deleteNode(root.right,key)else:ifnotroot.left:returnroot.rightelifnotroot.right:returnroot.lefttemp=findMin(root.right)root.val=temp.valroot.right=deleteNode(root.right,temp.val)returnrootdeffindMin(node:TreeNode)->TreeNode:whilenode.left:node=node.leftreturnnode解析:-如果要刪除的節(jié)點(diǎn)是葉子節(jié)點(diǎn),直接返回None。-如果要刪除的節(jié)點(diǎn)只有一個子節(jié)點(diǎn),用子節(jié)點(diǎn)替換當(dāng)前節(jié)點(diǎn)。-如果要刪除的節(jié)點(diǎn)有兩個子節(jié)點(diǎn),用右子樹的最小節(jié)點(diǎn)替換當(dāng)前節(jié)點(diǎn),并遞歸刪除該最小節(jié)點(diǎn)。7.題目(動態(tài)規(guī)劃):給定一個數(shù)組,返回其中不重復(fù)的三元組,使三個數(shù)的和為0。示例:輸入`[-1,0,1,2,-1,-4]`,輸出`[[-1,-1,2],[-1,0,1]]`。答案:pythondefthreeSum(nums):nums.sort()result=[]n=len(nums)foriinrange(n-2):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==0:result.append([nums[i],nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1right-=1eliftotal<0:left+=1else:right-=1returnresult測試print(threeSum([-1,0,1,2,-1,-4]))解析:-排序后,使用雙指針法固定第一個數(shù),然后在剩余部分中尋找和為0的兩個數(shù)。-跳過重復(fù)的數(shù)字以避免重復(fù)的三元組。8.題目(圖算法):給定一個無向圖,判斷是否存在環(huán)。示例:輸入`[[1,2],[2,3],[3,4],[4,2]]`,輸出`True`(存在環(huán)2-3-4-2)。答案:pythondefhasCycle(n,edges):graph=[[]for_inrange(n+1)]foru,vinedges:graph[u].append(v)graph[v].append(u)visited=[False](n+1)defdfs(node,parent):ifvisited[node]:returnTruevisited[node]=Trueforneighboringraph[node]:ifneighbor!=parentanddfs(neighbor,node):returnTruereturnFalseforiinrange(1,n+1):ifnotvisited[i]anddfs(i,-1):returnTruereturnFalse測試print(hasCycle(4,[[1,2],[2,3],[3,4],[4,2]]))#True解析:-使用深度優(yōu)先搜索(DFS)遍歷圖,標(biāo)記已訪問節(jié)點(diǎn)。-如果在遍歷過程中遇到已訪問的節(jié)點(diǎn)且該節(jié)點(diǎn)不是父節(jié)點(diǎn),則存在環(huán)。9.題目(堆):實(shí)現(xiàn)一個數(shù)據(jù)流的中位數(shù)查找。示例:輸入`[5,2,3,1,5]`,輸出`[5,4,4,3,5]`(中位數(shù)分別為5,4,4,3,5)。答案:pythonimportheapqclassMedianFinder:def__init__(self):self.left=[]#maxheap(usenegativevalues)self.right=[]#minheapdefaddNum(self,num):ifnotself.leftornum<=-self.left[0]:heapq.heappush(self.left,-num)else:heapq.heappush(self.right,num)Balanceheapsiflen(self.left)>len(self.right)+1:heapq.heappush(self.right,-heapq.heappop(self.left))eliflen(self.right)>len(self.left):heapq.heappush(self.left,-heapq.heappop(self.right))deffindMedian(self):iflen(self.left)>len(self.right):return-self.left[0]return(-self.left[0]+self.right[0])/2測試medianFinder=MedianFinder()stream=[5,2,3,1,5]results=[]fornuminstream:medianFinder.addNum(num)results.append(medianFinder.findMedian())print(results)#[5,4,4,3,5]解析:-使用兩個堆:左堆(最大堆)存儲較小的一半,右堆(最小堆)存儲較大的一半。-添加數(shù)字時(shí)保持堆平衡,中位數(shù)由堆頂決定。10.題目(字符串匹配):實(shí)現(xiàn)KMP算法,查找字符串中的子串。示例:輸入主串`"ABABDABACDABABCABAB"`和子串`"ABABCABAB"`,輸出`10`(子串起始位置)。答案:pythondefkmp_search(text,pattern):defcompute_lps(pattern):lps=[0]len(pattern)length=0i=1whilei<len(pattern):ifpattern[i]==pattern[length]:length+=1lps[i]=lengthi+=1else:iflength!=0:length=lps[length-1]else:lps[i]=0i+=1returnlpslps=compute_lps(pattern)i=j=0whilei<len(text):ifpattern[j]==text[i]:i+=1j+=1ifj==len(pattern):returni-jelifi<len(text)andpattern[j]!=text[i]:ifj!=0:j=lps[j-1]else:i+=1return-1測試print(kmp_search("ABABDABACDABABCABAB","ABABCABAB"))#10解析:-KMP算法通過預(yù)處理子串計(jì)算部分匹配表(LPS數(shù)組),避免重復(fù)比較。-遇到不匹配時(shí),利用LPS數(shù)組移動子串位置。三、系統(tǒng)設(shè)計(jì)(共3題,每題20分,總分60分)11.題目(短鏈接系統(tǒng)):設(shè)計(jì)一個短鏈接系統(tǒng),要求:-輸入長鏈接,輸出短鏈接(如`/abc123`)。-支持分布式部署,高可用。-支持實(shí)時(shí)訪問統(tǒng)計(jì)。答案:1.數(shù)據(jù)結(jié)構(gòu):-使用哈希表存儲長鏈接到短鏈接的映射(Redis或Memcached)。-短鏈接使用62進(jìn)制隨機(jī)字符串(a-z,A-Z,0-9)生成,確保唯一性。2.分布式部署:-使用分布式緩存(如RedisCluster)存儲映射關(guān)系。-通過負(fù)載均衡器(如Nginx)分發(fā)請求。3.訪問統(tǒng)計(jì):-使用Redis的計(jì)數(shù)器或發(fā)布/訂閱機(jī)制記錄點(diǎn)擊次數(shù)。-可擴(kuò)展為時(shí)序數(shù)據(jù)庫(如InfluxDB)存儲歷史數(shù)據(jù)。4.高可用:-配置Red
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 妊娠合并心臟病產(chǎn)后抗凝的出血預(yù)防策略
- 叉車安全駕駛試題及答案
- 妊娠合并vEDS的血管超聲動態(tài)監(jiān)測策略
- 2026年配電工考試題庫及答案
- 婦幼保健多部門協(xié)作質(zhì)控體系
- 頭頸腫瘤MDT的吞咽功能康復(fù)策略
- 大數(shù)據(jù)驅(qū)動下的精準(zhǔn)醫(yī)療健康管理新模式
- 木門考試試卷及答案
- 學(xué)習(xí)考試試題及答案
- 2025年高職(鐵道交通運(yùn)營管理)運(yùn)營操作試題及答案
- 2026南水北調(diào)東線山東干線有限責(zé)任公司人才招聘8人筆試模擬試題及答案解析
- 動量守恒定律(教學(xué)設(shè)計(jì))-2025-2026學(xué)年高二物理上冊人教版選擇性必修第一冊
- 2025年全國注冊監(jiān)理工程師繼續(xù)教育題庫附答案
- 網(wǎng)絡(luò)素養(yǎng)與自律主題班會
- 波形護(hù)欄工程施工組織設(shè)計(jì)方案
- 非靜脈曲張性上消化道出血管理指南解讀課件
- 自建房消防安全及案例培訓(xùn)課件
- 2025年廣東省第一次普通高中學(xué)業(yè)水平合格性考試(春季高考)思想政治試題(含答案詳解)
- 2025云南楚雄州永仁縣人民法院招聘聘用制司法輔警1人參考筆試試題及答案解析
- 2024年和田地區(qū)遴選公務(wù)員筆試真題匯編附答案解析
- 講奉獻(xiàn)、有作為課件
評論
0/150
提交評論