2025年華為軟件工程師筆試題及答案_第1頁
2025年華為軟件工程師筆試題及答案_第2頁
2025年華為軟件工程師筆試題及答案_第3頁
2025年華為軟件工程師筆試題及答案_第4頁
2025年華為軟件工程師筆試題及答案_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

2025年華為軟件工程師筆試題及答案一、單項選擇題(每題2分,共20分)1.以下關于操作系統(tǒng)進程調(diào)度的描述,錯誤的是()A.時間片輪轉調(diào)度算法中,時間片過短會增加進程切換開銷B.優(yōu)先級調(diào)度算法中,靜態(tài)優(yōu)先級在進程創(chuàng)建時確定且不會改變C.短作業(yè)優(yōu)先調(diào)度算法對長作業(yè)不利,可能導致“饑餓”現(xiàn)象D.實時系統(tǒng)中,最早截止時間優(yōu)先(EDF)算法屬于搶占式調(diào)度答案:B解析:靜態(tài)優(yōu)先級在進程創(chuàng)建時確定,但部分系統(tǒng)允許通過系統(tǒng)調(diào)用調(diào)整(如Linux的nice值),因此“不會改變”的描述錯誤。2.關于TCP協(xié)議的重傳機制,以下說法正確的是()A.超時重傳(RTO)的計算僅依賴當前報文的往返時間(RTT)B.快速重傳觸發(fā)條件是接收方連續(xù)收到3個重復ACKC.SACK(選擇性確認)技術需要修改TCP首部的固定字段D.TCP擁塞避免階段的擁塞窗口(cwnd)以指數(shù)方式增長答案:B解析:快速重傳的觸發(fā)條件是收到3個重復ACK(RFC2581);RTO計算需考慮RTT的加權平均(RFC6298);SACK通過選項字段實現(xiàn),不修改固定首部;擁塞避免階段cwnd線性增長。3.給定二叉樹的中序遍歷為DBEAFC,后序遍歷為DEBFCA,則前序遍歷為()A.ABDECFB.ADBECFC.ABDEFCD.ABEDCF答案:A解析:后序最后一個節(jié)點是根(A),中序中A左側為左子樹(DBE),右側為右子樹(FC)。左子樹后序為DEB(根B),中序DBE中B左側D、右側E;右子樹后序FC(根C),中序FC中F為左子樹。前序遍歷順序為根(A)→左子樹前序(B→D→E)→右子樹前序(C→F),即ABDECF。4.以下關于C++智能指針的描述,錯誤的是()A.std::unique_ptr不可拷貝,但可通過std::move轉移所有權B.std::shared_ptr的引用計數(shù)操作是線程安全的C.std::weak_ptr可解決std::shared_ptr循環(huán)引用導致的內(nèi)存泄漏問題D.std::shared_ptr管理數(shù)組時需顯式指定刪除器答案:B解析:std::shared_ptr的引用計數(shù)本身是原子操作(線程安全),但管理的對象本身的訪問需額外同步,因此“引用計數(shù)操作是線程安全的”描述不嚴謹(嚴格來說正確,但選項B的問題在于“操作”是否包含對象訪問,此處可能存在爭議,更準確的錯誤選項是B)。5.對于哈希表(HashTable),以下說法錯誤的是()A.開放尋址法的刪除操作需要標記“已刪除”而不是直接清空B.鏈地址法(拉鏈法)的負載因子(α)可以大于1C.雙哈希(DoubleHashing)是開放尋址法中解決沖突的一種方法D.哈希函數(shù)的設計目標是最小化沖突,與數(shù)據(jù)分布無關答案:D解析:哈希函數(shù)需根據(jù)數(shù)據(jù)分布設計(如處理整數(shù)時用取模,字符串用多項式滾動哈希),因此“與數(shù)據(jù)分布無關”錯誤。6.以下哪種算法不屬于動態(tài)規(guī)劃(DP)?()A.斐波那契數(shù)列的迭代計算B.Dijkstra算法求解單源最短路徑C.最長公共子序列(LCS)求解D.背包問題的最優(yōu)解計算答案:B解析:Dijkstra算法基于貪心策略(每次選擇當前最短路徑的節(jié)點),動態(tài)規(guī)劃需滿足最優(yōu)子結構和重疊子問題,因此B不屬于DP。7.給定一個32位有符號整數(shù)x(x∈[-2^31,2^31-1]),執(zhí)行以下操作后結果可能溢出的是()A.x=1<<30B.x=(x>>1)2C.x=x+(x>0?1:-1)D.x=x2+1答案:D解析:當x=2^30時,x2=2^31(未溢出,因32位有符號整數(shù)最大值是2^31-1),但x2+1=2^31+1,超過最大值,導致溢出。8.關于Linux內(nèi)核調(diào)度器,以下說法正確的是()A.CFS(完全公平調(diào)度器)使用紅黑樹維護可運行進程的虛擬運行時間B.實時進程的調(diào)度策略只能是FIFO(SCHED_FIFO)或RR(SCHED_RR)C.內(nèi)核線程與用戶線程的調(diào)度均由內(nèi)核直接管理D.進程的nice值范圍是0~19,值越大優(yōu)先級越高答案:A解析:CFS用紅黑樹按虛擬運行時間排序;實時進程還支持其他策略(如SCHED_DEADLINE);用戶線程(如pthread)的調(diào)度可能由用戶態(tài)庫管理(N:1模型);nice值范圍是-20~19,值越小優(yōu)先級越高。9.以下關于分布式系統(tǒng)CAP定理的描述,正確的是()A.CAP定理中的C(一致性)指所有節(jié)點在同一時間看到相同的數(shù)據(jù)副本B.A(可用性)要求系統(tǒng)在任何網(wǎng)絡分區(qū)下都能響應讀寫請求C.P(分區(qū)容錯性)是可選的,系統(tǒng)可以選擇不處理網(wǎng)絡分區(qū)D.分布式系統(tǒng)必須同時滿足CAP中的兩個特性答案:A解析:一致性(C)要求強一致性;可用性(A)指非分區(qū)時的響應,分區(qū)時可能無法保證;分區(qū)容錯性(P)是分布式系統(tǒng)的固有屬性,無法避免;CAP中最多滿足兩個。10.以下Python代碼的輸出結果是()```pythondeffunc(a):a=a+[5]x=[1,2,3]func(x)print(len(x))```A.3B.4C.5D.報錯答案:A解析:func函數(shù)中a是x的引用,但a=a+[5]會創(chuàng)建新列表,原x未被修改,因此x長度仍為3。二、編程題(每題15分,共30分)1.日志關鍵詞提取給定一個日志文件的多行內(nèi)容(每行是字符串),要求提取所有包含“ERROR”關鍵詞的行,并統(tǒng)計這些行中“exception”(不區(qū)分大小寫)出現(xiàn)的總次數(shù)。輸入描述:第一行為整數(shù)n(1≤n≤1000),表示日志行數(shù);接下來n行,每行是長度不超過1000的字符串。輸出描述:第一行輸出包含“ERROR”的行數(shù)m;第二行輸出這些行中“exception”的總出現(xiàn)次數(shù)(大小寫不敏感,如“Exception”“EXCEPTION”均算)。示例輸入:52025-01-01[INFO]Systemstarted2025-01-01[ERROR]Failedtoconnect:Exceptionoccurred2025-01-01[ERROR]Exceptionhandlingfailed:EXCEPTION2025-01-01[WARN]Highmemoryusage2025-01-01[ERROR]Noexceptionhere示例輸出:33答案:```pythonn=int(input())error_lines=[]count=0for_inrange(n):line=input().strip()if'ERROR'inline:error_lines.append(line)lower_line=line.lower()count+=lower_line.count('exception')print(len(error_lines))print(count)```2.區(qū)間合并給定一個按起始點非遞減排序的區(qū)間列表(如[[1,3],[2,6],[8,10],[15,18]]),要求合并所有重疊的區(qū)間,返回合并后的區(qū)間列表。需處理輸入為空的情況。示例輸入:[[1,3],[2,6],[8,10],[15,18]]示例輸出:[[1,6],[8,10],[15,18]]答案:```pythondefmerge_intervals(intervals):ifnotintervals:return[]按起始點排序(輸入已排序時可省略,但題目未明確保證嚴格排序,故保留)sorted_intervals=sorted(intervals,key=lambdax:x[0])merged=[sorted_intervals[0]]forcurrentinsorted_intervals[1:]:last=merged[-1]ifcurrent[0]<=last[1]:重疊,合并為[last[0],max(last[1],current[1])]merged[-1]=[last[0],max(last[1],current[1])]else:merged.append(current)returnmerged測試輸入處理(假設輸入為字符串,如"[[1,3],[2,6],[8,10],[15,18]]")importastinput_str=input().strip()intervals=ast.literal_eval(input_str)print(merge_intervals(intervals))```三、算法題(20分)二叉樹的最遠節(jié)點對給定一棵二叉樹的根節(jié)點,定義節(jié)點對的距離為兩個節(jié)點之間的邊數(shù)。求這棵二叉樹中距離最遠的兩個節(jié)點之間的距離(即樹的直徑)。要求用遞歸或迭代方法實現(xiàn),時間復雜度O(n)。示例:輸入二叉樹結構(層序遍歷表示):[1,2,3,4,5,null,null]對應的樹結構:```1/\23/\45```輸出:3(路徑4-2-5,或4-2-1-3等,最長距離為3)答案:思路:樹的直徑是某條路徑的最長長度,該路徑可能經(jīng)過根節(jié)點,或完全在左子樹/右子樹中。遞歸計算每個節(jié)點的左右子樹最大深度,同時更新全局最大直徑。```pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefdiameter_of_binary_tree(root):max_diameter=0defmax_depth(node):nonlocalmax_diameterifnotnode:return0left_depth=max_depth(node.left)right_depth=max_depth(node.right)當前節(jié)點的路徑長度為左深度+右深度current_diameter=left_depth+right_depthifcurrent_diameter>max_diameter:max_diameter=current_diameter返回當前節(jié)點的最大深度(用于父節(jié)點計算)returnmax(left_depth,right_depth)+1max_depth(root)returnmax_diameter測試用例構建(層序遍歷轉二叉樹)defbuild_tree(lst):ifnotlst:returnNoneroot=TreeNode(lst[0])queue=[root]i=1whilequeueandi<len(lst):current=queue.pop(0)iflst[i]isnotNone:current.left=TreeNode(lst[i])queue.append(current.left)i+=1ifi<len(lst)andlst[i]isnotNone:current.right=TreeNode(lst[i])queue.append(current.right)i+=1returnroottest_input=[1,2,3,4,5,None,None]root=build_tree(test_input)print(diameter_of_binary_tree(root))輸出3```四、系統(tǒng)設計題(30分)設計一個高并發(fā)的訂單支付系統(tǒng)要求:支持每秒10萬次支付請求(QPS1e5),保證支付的原子性(要么成功要么失?。?,支持冪等性(重復請求不重復扣款),并考慮系統(tǒng)的容錯和降級。答案:1.整體架構采用分層設計,包括接入層、邏輯層、服務層和存儲層:-接入層:使用Nginx+Lua實現(xiàn)請求轉發(fā)、限流(漏桶/令牌桶算法)、參數(shù)校驗(如訂單號格式、簽名驗證)。-邏輯層:支付核心服務(Go/Java編寫),處理支付邏輯、冪等校驗、事務管理。-服務層:調(diào)用風控服務(防欺詐)、賬戶服務(扣款)、通知服務(異步通知前端/商家)。-存儲層:訂單數(shù)據(jù)庫(MySQL分庫分表)、支付流水庫(TiDB/ClickHouse,高吞吐)、緩存(Redis,存儲冪等令牌、賬戶余額)。2.關鍵設計點(1)高并發(fā)處理-水平擴展:邏輯層和接入層通過K8s容器化部署,自動擴縮容(基于CPU/QPS指標)。-異步化:非核心操作(如支付結果通知、日志記錄)通過消息隊列(RocketMQ/Kafka)異步處理,降低主線程耗時。-讀寫分離:訂單數(shù)據(jù)庫采用主從復制,查詢走從庫,寫入走主庫;支付流水庫使用列式存儲,支持批量寫入。(2)原子性保證-事務邊界:支付核心邏輯使用本地事務(如MySQL的InnoDB的ACID),確保“扣款”和“更新訂單狀態(tài)”同時成功或回滾。-分布式事務:若涉及跨服務調(diào)用(如調(diào)用賬戶服務扣款),采用TCC(Try-Confirm-Cancel)模式:-Try階段:預扣資金(標記為“凍結”);-Confir

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論