版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2026年軟件工程面試流程及常見問題解答一、編程題(共3題,每題20分,總分60分)1.題目(20分):實現一個函數,輸入一個整數數組,返回其中第三大的數。如果數組中的不同數少于三個,返回最大的數。示例:輸入:[3,2,1,5,6,4]輸出:2輸入:[1,2]輸出:22.題目(20分):編寫一個函數,將一個字符串中的所有大寫字母轉換為小寫字母,所有小寫字母轉換為大寫字母,其他字符保持不變。示例:輸入:"HelloWorld!"輸出:"hELLOwORLD!"3.題目(20分):實現一個簡單的LRU(最近最少使用)緩存,支持get和put操作。LRU緩存容量為固定值,超出容量時需要淘汰最久未使用的元素。示例:初始化:capacity=2put(1,1)→緩存是{1=1}put(2,2)→緩存是{1=1,2=2}get(1)→返回1put(3,3)→去除鍵2,緩存是{1=1,3=3}get(2)→返回-1(未找到)二、系統(tǒng)設計題(共2題,每題40分,總分80分)1.題目(40分):設計一個支持高并發(fā)訪問的短鏈接系統(tǒng)。系統(tǒng)需要滿足以下要求:-用戶輸入長鏈接,系統(tǒng)返回短鏈接。-短鏈接訪問時,自動跳轉回原始長鏈接。-系統(tǒng)需要支持高并發(fā)訪問,并具備一定的容錯能力。-簡述系統(tǒng)架構,并說明關鍵技術選型及理由。2.題目(40分):設計一個簡單的消息推送系統(tǒng),支持以下功能:-用戶可以訂閱多個主題(如新聞、天氣等)。-系統(tǒng)可以向訂閱了相應主題的用戶實時推送消息。-系統(tǒng)需要支持離線推送,即用戶未在線時也能收到消息。-簡述系統(tǒng)架構,并說明關鍵技術選型及理由。三、數據庫題(共2題,每題20分,總分40分)1.題目(20分):假設有以下SQL查詢語句:sqlSELECTcustomer_id,COUNT(order_id)ASorder_countFROMordersWHEREorder_dateBETWEEN'2025-01-01'AND'2025-12-31'GROUPBYcustomer_idORDERBYorder_countDESCLIMIT10;解釋該查詢的執(zhí)行邏輯,并說明如何優(yōu)化該查詢的性能。2.題目(20分):設計一個簡單的電商訂單表(orders),包含以下字段:-order_id(主鍵,自增)-customer_id(客戶ID,外鍵關聯客戶表)-order_date(訂單日期)-total_amount(訂單總金額)-status(訂單狀態(tài),如“待支付”“已支付”“已發(fā)貨”等)說明各字段的類型選擇及索引設計理由。四、算法題(共2題,每題20分,總分40分)1.題目(20分):給定一個鏈表,判斷鏈表中是否存在環(huán)。如果存在,返回環(huán)的入口節(jié)點;如果不存在,返回null。示例:輸入:鏈表3→2→0→-4,其中l(wèi)astnode'snext=node2輸出:節(jié)點22.題目(20分):編寫一個函數,將一個非負整數轉換為羅馬數字。羅馬數字的表示方法如下:I=1,V=5,X=10,L=50,C=100,D=500,M=1000示例:輸入:3輸出:"III"輸入:4輸出:"IV"答案及解析一、編程題1.答案(20分):pythondefthird_largest(nums):first,second,third=float('-inf'),float('-inf'),float('-inf')fornuminnums:ifnum>first:third=secondsecond=firstfirst=numeliffirst>num>second:third=secondsecond=numelifsecond>num>third:third=numreturnfirstifthird==float('-inf')elsethird解析:-初始化三個變量first、second、third為負無窮,用于記錄第一大、第二大、第三大的數。-遍歷數組,若當前數大于first,則更新三個變量;若大于second但小于first,則更新second和third;若大于third但小于second,則更新third。-最后,如果third仍為負無窮,說明數組中的不同數少于三個,返回first(最大數)。2.答案(20分):pythondefswap_case(s):return''.join([char.lower()ifchar.isupper()elsechar.upper()forcharins])解析:-使用列表推導式遍歷字符串中的每個字符,若字符為大寫則轉換為小寫,若為小寫則轉換為大寫,其他字符保持不變。-最后將列表中的字符連接成字符串返回。3.答案(20分):pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:int)->int:ifkeyinself.cache:self.order.remove(key)self.order.append(key)returnself.cache[key]return-1defput(self,key:int,value:int)->None:ifkeyinself.cache:self.order.remove(key)eliflen(self.cache)>=self.capacity:oldest_key=self.order.pop(0)delself.cache[oldest_key]self.cache[key]=valueself.order.append(key)解析:-使用字典cache存儲鍵值對,列表order記錄訪問順序。-get操作:若鍵存在,則將其移到order末尾(表示最近使用),返回值;若不存在,返回-1。-put操作:若鍵已存在,則更新值并移動到order末尾;若不存在且緩存已滿,則刪除最久未使用的元素(order第一個元素);否則直接添加鍵值對并移動到order末尾。二、系統(tǒng)設計題1.答案(40分):系統(tǒng)架構:-前端:提供用戶輸入長鏈接、獲取短鏈接的界面。-后端:處理請求,生成短鏈接,存儲映射關系,實現跳轉。-數據庫:存儲長鏈接和短鏈接的映射關系。-緩存:使用Redis緩存短鏈接到長鏈接的映射,提高訪問速度。-負載均衡:使用Nginx分發(fā)請求,保證高并發(fā)能力。關鍵技術選型及理由:-短鏈接生成:使用Base62編碼(a-z,A-Z,0-9),將長鏈接轉換為固定長度的短鏈接。-緩存:Redis支持高并發(fā)讀寫,適合緩存熱點短鏈接。-負載均衡:Nginx性能高,支持HTTP/HTTPS協議,適合高并發(fā)場景。-數據庫:使用MySQL或PostgreSQL存儲持久化數據,支持高并發(fā)寫入。2.答案(40分):系統(tǒng)架構:-用戶端:提供訂閱、退訂主題的功能。-推送服務:處理訂閱關系,實時推送消息。-消息隊列:使用Kafka或RabbitMQ存儲待推送消息,保證消息不丟失。-數據庫:存儲用戶訂閱關系。-離線推送:使用定時任務或消息隊列異步推送未在線用戶的消息。關鍵技術選型及理由:-消息隊列:Kafka支持高吞吐量,適合大規(guī)模消息推送;RabbitMQ支持多種協議,靈活度高。-數據庫:使用MySQL或MongoDB存儲用戶訂閱關系,支持高并發(fā)查詢。-離線推送:使用Redis或消息隊列存儲待推送消息,定時異步推送。三、數據庫題1.答案(20分):執(zhí)行邏輯:-WHERE子句篩選2025年的訂單。-GROUPBYcustomer_id按客戶ID分組,COUNT(order_id)統(tǒng)計每個客戶的訂單數量。-ORDERBYorder_countDESC按訂單數量降序排列。-LIMIT10返回前10個客戶。優(yōu)化方法:-在order_date、customer_id上創(chuàng)建索引,加速篩選和分組。-使用臨時表存儲中間結果,減少重復計算。-調整數據庫參數,如緩存大小,提高查詢速度。2.答案(20分):sqlCREATETABLEorders(order_idINTAUTO_INCREMENTPRIMARYKEY,customer_idINT,order_dateDATE,total_amountDECIMAL(10,2),statusENUM('待支付','已支付','已發(fā)貨'),FOREIGNKEY(customer_id)REFERENCEScustomers(customer_id));字段類型及索引設計:-order_id:INT自增,主鍵,唯一標識訂單。-customer_id:INT外鍵關聯客戶表,創(chuàng)建索引加速查詢。-order_date:DATE類型,創(chuàng)建索引加速按日期篩選。-total_amount:DECIMAL(10,2)存儲金額,避免精度問題。-status:ENUM類型存儲狀態(tài),創(chuàng)建索引加速按狀態(tài)篩選。四、算法題1.答案(20分):pythonclassListNode:def__init__(self,x):self.val=xself.next=NonedefdetectCycle(head:ListNode)->ListNode:slow,fast=head,headwhilefastandfast.next:slow=slow.nextfast=fast.next.nextifslow==fast:slow=headwhileslow!=fast:slow=slow.nextfast=fast.nextreturnslowreturnNone解析:-使用快慢指針法判斷環(huán):快指針每次走兩步,慢指針每次走一步,若相遇則存在環(huán)。-相遇后,慢指針重新從頭開始,快慢指針每次走一步,再次相遇時即為環(huán)的入口節(jié)點。2.答案(20分):pythondefintToRoman(num:int)->str:val=[1000,900,500,400,100,90,50,40,10,9,5,4,1]syms=["M","CM","D","CD","C","XC","L","XL","X","IX","V
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 梁山縣2024年山東濟寧梁山縣事業(yè)單位招聘工作人員(綜合類)(25人)筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 2026年山西單招語數英高頻考點經典題集含答案考試院命題趨勢
- 2026年內蒙古單招冷門專業(yè)大類專項沖刺卷含答案針對性提分
- 2026年廈門單招服裝設計專業(yè)技能經典題含答案
- 2026年黑龍江單招文化素質省統(tǒng)考經典題含答案2023-2025年精校版
- 2026年福建單招鄉(xiāng)村醫(yī)生定向培養(yǎng)專業(yè)考試經典題集含答案
- 2026年湖南單招中等水平考生沖優(yōu)模擬卷含答案基礎題60提升題40
- 2026年黑龍江單招職業(yè)適應性測試時政經典題集含答案
- 2026年天津單招新能源汽車技術專業(yè)技能故障診斷經典題集含答案
- 2026年保險業(yè)子公司業(yè)務副總面試問題集
- 2025年華中科技大學職工隊伍公開招聘備考題庫完整答案詳解
- 2025年下半年貴州遵義市市直事業(yè)單位選調56人筆試考試備考題庫及答案解析
- 水電分包協議合同范本
- 2025年初級社會工作者考試《社會工作綜合能力》真題及答案解析
- 貨架租用合同范本
- 還建房出售合同范本
- 2025年無人機航拍理論題庫(含答案)
- 安陽學院期末考試原題及答案
- 校園廣播站每日提醒培訓課件
- 中層競聘面試必-備技能與策略實戰(zhàn)模擬與案例分析
- 政銀合作融資模式-洞察與解讀
評論
0/150
提交評論