版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2026年軟件工程師面試筆試題編程語(yǔ)言及算法應(yīng)用方向一、編程語(yǔ)言基礎(chǔ)(3題,每題10分,共30分)考察目標(biāo):數(shù)據(jù)類型、運(yùn)算符、控制流、函數(shù)、面向?qū)ο蠡A(chǔ)(Java/Python/JavaScript任選其一)。題目1(10分):題目:請(qǐng)用Java/Python/JavaScript實(shí)現(xiàn)一個(gè)簡(jiǎn)單的計(jì)算器類,支持加、減、乘、除四種運(yùn)算。要求:1.類名自定,方法名為`calculate`,參數(shù)為兩個(gè)`double`類型數(shù)字和一個(gè)`char`類型運(yùn)算符。2.若運(yùn)算符無(wú)效或除數(shù)為0,拋出異常(Java)或返回錯(cuò)誤信息(Python/JavaScript)。3.輸入示例:`calculate(10,5,'+')`應(yīng)返回`15.0`,`calculate(10,0,'/')`應(yīng)拋出異常。題目2(10分):題目:用所選語(yǔ)言實(shí)現(xiàn)一個(gè)函數(shù)/方法,接收一個(gè)字符串,返回該字符串中出現(xiàn)頻率最高的字符及其出現(xiàn)次數(shù)。若多個(gè)字符頻率相同,返回第一個(gè)遇到的字符。示例:`topFrequency("hello")`應(yīng)返回`('l',2)`。題目3(10分):題目:實(shí)現(xiàn)一個(gè)簡(jiǎn)單的單例模式(選擇餓漢或懶漢實(shí)現(xiàn)),確保全局只有一個(gè)實(shí)例。測(cè)試用例:創(chuàng)建兩個(gè)實(shí)例,驗(yàn)證是否為同一對(duì)象。二、數(shù)據(jù)結(jié)構(gòu)與算法(5題,每題14分,共70分)考察目標(biāo):數(shù)組、鏈表、棧、隊(duì)列、哈希表、樹(shù)、排序、查找。題目4(14分):題目:給定一個(gè)包含重復(fù)數(shù)字的數(shù)組,返回所有不重復(fù)的三元組,使得三元組內(nèi)數(shù)字之和等于目標(biāo)值。示例:輸入`[1,-1,0,1,2]`,目標(biāo)值`0`,返回`[[-1,0,1],[-1,-1,2]]`。要求:時(shí)間復(fù)雜度O(n2)。題目5(14分):題目:設(shè)計(jì)一個(gè)LRU(最近最少使用)緩存,支持`get`和`put`操作。緩存容量為固定值`capacity`。示例:pythonlru=LRUCache(2)lru.put(1,1)#緩存是{1:1}lru.put(2,2)#緩存是{1:1,2:2}lru.get(1)#返回1lru.put(3,3)#去除鍵2,緩存是{1:1,3:3}lru.get(2)#返回-1(未找到)要求:使用哈希表+雙向鏈表實(shí)現(xiàn)。題目6(14分):題目:給定一個(gè)二叉搜索樹(shù),返回其“中序遍歷”的“下一個(gè)”節(jié)點(diǎn)(中序遍歷的下一個(gè)節(jié)點(diǎn))。假設(shè)所有節(jié)點(diǎn)值唯一。示例:5/\37/\/\2468中序遍歷:2,3,4,5,6,7,8。若節(jié)點(diǎn)為`5`,返回`6`;若節(jié)點(diǎn)為`8`,返回`-1`。題目7(14分):題目:實(shí)現(xiàn)快速排序算法,要求:1.使用“三數(shù)取中”法選擇基準(zhǔn)。2.處理遞歸棧溢出的情況(如使用尾遞歸優(yōu)化)。3.對(duì)`[4,1,3,9,7,2,5]`進(jìn)行排序,輸出`[1,2,3,4,5,7,9]`。題目8(14分):題目:給定一個(gè)字符串,判斷是否是有效的括號(hào)字符串(只含`(`,`)`,`{}`,`[]`,`<>`)。示例:`"({[]})"`有效,`"({[})"`無(wú)效。要求:使用棧實(shí)現(xiàn),時(shí)間復(fù)雜度O(n)。三、系統(tǒng)設(shè)計(jì)與工程(2題,每題13分,共26分)考察目標(biāo):分布式系統(tǒng)、數(shù)據(jù)庫(kù)、緩存、負(fù)載均衡。題目9(13分):題目:設(shè)計(jì)一個(gè)高并發(fā)的短鏈接生成服務(wù)。要求:1.輸入任意URL,返回固定長(zhǎng)度的短鏈接(如`/a1b2c3`)。2.支持高并發(fā)訪問(wèn)(如QPS10萬(wàn)+)。3.提供至少兩種實(shí)現(xiàn)方案的簡(jiǎn)要說(shuō)明(如數(shù)據(jù)庫(kù)自增ID+編碼,或分布式ID生成器)。題目10(13分):題目:為高并發(fā)電商系統(tǒng)設(shè)計(jì)商品秒殺功能,要求:1.防止超賣和重復(fù)購(gòu)買。2.說(shuō)明至少兩種技術(shù)方案(如數(shù)據(jù)庫(kù)樂(lè)觀鎖、RedisLua腳本)。3.分析各自優(yōu)缺點(diǎn)及適用場(chǎng)景。答案與解析一、編程語(yǔ)言基礎(chǔ)題目1答案(Java示例):javapublicclassSimpleCalculator{publicdoublecalculate(doublea,doubleb,charoperator)throwsIllegalArgumentException{switch(operator){case'+':returna+b;case'-':returna-b;case'':returnab;case'/':if(b==0)thrownewIllegalArgumentException("Divisionbyzero");returna/b;default:thrownewIllegalArgumentException("Invalidoperator:"+operator);}}publicstaticvoidmain(String[]args){SimpleCalculatorcalc=newSimpleCalculator();try{System.out.println(calc.calculate(10,5,'+'));//15.0System.out.println(calc.calculate(10,0,'/'));//拋出異常}catch(IllegalArgumentExceptione){System.out.println(e.getMessage());}}}解析:1.使用`switch`處理運(yùn)算符,覆蓋所有情況。2.除法時(shí)檢查除數(shù)是否為0,若為0則拋出`IllegalArgumentException`。3.其他無(wú)效運(yùn)算符也拋出異常,符合Java異常處理規(guī)范。題目2答案(Python示例):pythonfromcollectionsimportCounterdeftopFrequency(s):freq=Counter(s)max_char=max(freq,key=freq.get)return(max_char,freq[max_char])print(topFrequency("hello"))#('l',2)解析:1.`Counter`統(tǒng)計(jì)字符頻率。2.`max`函數(shù)通過(guò)`key=freq.get`找到頻率最大的字符。3.返回元組形式,符合題目要求。題目3答案(Java懶漢單例):javapublicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}publicstaticSingletongetInstance(){if(instance==null){instance=newSingleton();}returninstance;}publicstaticvoidmain(String[]args){Singletona=Singleton.getInstance();Singletonb=Singleton.getInstance();System.out.println(a==b);//true}}解析:1.雙向檢查鎖定(DCL)實(shí)現(xiàn)懶加載。2.`instance`為私有靜態(tài)變量,確保全局唯一。3.靜態(tài)方法獲取實(shí)例,線程安全(需補(bǔ)充volatile關(guān)鍵字)。二、數(shù)據(jù)結(jié)構(gòu)與算法題目4答案(Python):pythondefthreeSum(nums,target):nums.sort()n=len(nums)res=[]foriinrange(n-2):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==target:res.append([nums[i],nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1;right-=1eliftotal<target:left+=1else:right-=1returnresprint(threeSum([1,-1,0,1,2],0))#[[-1,0,1],[-1,-1,2]]解析:1.先排序,固定第一個(gè)數(shù),雙指針遍歷剩余部分。2.跳過(guò)重復(fù)數(shù)字避免重復(fù)三元組。3.時(shí)間復(fù)雜度O(n2),空間復(fù)雜度O(1)(若不計(jì)輸出)。題目5答案(JavaScript):javascriptclassLRUCache{constructor(capacity){this.capacity=capacity;this.map=newMap();this.head=newNode(0,0);this.tail=newNode(0,0);this.head.next=this.tail;this.tail.prev=this.head;}get(key){if(!this.map.has(key))return-1;constnode=this.map.get(key);this.remove(node);this.add(node);returnnode.value;}put(key,value){if(this.map.has(key)){this.remove(this.map.get(key));}constnode=newNode(key,value);this.map.set(key,node);this.add(node);if(this.map.size>this.capacity){constlru=this.tail.prev;this.remove(lru);this.map.delete(lru.key);}}add(node){node.next=this.head.next;node.prev=this.head;this.head.next.prev=node;this.head.next=node;}remove(node){node.prev.next=node.next;node.next.prev=node.prev;}}classNode{constructor(key,value){this.key=key;this.value=value;this.prev=null;this.next=null;}}解析:1.使用`Map`實(shí)現(xiàn)O(1)查找,`Node`雙向鏈表維護(hù)順序。2.`get`時(shí)移動(dòng)節(jié)點(diǎn)到頭部,`put`時(shí)先刪除舊節(jié)點(diǎn)再添加。3.超過(guò)容量時(shí)刪除尾節(jié)點(diǎn)。題目6答案(Java):javaclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intx){val=x;}}publicTreeNodeinorderSuccessor(TreeNoderoot,TreeNodetarget){if(root==null)returnnull;TreeNodesuccessor=null;while(root!=null){if(target.val<root.val){successor=root;root=root.left;}else{root=root.right;}}returnsuccessor;}解析:1.中序遍歷的下一個(gè)節(jié)點(diǎn)是右子樹(shù)的最左節(jié)點(diǎn)。2.若目標(biāo)節(jié)點(diǎn)有右子樹(shù),則該子樹(shù)的最左節(jié)點(diǎn)即為后繼。3.無(wú)右子樹(shù)時(shí),向上遍歷父節(jié)點(diǎn)直到找到左子樹(shù)節(jié)點(diǎn)。題目7答案(Python):pythondefquickSort(arr):defpartition(low,high):mid=(low+high)//2pivot=sorted([arr[low],arr[mid],arr[high]])[1]arr[low],arr[arr.index(pivot)]=arr[arr.index(pivot)],arr[low]pivot=arr[low]i,j=low+1,highwhileTrue:whilei<=jandarr[i]<=pivot:i+=1whilei<=jandarr[j]>=pivot:j-=1ifi<=j:arr[i],arr[j]=arr[j],arr[i]else:breakarr[low],arr[j]=arr[j],arr[low]returnjdefquickSortRec(low,high):iflow<high:mid=partition(low,high)quickSortRec(low,mid-1)quickSortRec(mid+1,high)quickSortRec(0,len(arr)-1)returnarrprint(quickSort([4,1,3,9,7,2,5]))#[1,2,3,4,5,7,9]解析:1.“三數(shù)取中”選擇基準(zhǔn),避免極端輸入性能下降。2.尾遞歸優(yōu)化:先處理較小的子區(qū)間。3.時(shí)間復(fù)雜度O(nlogn),最壞O(n2)。題目8答案(Python):pythondefisValid(s):stack=[]mapping={')':'(','}':'{',']':'[','>':'<'}forcins:ifcinmapping.values():stack.append(c)elifcinmapping:ifnotstackormapping[c]!=st
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年移動(dòng)互聯(lián)網(wǎng)對(duì)房地產(chǎn)營(yíng)銷的影響
- 2025年策劃活動(dòng)筆試題目及答案
- 2026山東華宇工學(xué)院博士人才招聘考試參考題庫(kù)及答案解析
- 2025年汕頭衛(wèi)生事業(yè)單位考試及答案
- 2025年杭州在職教師事業(yè)編考試及答案
- 2025年洛師競(jìng)選團(tuán)員筆試及答案
- 2025年事業(yè)編學(xué)校后勤考試筆試及答案
- 2026年金屬材料的晶體結(jié)構(gòu)與力學(xué)性能關(guān)系
- 2026陜西西北工業(yè)大學(xué)飛行器動(dòng)力潤(rùn)滑系統(tǒng)研究團(tuán)隊(duì)招聘2人筆試模擬試題及答案解析
- 2026年施工現(xiàn)場(chǎng)職業(yè)病與安全事故案例分析
- UCL介紹教學(xué)課件
- 廣東省衡水金卷2025-2026學(xué)年高三上學(xué)期12月聯(lián)考物理試題(含答案)
- 扁鵲凹凸脈法課件
- 2026年開(kāi)封大學(xué)單招職業(yè)適應(yīng)性測(cè)試題庫(kù)及完整答案詳解1套
- 北京市2025北京市體育設(shè)施管理中心應(yīng)屆畢業(yè)生招聘2人筆試歷年參考題庫(kù)典型考點(diǎn)附帶答案詳解(3卷合一)2套試卷
- 建筑施工現(xiàn)場(chǎng)材料采購(gòu)流程
- DB31∕T 1234-2020 城市森林碳匯計(jì)量監(jiān)測(cè)技術(shù)規(guī)程
- 園林綠化施工工藝及注意事項(xiàng)
- 2025年高中語(yǔ)文必修上冊(cè)《登泰山記》文言文對(duì)比閱讀訓(xùn)練(含答案)
- 2025年金蝶AI蒼穹平臺(tái)新一代企業(yè)級(jí)AI平臺(tái)報(bào)告-
- 2026屆山東菏澤一中高三化學(xué)第一學(xué)期期末達(dá)標(biāo)測(cè)試試題含解析
評(píng)論
0/150
提交評(píng)論