科技公司面試題庫(kù)及答案解析_第1頁(yè)
科技公司面試題庫(kù)及答案解析_第2頁(yè)
科技公司面試題庫(kù)及答案解析_第3頁(yè)
科技公司面試題庫(kù)及答案解析_第4頁(yè)
科技公司面試題庫(kù)及答案解析_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2026年科技公司面試題庫(kù)及答案解析一、編程題(共5題,每題20分,總分100分)1.Java編程題(20分)請(qǐng)編寫一個(gè)Java方法,實(shí)現(xiàn)將一個(gè)字符串中的所有空格替換為"%20"。要求時(shí)間復(fù)雜度為O(n),空間復(fù)雜度為O(1)。javapublicclassReplaceSpaces{publicstaticStringreplaceSpaces(Strings){if(s==null||s.length()==0)returns;intspaceCount=0;for(charc:s.toCharArray()){if(c=='')spaceCount++;}char[]result=newchar[s.length()+spaceCount2];intindex=0;for(charc:s.toCharArray()){if(c==''){result[index++]='%';result[index++]='2';result[index++]='0';}else{result[index++]=c;}}returnnewString(result);}publicstaticvoidmain(String[]args){Stringinput="HelloWorld";System.out.println(replaceSpaces(input));//輸出:Hello%20World}}2.Python編程題(20分)請(qǐng)編寫一個(gè)Python函數(shù),實(shí)現(xiàn)判斷一個(gè)字符串是否為回文串。要求不使用內(nèi)置函數(shù),時(shí)間復(fù)雜度為O(n)。pythondefisPalindrome(s):left,right=0,len(s)-1whileleft<right:ifs[left]!=s[right]:returnFalseleft+=1right-=1returnTrueprint(isPalindrome("abba"))#輸出:Trueprint(isPalindrome("abc"))#輸出:False3.C++編程題(20分)請(qǐng)編寫一個(gè)C++函數(shù),實(shí)現(xiàn)找出數(shù)組中和為特定值的最長(zhǎng)子數(shù)組長(zhǎng)度。要求時(shí)間復(fù)雜度為O(n)。cppinclude<vector>include<unordered_map>usingnamespacestd;intmaxLengthWithSum(vector<int>&nums,inttarget){unordered_map<int,int>sumIndices;intmaxLen=0,currentSum=0;sumIndices[0]=-1;for(inti=0;i<nums.size();++i){currentSum+=nums[i];if(sumIndices.find(currentSum-target)!=sumIndices.end()){maxLen=max(maxLen,i-sumIndices[currentSum-target]);}if(sumIndices.find(currentSum)==sumIndices.end()){sumIndices[currentSum]=i;}}returnmaxLen;}intmain(){vector<int>nums={1,2,3,4,5};inttarget=9;cout<<maxLengthWithSum(nums,target)<<endl;//輸出:3(子數(shù)組[2,3,4])}4.JavaScript編程題(20分)請(qǐng)編寫一個(gè)JavaScript函數(shù),實(shí)現(xiàn)刪除排序數(shù)組中的重復(fù)項(xiàng),并返回新數(shù)組的長(zhǎng)度。要求時(shí)間復(fù)雜度為O(n)。javascriptfunctionremoveDuplicates(nums){if(nums.length===0)return0;letslow=0;for(letfast=1;fast<nums.length;fast++){if(nums[fast]!==nums[slow]){slow++;nums[slow]=nums[fast];}}returnslow+1;}console.log(removeDuplicates([1,1,2,2,3]));//輸出:35.Go編程題(20分)請(qǐng)編寫一個(gè)Go函數(shù),實(shí)現(xiàn)將一個(gè)羅馬數(shù)字轉(zhuǎn)換為整數(shù)。要求支持的基本羅馬數(shù)字為I,V,X,L,C,D,M。gopackagemainimport("fmt")funcromanToInt(sstring)int{romanMap:=map[rune]int{'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000,}total:=0prev:=0fori:=len(s)-1;i>=0;i--{current:=romanMap[rune(s[i])]ifcurrent<prev{total-=current}else{total+=current}prev=current}returntotal}funcmain(){fmt.Println(romanToInt("III"))//輸出:3fmt.Println(romanintas("IV"))//輸出:4fmt.Println(romanToInt("MCMXCIV"))//輸出:1994}二、系統(tǒng)設(shè)計(jì)題(共3題,每題30分,總分90分)1.短鏈接系統(tǒng)設(shè)計(jì)(30分)請(qǐng)?jiān)O(shè)計(jì)一個(gè)短鏈接系統(tǒng),要求:-輸入任意長(zhǎng)度的URL,輸出固定長(zhǎng)度的短鏈接(如6位字母數(shù)字組合)。-支持反向解析,通過(guò)短鏈接查詢?cè)糢RL。-高并發(fā)、高可用。-考慮數(shù)據(jù)一致性和緩存優(yōu)化。答案解析:-數(shù)據(jù)結(jié)構(gòu):使用哈希表(如Redis)存儲(chǔ)短鏈接與原始URL的映射,使用Base62編碼(a-z,A-Z,0-9)將ID映射為短鏈接。-高并發(fā):采用分布式緩存(Redis集群)和負(fù)載均衡(Nginx)。-數(shù)據(jù)一致性:使用Redis的持久化(RDB/AOF)和主從復(fù)制。-緩存優(yōu)化:使用本地緩存(如GuavaCache)減少Redis訪問(wèn)。-示例:輸入"/article/12345",輸出"abc123"。2.微博實(shí)時(shí)消息推送系統(tǒng)設(shè)計(jì)(30分)請(qǐng)?jiān)O(shè)計(jì)一個(gè)微博實(shí)時(shí)消息推送系統(tǒng),要求:-支持用戶發(fā)布動(dòng)態(tài)、關(guān)注/取消關(guān)注、接收實(shí)時(shí)消息。-高并發(fā)、低延遲(毫秒級(jí))。-考慮消息可靠性、去重和擴(kuò)展性。答案解析:-架構(gòu):采用發(fā)布-訂閱模式(Kafka/RabbitMQ),用戶關(guān)注關(guān)系存儲(chǔ)在Redis。-實(shí)時(shí)性:使用WebSocket或Server-SentEvents(SSE)推送消息。-可靠性:Kafka持久化消息,確保不丟失;使用冪等性保證消息只處理一次。-去重:使用布隆過(guò)濾器或RedisSet避免重復(fù)推送。-擴(kuò)展性:微服務(wù)拆分(如用戶服務(wù)、消息服務(wù)),使用容器化部署。3.分布式數(shù)據(jù)庫(kù)分片設(shè)計(jì)(30分)請(qǐng)?jiān)O(shè)計(jì)一個(gè)分布式數(shù)據(jù)庫(kù)分片方案,要求:-支持水平分片,按用戶ID或業(yè)務(wù)線分片。-高可用、讀寫均衡。-考慮數(shù)據(jù)遷移和容災(zāi)方案。答案解析:-分片策略:采用哈希分片(如用戶ID取模)或范圍分片(如按地區(qū)分片)。-高可用:使用多副本存儲(chǔ)(如MySQLCluster),配合Keepalived實(shí)現(xiàn)主從切換。-讀寫均衡:使用讀寫分離(如ProxySQL),分片路由器(如ShardingSphere)動(dòng)態(tài)路由請(qǐng)求。-數(shù)據(jù)遷移:使用影子分片(ShadowSharding)平滑遷移數(shù)據(jù)。-容災(zāi):跨機(jī)房部署,使用異地多活(如Paxos/Raft協(xié)議同步)。三、算法題(共2題,每題20分,總分40分)1.LRU緩存算法實(shí)現(xiàn)(20分)請(qǐng)?jiān)O(shè)計(jì)一個(gè)LRU(LeastRecentlyUsed)緩存,支持get和put操作,要求:-使用鏈表和哈希表實(shí)現(xiàn),時(shí)間復(fù)雜度為O(1)。-get操作返回鍵對(duì)應(yīng)的值,并更新最近使用時(shí)間;put操作插入鍵值對(duì),若已存在則更新值。答案解析:-數(shù)據(jù)結(jié)構(gòu):使用雙向鏈表(頭尾節(jié)點(diǎn))+哈希表(key→node)。-get操作:O(1)查找哈希表,移動(dòng)節(jié)點(diǎn)到鏈表頭部。-put操作:O(1)查找哈希表,若存在則更新值和位置;若不存在則:-若緩存未滿,插入節(jié)點(diǎn)并移動(dòng)到頭部;-若緩存滿,刪除鏈表尾部節(jié)點(diǎn),插入新節(jié)點(diǎn)到頭部

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論