版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2026年軟件工程師面試筆試訓(xùn)練題目一、編程語(yǔ)言基礎(chǔ)(5題,每題10分,共50分)題目1:請(qǐng)用Java編寫一個(gè)方法,接收一個(gè)整數(shù)數(shù)組,返回該數(shù)組中所有奇數(shù)的和。假設(shè)數(shù)組長(zhǎng)度至少為1,且數(shù)組元素均為正整數(shù)。題目2:用Python實(shí)現(xiàn)一個(gè)函數(shù),接收一個(gè)字符串,返回該字符串中每個(gè)字符出現(xiàn)的次數(shù),并以字典形式返回。例如:輸入"hello",輸出`{'h':1,'e':1,'l':2,'o':1}`。題目3:用C++編寫一個(gè)程序,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的LRU(最近最少使用)緩存,支持get和put操作。緩存容量為3,get和put操作均需在O(1)時(shí)間復(fù)雜度內(nèi)完成。題目4:用JavaScript實(shí)現(xiàn)一個(gè)函數(shù),接收一個(gè)正整數(shù)n,返回一個(gè)包含1到n的斐波那契數(shù)列。例如:輸入5,輸出[1,1,2,3,5]。題目5:用Go語(yǔ)言編寫一個(gè)函數(shù),接收一個(gè)字符串切片,返回一個(gè)新切片,其中僅包含原切片中的非空字符串,并按字典序排序。二、數(shù)據(jù)結(jié)構(gòu)與算法(5題,每題10分,共50分)題目6:請(qǐng)解釋快速排序的工作原理,并用偽代碼描述其核心步驟。假設(shè)初始數(shù)組為`[5,3,8,4,2]`,請(qǐng)展示前兩輪的排序結(jié)果。題目7:用Java實(shí)現(xiàn)二叉搜索樹(shù)的插入操作。假設(shè)樹(shù)的節(jié)點(diǎn)定義如下:javaclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intx){val=x;}}題目8:用Python編寫一個(gè)函數(shù),檢測(cè)一個(gè)字符串是否為回文,忽略大小寫和非字母字符。例如:輸入"Racecar",輸出True。題目9:用C++實(shí)現(xiàn)一個(gè)最小堆(MinHeap),并編寫一個(gè)函數(shù),用堆排序算法對(duì)數(shù)組`[9,3,1,5,13,12]`進(jìn)行排序,展示每一輪的堆調(diào)整過(guò)程。題目10:用JavaScript實(shí)現(xiàn)一個(gè)拓?fù)渑判蛩惴?,輸入一個(gè)有向圖的鄰接表,輸出一個(gè)拓?fù)渑判蚪Y(jié)果。例如:輸入`{0:[1],1:[2],2:[]}`,輸出[0,1,2]。三、系統(tǒng)設(shè)計(jì)(3題,每題20分,共60分)題目11:設(shè)計(jì)一個(gè)簡(jiǎn)單的URL短鏈接系統(tǒng)。要求:1.支持將任意長(zhǎng)度的URL轉(zhuǎn)換為固定長(zhǎng)度的短鏈接。2.支持通過(guò)短鏈接反查原始URL。3.系統(tǒng)需支持高并發(fā)訪問(wèn)。題目12:設(shè)計(jì)一個(gè)消息隊(duì)列系統(tǒng)(如Kafka或RabbitMQ的簡(jiǎn)化版)。要求:1.支持生產(chǎn)者發(fā)送消息、消費(fèi)者接收消息。2.保證消息至少被傳遞一次。3.簡(jiǎn)述如何實(shí)現(xiàn)消息的持久化。題目13:設(shè)計(jì)一個(gè)簡(jiǎn)單的分布式緩存系統(tǒng)。要求:1.支持緩存數(shù)據(jù)的過(guò)期機(jī)制。2.當(dāng)主節(jié)點(diǎn)故障時(shí),能快速切換到從節(jié)點(diǎn)。3.說(shuō)明如何避免緩存雪崩問(wèn)題。四、數(shù)據(jù)庫(kù)與SQL(2題,每題20分,共40分)題目14:假設(shè)有一個(gè)電商訂單表`orders`,字段包括`order_id`(主鍵)、`user_id`、`order_date`、`total_amount`。請(qǐng)寫出SQL查詢語(yǔ)句:1.查詢2025年每月的總訂單金額。2.查詢每個(gè)用戶的訂單數(shù)量,并按訂單數(shù)量降序排列。題目15:用MySQL編寫一個(gè)事務(wù)操作,實(shí)現(xiàn)以下邏輯:1.扣除用戶A的賬戶余額(假設(shè)初始余額為1000)。2.增加訂單記錄(假設(shè)訂單金額為200)。3.如果第二步失敗,則回滾第一步。五、操作系統(tǒng)與網(wǎng)絡(luò)(3題,每題20分,共60分)題目16:解釋進(jìn)程與線程的區(qū)別,并說(shuō)明在哪些場(chǎng)景下使用多線程比多進(jìn)程更優(yōu)。題目17:簡(jiǎn)述TCP的三次握手過(guò)程,并解釋為什么不能是兩次握手。題目18:設(shè)計(jì)一個(gè)簡(jiǎn)單的DNS解析流程。假設(shè)輸入域名"",請(qǐng)說(shuō)明解析步驟及每一步可能涉及的組件。答案與解析一、編程語(yǔ)言基礎(chǔ)題目1(Java):javapublicintsumOdds(int[]arr){intsum=0;for(intnum:arr){if(num%2!=0){sum+=num;}}returnsum;}解析:遍歷數(shù)組,判斷每個(gè)元素是否為奇數(shù),如果是則累加。時(shí)間復(fù)雜度O(n)。題目2(Python):pythondefcount_chars(s):return{char:s.count(char)forcharinset(s)}解析:使用字典推導(dǎo)式,先遍歷字符串所有字符,統(tǒng)計(jì)每個(gè)字符的出現(xiàn)次數(shù)。題目3(C++):cppinclude<unordered_map>include<list>usingnamespacestd;classLRUCache{public:LRUCache(intcapacity):cap(capacity){}intget(intkey){autoit=cache.find(key);if(it==cache.end())return-1;freq.splice(freq.begin(),freq,it->second);returnit->second->second;}voidput(intkey,intvalue){autoit=cache.find(key);if(it!=cache.end()){it->second->second=value;freq.splice(freq.begin(),freq,it->second);}else{if(cache.size()==cap){cache.erase(freq.back().first);freq.pop_back();}freq.emplace_front(key,value);cache[key]=freq.begin();}}private:intcap;unordered_map<int,list<pair<int,int>>::iterator>cache;list<pair<int,int>>freq;};解析:使用哈希表記錄鍵到雙向鏈表的映射,雙向鏈表維護(hù)訪問(wèn)順序。題目4(JavaScript):javascriptfunctionfibonacci(n){if(n<=0)return[];letdp=[1];if(n==1)returndp;dp.push(1);for(leti=2;i<n;i++){dp.push(dp[i-1]+dp[i-2]);}returndp;}解析:動(dòng)態(tài)規(guī)劃,記錄前兩個(gè)斐波那契數(shù)并累加。題目5(Go):gofuncfilterAndSort(s[]string)[]string{unique:=make(map[string]bool)for_,v:=ranges{ifv!=""{unique[v]=true}}res:=make([]string,0,len(unique))fork:=rangeunique{res=append(res,k)}sort.Strings(res)returnres}解析:去重后排序。二、數(shù)據(jù)結(jié)構(gòu)與算法題目6(快速排序):解析:1.選擇一個(gè)基準(zhǔn)值(pivot),通常選擇最后一個(gè)元素。2.分區(qū)操作:將數(shù)組分為兩部分,左邊的元素均小于基準(zhǔn)值,右邊的均大于。3.遞歸對(duì)左右兩部分進(jìn)行排序。初始數(shù)組`[5,3,8,4,2]`:第一輪:基準(zhǔn)值5,分區(qū)后`[3,4,2]`和`[8]`。第二輪:基準(zhǔn)值2,分區(qū)后`[3]`和`[4]`。題目7(二叉搜索樹(shù)插入):javapublicTreeNodeinsert(TreeNoderoot,intval){if(root==null)returnnewTreeNode(val);if(val<root.val){root.left=insert(root.left,val);}else{root.right=insert(root.right,val);}returnroot;}解析:遞歸插入,左子樹(shù)小于根節(jié)點(diǎn),右子樹(shù)大于根節(jié)點(diǎn)。題目8(回文檢測(cè)):pythondefis_palindrome(s):s=''.join(c.lower()forcinsifc.isalnum())returns==s[::-1]解析:忽略大小寫和非字母字符后,判斷字符串是否對(duì)稱。題目9(最小堆與堆排序):解析:1.構(gòu)建最小堆:從最后一個(gè)非葉子節(jié)點(diǎn)向上調(diào)整。2.堆排序:交換堆頂與最后一個(gè)元素,調(diào)整堆。題目10(拓?fù)渑判颍簀avascriptfunctiontopologicalSort(graph){letinDegree={};for(letnodeingraph){inDegree[node]=0;}for(letnodeingraph){for(letneighborofgraph[node]){inDegree[neighbor]++;}}letqueue=[];for(letnodeininDegree){if(inDegree[node]===0)queue.push(node);}letres=[];while(queue.length){letnode=queue.shift();res.push(node);for(letneighborofgraph[node]){inDegree[neighbor]--;if(inDegree[neighbor]===0)queue.push(neighbor);}}returnres;}解析:基于入度隊(duì)列的BFS算法。三、系統(tǒng)設(shè)計(jì)題目11(URL短鏈接):設(shè)計(jì)要點(diǎn):1.使用hash函數(shù)(如MD5)生成短碼,可加鹽避免沖突。2.數(shù)據(jù)庫(kù)存儲(chǔ)原始URL與短碼映射。3.高并發(fā)可通過(guò)Redis緩存熱點(diǎn)短碼。題目12(消息隊(duì)列):設(shè)計(jì)要點(diǎn):1.生產(chǎn)者將消息寫入磁盤(如Kafka日志)。2.消費(fèi)者從磁盤讀取消息,確保不丟失(可設(shè)置重試機(jī)制)。3.使用ISR(In-SyncReplicas)保證副本同步。題目13(分布式緩存):設(shè)計(jì)要點(diǎn):1.使用TTL機(jī)制自動(dòng)過(guò)期。2.主從復(fù)制(如RedisCluster)。3.避免緩存雪崩:設(shè)置緩存預(yù)熱、隨機(jī)過(guò)期時(shí)間。四、數(shù)據(jù)庫(kù)與SQL題目14(SQL查詢):sql--查詢每月總金額SELECTMONTH(order_date)ASmonth,SUM(total_amount)AStotalFROMordersWHEREYEAR(order_date)=2025GROUPBYMONTH(order_date);--查詢用戶訂單數(shù)量SELECTuser_id,COUNT(order_id)ASorder_countFROMordersGROUPBYuser_idORDERBYorder_countDESC;題目15(事務(wù)操作):sqlSTARTTRANSACTION;UPDATEusersSETbalance=balance-200WHEREuser_id='A';INSERTINTOorders(user_id,amount)VALUES('A',200);--如果第二條失敗,則回滾ROLLBACK;五、操作系統(tǒng)與網(wǎng)絡(luò)題目16(進(jìn)程與線程):進(jìn)程:資源分配單位,獨(dú)立內(nèi)存空間。線程:執(zhí)行單位,共享內(nèi)存空間。多線程更優(yōu)場(chǎng)景:I/O密集型任務(wù)(如Web服務(wù)器)。題目17(TCP三次握手):1.客戶端發(fā)送SYN=1,seq=x。
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 溫州2025年浙江溫州臺(tái)灣青年創(chuàng)業(yè)就業(yè)服務(wù)中心招聘編外人員筆試歷年參考題庫(kù)附帶答案詳解
- 濟(jì)寧2025年山東濟(jì)寧汶上縣中都技工學(xué)校教師招聘11人筆試歷年參考題庫(kù)附帶答案詳解
- 無(wú)錫2025年江蘇無(wú)錫市文藝院團(tuán)傳習(xí)中心招聘事業(yè)編制專業(yè)人才8人筆試歷年參考題庫(kù)附帶答案詳解
- 德陽(yáng)2025年四川德陽(yáng)廣漢市教育和體育局下屬單位市外選調(diào)教師7人筆試歷年參考題庫(kù)附帶答案詳解
- 平頂山2025年河南平頂山市新華區(qū)事業(yè)單位招聘60人筆試歷年參考題庫(kù)附帶答案詳解
- 安慶2025年安徽安慶桐城市衛(wèi)生健康黨建服務(wù)中心選調(diào)工作人員5人筆試歷年參考題庫(kù)附帶答案詳解
- 嘉興2025年浙江嘉興桐鄉(xiāng)市教育系統(tǒng)下屬幼兒園招聘30人筆試歷年參考題庫(kù)附帶答案詳解
- 職業(yè)人群慢病的健康 workplace 推進(jìn)策略
- 六安2025年安徽六安技師學(xué)院招聘高技能人才4人筆試歷年參考題庫(kù)附帶答案詳解
- 職業(yè)人群健康管理的個(gè)性化策略
- 多動(dòng)癥兒童在感統(tǒng)訓(xùn)練
- 環(huán)保生產(chǎn)應(yīng)急預(yù)案
- 殯葬禮儀服務(wù)創(chuàng)新創(chuàng)業(yè)項(xiàng)目商業(yè)計(jì)劃書(shū)
- 數(shù)據(jù)驅(qū)動(dòng)的零售商品陳列優(yōu)化方案
- 錄用通知(入職通知書(shū))offer模板
- 畜禽屠宰加工工國(guó)家職業(yè)標(biāo)準(zhǔn)(征求意見(jiàn)稿)
- 顱內(nèi)感染指南解讀
- 倉(cāng)儲(chǔ)內(nèi)部考核管理辦法
- 建筑工程交通導(dǎo)改與組織方案
- 醫(yī)療器械維修知識(shí)考核試題庫(kù)及答案
- 春天綠化養(yǎng)護(hù)知識(shí)培訓(xùn)
評(píng)論
0/150
提交評(píng)論