2026年工程師面試筆試題及解答策略_第1頁(yè)
2026年工程師面試筆試題及解答策略_第2頁(yè)
2026年工程師面試筆試題及解答策略_第3頁(yè)
2026年工程師面試筆試題及解答策略_第4頁(yè)
2026年工程師面試筆試題及解答策略_第5頁(yè)
已閱讀5頁(yè),還剩14頁(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年工程師面試筆試題及解答策略一、編程語(yǔ)言基礎(chǔ)(共5題,每題6分,總分30分)1.題目:請(qǐng)用Python實(shí)現(xiàn)一個(gè)函數(shù),輸入一個(gè)整數(shù)列表,返回其中所有奇數(shù)元素的平方和。例如,輸入`[1,2,3,4,5]`,輸出`12+32+52=35`。2.題目:假設(shè)使用Java編寫一個(gè)方法,接收一個(gè)字符串參數(shù),返回該字符串中所有連續(xù)重復(fù)字符的長(zhǎng)度。例如,輸入`"aabbbcccccdd"`,輸出`[2,4,5,2]`。3.題目:用C++實(shí)現(xiàn)一個(gè)類`ArraySum`,包含一個(gè)成員函數(shù)`calculateSum`,輸入一個(gè)整數(shù)數(shù)組,返回所有元素的和。要求在主函數(shù)中測(cè)試該類的功能。4.題目:請(qǐng)解釋JavaScript中的閉包是什么,并給出一個(gè)實(shí)際應(yīng)用場(chǎng)景的代碼示例。5.題目:在Go語(yǔ)言中,如何定義一個(gè)切片,并實(shí)現(xiàn)一個(gè)函數(shù)將兩個(gè)切片的元素合并,去重后按升序返回?例如,輸入`[1,2,3]`和`[2,3,4]`,輸出`[1,2,3,4]`。二、算法與數(shù)據(jù)結(jié)構(gòu)(共5題,每題7分,總分35分)1.題目:給定一個(gè)無(wú)重復(fù)元素的數(shù)組`nums`和一個(gè)目標(biāo)值`target`,請(qǐng)實(shí)現(xiàn)`twoSum`函數(shù),返回所有相加等于`target`的數(shù)對(duì)。例如,輸入`nums=[2,7,11,15],target=9`,輸出`[[2,7]]`。2.題目:請(qǐng)用Python實(shí)現(xiàn)快速排序算法,并對(duì)`[5,3,8,4,2]`進(jìn)行排序,展示關(guān)鍵步驟。3.題目:假設(shè)使用棧模擬一個(gè)簡(jiǎn)單的計(jì)算器,處理只包含加法和減法的表達(dá)式(如`"3+5-2"`),請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù)返回計(jì)算結(jié)果。4.題目:請(qǐng)解釋什么是二叉搜索樹(BST),并給出一個(gè)Java方法判斷一棵樹是否為BST。5.題目:用C++實(shí)現(xiàn)一個(gè)哈希表,支持插入和查詢操作,假設(shè)使用鏈地址法解決哈希沖突。三、系統(tǒng)設(shè)計(jì)與架構(gòu)(共3題,每題10分,總分30分)1.題目:設(shè)計(jì)一個(gè)簡(jiǎn)單的微博系統(tǒng),需要支持用戶發(fā)布動(dòng)態(tài)、關(guān)注/取消關(guān)注、獲取關(guān)注者的最新動(dòng)態(tài)等功能。請(qǐng)畫出核心模塊的架構(gòu)圖,并說(shuō)明關(guān)鍵組件的作用。2.題目:假設(shè)需要設(shè)計(jì)一個(gè)高并發(fā)的短鏈接系統(tǒng),請(qǐng)說(shuō)明主要的技術(shù)選型(如數(shù)據(jù)庫(kù)、緩存、負(fù)載均衡)以及如何處理高并發(fā)問題。3.題目:如何設(shè)計(jì)一個(gè)分布式任務(wù)隊(duì)列(如Kafka或RabbitMQ),確保消息的可靠傳遞?請(qǐng)說(shuō)明至少兩種容錯(cuò)機(jī)制。四、數(shù)據(jù)庫(kù)與SQL(共3題,每題10分,總分30分)1.題目:請(qǐng)用SQL查詢出2023年入職的員工,按部門分組,顯示部門名稱和平均工資。假設(shè)表結(jié)構(gòu)如下:sqlCREATETABLEemployees(idINT,nameVARCHAR(50),departmentVARCHAR(50),salaryDECIMAL(10,2),hire_dateDATE);2.題目:用MySQL實(shí)現(xiàn)事務(wù)隔離級(jí)別的設(shè)置,并解釋`REPEATABLEREAD`級(jí)別可能出現(xiàn)的問題(如幻讀)。3.題目:假設(shè)使用PostgreSQL,請(qǐng)寫出一條SQL語(yǔ)句,將表`orders`中的`customer_id`字段值加1,并保留原始值(即新增一列`customer_id_original`)。五、操作系統(tǒng)與網(wǎng)絡(luò)(共3題,每題10分,總分30分)1.題目:解釋Linux中的`fork()`和`exec()`函數(shù)的作用,并說(shuō)明它們?cè)谶M(jìn)程創(chuàng)建中的順序。2.題目:假設(shè)使用TCP協(xié)議傳輸數(shù)據(jù),請(qǐng)說(shuō)明三次握手和四次揮手的流程,并解釋為什么需要四次揮手。3.題目:設(shè)計(jì)一個(gè)DNS解析流程,假設(shè)用戶輸入``,請(qǐng)畫出從客戶端到服務(wù)器的解析路徑。答案與解析一、編程語(yǔ)言基礎(chǔ)1.Python實(shí)現(xiàn)奇數(shù)平方和pythondefodd_square_sum(nums):returnsum(x2forxinnumsifx%2!=0)測(cè)試print(odd_square_sum([1,2,3,4,5]))#輸出35解析:-列表推導(dǎo)式`x2forxinnumsifx%2!=0`遍歷所有奇數(shù)并計(jì)算平方。-`sum()`函數(shù)累加結(jié)果。2.Java連續(xù)重復(fù)字符長(zhǎng)度javapublicint[]consecutiveDuplicates(Strings){int[]res=newint[s.length()];for(inti=0,j=0;i<s.length();i++){if(i==0||s.charAt(i)!=s.charAt(i-1)){res[j++]=1;}else{res[j-1]++;}}returnArrays.copyOfRange(res,0,j);}解析:-雙指針遍歷字符串,`j`記錄結(jié)果索引。-相同字符時(shí)累加,不同字符時(shí)重置計(jì)數(shù)。3.C++實(shí)現(xiàn)ArraySum類cppinclude<vector>usingnamespacestd;classArraySum{public:intcalculateSum(constvector<int>&arr){intsum=0;for(intnum:arr)sum+=num;returnsum;}};intmain(){ArraySumobj;vector<int>arr={1,2,3};cout<<obj.calculateSum(arr);//輸出6return0;}解析:-類成員函數(shù)遍歷數(shù)組求和。-主函數(shù)測(cè)試功能。4.JavaScript閉包示例javascriptfunctioncreateCounter(){letcount=0;returnfunction(){count++;returncount;};}constcounter=createCounter();console.log(counter());//輸出1console.log(counter());//輸出2解析:-閉包保留`count`變量,每次調(diào)用自增。-應(yīng)用場(chǎng)景:模塊化設(shè)計(jì)或緩存數(shù)據(jù)。5.Go合并切片去重gopackagemainimport("fmt""sort")funcmergeSlices(a,b[]int)[]int{unique:=make(map[int]bool)for_,num:=rangea{unique[num]=true}for_,num:=rangeb{unique[num]=true}res:=make([]int,0,len(unique))forkey:=rangeunique{res=append(res,key)}sort.Ints(res)returnres}funcmain(){fmt.Println(mergeSlices([]int{1,2,3},[]int{2,3,4}))//輸出[1234]}解析:-使用map去重,然后排序返回。二、算法與數(shù)據(jù)結(jié)構(gòu)1.twoSum函數(shù)pythondeftwoSum(nums,target):seen={}fori,numinenumerate(nums):iftarget-numinseen:return[[seen[target-num],i]]seen[num]=i測(cè)試print(twoSum([2,7,11,15],9))#輸出[[0,1]]解析:-哈希表記錄數(shù)字及其索引,避免重復(fù)計(jì)算。2.快速排序pythondefquickSort(arr):iflen(arr)<2:returnarrpivot=arr[len(arr)//2]left=[xforxinarrifx<pivot]middle=[xforxinarrifx==pivot]right=[xforxinarrifx>pivot]returnquickSort(left)+middle+quickSort(right)print(quickSort([5,3,8,4,2]))#輸出[2,3,4,5,8]解析:-分治法,選擇樞軸分區(qū),遞歸排序左右子數(shù)組。3.棧模擬計(jì)算器pythondefcalculate(expr):stack=[]num=0sign='+'fori,cinenumerate(expr):ifc.isdigit():num=num10+int(c)if(c=='+'orc=='-'ori==len(expr)-1):ifsign=='+':stack.append(num)elifsign=='-':stack.append(-num)sign=cnum=0returnsum(stack)print(calculate("3+5-2"))#輸出6解析:-用棧處理加減法,按順序計(jì)算。4.BST判斷javaclassTreeNode{intval;TreeNodeleft,right;TreeNode(intx){val=x;}}publicbooleanisValidBST(TreeNoderoot){returnvalidate(root,Long.MIN_VALUE,Long.MAX_VALUE);}privatebooleanvalidate(TreeNodenode,longmin,longmax){if(node==null)returntrue;if(node.val<=min||node.val>=max)returnfalse;returnvalidate(node.left,min,node.val)&&validate(node.right,node.val,max);}解析:-遞歸檢查每個(gè)節(jié)點(diǎn)是否在合法范圍內(nèi)。5.哈希表實(shí)現(xiàn)cppinclude<vector>include<list>classHashTable{std::vector<std::list<int>>table;intcapacity;public:HashTable(intcap):capacity(cap),table(capacity){}voidinsert(intkey){intidx=key%capacity;for(intnum:table[idx]){if(num==key)return;//防重}table[idx].push_back(key);}boolquery(intkey){intidx=key%capacity;for(intnum:table[idx]){if(num==key)returntrue;}returnfalse;}};解析:-鏈地址法解決沖突,插入時(shí)遍歷鏈表防重。三、系統(tǒng)設(shè)計(jì)與架構(gòu)1.微博系統(tǒng)架構(gòu)-模塊:用戶管理、動(dòng)態(tài)發(fā)布、關(guān)注系統(tǒng)、消息隊(duì)列-核心組件:-用戶服務(wù)(MySQL存儲(chǔ)用戶信息)-動(dòng)態(tài)服務(wù)(Redis緩存熱點(diǎn)內(nèi)容,MySQL持久化)-關(guān)注關(guān)系(Redis發(fā)布訂閱更新關(guān)注者動(dòng)態(tài))-架構(gòu)圖(文字描述):-客戶端→API網(wǎng)關(guān)(負(fù)載均衡)→用戶服務(wù)/動(dòng)態(tài)服務(wù)-關(guān)注關(guān)系通過消息隊(duì)列異步更新2.短鏈接系統(tǒng)設(shè)計(jì)-技術(shù)選型:-前端:Nginx靜態(tài)解析短鏈-中間層:Redis緩存熱點(diǎn)鏈接-后端:MySQL存儲(chǔ)原始URL,支持分布式ID生成(如Snowflake)-高并發(fā)處理:-負(fù)載均衡分?jǐn)傉?qǐng)求-Redis集群避免單點(diǎn)瓶頸-熱點(diǎn)鏈接預(yù)取3.分布式任務(wù)隊(duì)列設(shè)計(jì)-方案:Kafka+RabbitMQ-容錯(cuò)機(jī)制:-Kafka:副本機(jī)制(如3副本,2個(gè)可用區(qū))-RabbitMQ:消息確認(rèn)(ack)+重試隊(duì)列-架構(gòu):-生產(chǎn)者→消息隊(duì)列(分區(qū)+ISR保證順序)→消費(fèi)者四、數(shù)據(jù)庫(kù)與SQL1.SQL查詢部門平均工資sqlSELECTdepartment,AVG(salary)ASavg_salaryFROMemployeesWHEREYEAR(hire_date)=2023GROUPBYdepartment;解析:-`YEAR(hire_date)`篩選2023年入職,`AVG()`計(jì)算平均工資。2.MySQL事務(wù)隔離級(jí)別sql--設(shè)置隔離級(jí)別SETTRANSACTIONISOLATIONLEVELREPEATABLEREAD;--問題:幻讀--示例:事務(wù)A讀取數(shù)據(jù),事務(wù)

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論