版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
2026年聯(lián)想工程師面試題及答案解析一、編程基礎(5題,每題10分,共50分)1.題目:編寫一個函數(shù),實現(xiàn)字符串的逆序輸出。例如,輸入`"聯(lián)想"`,輸出`"想聯(lián)"`。要求不使用額外的字符串變量,原地修改字符串。答案:pythondefreverse_string(s):s=list(s)#將字符串轉換為列表left,right=0,len(s)-1whileleft<right:s[left],s[right]=s[right],s[left]left+=1right-=1return''.join(s)示例print(reverse_string("聯(lián)想"))#輸出:"想聯(lián)"解析:-將字符串轉換為列表是因為字符串在Python中是不可變的,直接修改會報錯。-使用雙指針法,從首尾開始交換字符,直到中間相遇。-時間復雜度:O(n),空間復雜度:O(1)(不計輸入轉換的額外空間)。2.題目:給定一個數(shù)組,找出其中重復次數(shù)最多的元素及其重復次數(shù)。例如,輸入`[1,2,2,3,3,3]`,輸出`(3,3)`。答案:pythonfromcollectionsimportCounterdefmost_frequent(arr):count=Counter(arr)max_count=0result=Noneforkey,valueincount.items():ifvalue>max_count:max_count=valueresult=keyreturn(result,max_count)示例print(most_frequent([1,2,2,3,3,3]))#輸出:(3,3)解析:-使用`collections.Counter`統(tǒng)計數(shù)組中每個元素的頻率。-遍歷計數(shù)器,記錄最高頻率的元素及其次數(shù)。-時間復雜度:O(n),空間復雜度:O(n)。3.題目:實現(xiàn)一個簡單的LRU(LeastRecentlyUsed)緩存,支持`get`和`put`操作。LRU緩存最多存儲`capacity`個元素,超出時刪除最久未使用的元素。答案: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=self.order.pop(0)delself.cache[oldest]self.cache[key]=valueself.order.append(key)示例cache=LRUCache(2)cache.put(1,1)cache.put(2,2)print(cache.get(1))#返回1cache.put(3,3)#去除鍵2print(cache.get(2))#返回-1解析:-使用字典`cache`存儲鍵值對,列表`order`記錄訪問順序。-`get`操作時,將訪問的鍵移動到末尾表示最近使用。-`put`操作時,若鍵已存在則更新順序,若超出容量則刪除最久未使用的元素(列表開頭)。-時間復雜度:O(1)。4.題目:編寫一個函數(shù),判斷一個整數(shù)是否為完全平方數(shù)。例如,輸入`16`,返回`True`;輸入`14`,返回`False`。答案:pythondefis_perfect_square(num:int)->bool:ifnum<0:returnFalseleft,right=0,numwhileleft<=right:mid=(left+right)//2square=midmidifsquare==num:returnTrueelifsquare<num:left=mid+1else:right=mid-1returnFalse示例print(is_perfect_square(16))#輸出:Trueprint(is_perfect_square(14))#輸出:False解析:-使用二分查找法,從`0`到`num`查找平方等于`num`的整數(shù)。-若找到則返回`True`,否則返回`False`。-時間復雜度:O(logn)。5.題目:實現(xiàn)一個函數(shù),合并兩個排序的鏈表,返回合并后的排序鏈表。例如,輸入`[1,2,4]`和`[1,3,4]`,輸出`[1,1,2,3,4,4]`。答案:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefmerge_two_lists(l1:ListNode,l2:ListNode)->ListNode:dummy=ListNode(0)current=dummywhilel1andl2:ifl1.val<l2.val:current.next=l1l1=l1.nextelse:current.next=l2l2=l2.nextcurrent=current.nextifl1:current.next=l1ifl2:current.next=l2returndummy.next示例構建鏈表l1=ListNode(1,ListNode(2,ListNode(4)))l2=ListNode(1,ListNode(3,ListNode(4)))merged=merge_two_lists(l1,l2)打印合并后的鏈表whilemerged:print(merged.val,end='')輸出:112344解析:-使用虛擬頭節(jié)點`dummy`簡化操作。-遍歷兩個鏈表,按順序?qū)⑤^小值節(jié)點添加到合并鏈表。-時間復雜度:O(n+m),空間復雜度:O(1)。二、系統(tǒng)設計(2題,每題25分,共50分)1.題目:設計一個高并發(fā)的短鏈接生成系統(tǒng)。要求:-支持分布式部署,可水平擴展。-鏈接生成快速,短鏈接長度盡量短。-支持自定義前綴和自定義域名。答案:核心設計思路:1.短鏈接生成算法:-使用Base62編碼(`0-9,a-z,A-Z`),將長鏈接轉換為6位短鏈接(理論上可支持2^36個鏈接)。-例如:`/abc123`對應長鏈接。2.分布式存儲:-使用Redis作為分布式鎖和計數(shù)器存儲。-每個節(jié)點維護一個全局計數(shù)器,避免沖突。3.自定義前綴和域名:-用戶可傳入前綴(如`abc`)和域名(如``),生成`/abc123`。4.緩存優(yōu)化:-使用CDN緩存短鏈接請求,降低服務器壓力。5.高可用性:-使用多副本存儲,防止單點故障。偽代碼示例:pythondefencode_base62(num):base62="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"ifnum==0:returnbase62[0]encoded=""whilenum>0:encoded=base62[num%62]+encodednum//=62returnencodeddefgenerate_short_link(long_url,prefix="abc",domain=""):獲取全局唯一ID(分布式計數(shù)器)global_id=get_global_id()encoded=encode_base62(global_id)short_link=f"http://{domain}/{prefix}{encoded}"returnshort_link解析:-Base62編碼可將長鏈接壓縮為短格式,如`abc123`。-分布式計數(shù)器確保全局唯一性,可用Redis實現(xiàn)原子操作。-自定義前綴和域名提升用戶體驗,如企業(yè)可使用``。-CDN緩存可顯著提升響應速度。2.題目:設計一個實時數(shù)據(jù)監(jiān)控平臺,要求:-支持百萬級設備接入,每秒上報大量數(shù)據(jù)。-支持按設備ID、時間范圍、指標類型查詢數(shù)據(jù)。-支持數(shù)據(jù)異常告警,如溫度超過閾值時自動通知管理員。答案:核心設計思路:1.數(shù)據(jù)采集層:-使用MQTT協(xié)議(輕量級,支持發(fā)布/訂閱)。-每個設備為發(fā)布者,平臺為訂閱者。2.數(shù)據(jù)存儲層:-使用Kafka作為消息隊列,緩沖高并發(fā)數(shù)據(jù)。-使用InfluxDB存儲時序數(shù)據(jù)(支持時間索引)。3.數(shù)據(jù)處理層:-使用Flink或SparkStreaming實時計算指標(如平均溫度)。-異常檢測:若溫度>80°C則觸發(fā)告警。4.查詢層:-使用Elasticsearch提供全文檢索和聚合查詢。-用戶可通過API查詢特定設備的歷史數(shù)據(jù)。5.告警系統(tǒng):-使用RabbitMQ推送告警消息(如郵件或短信)。架構圖偽示:設備-->MQTT-->Kafka-->InfluxDB||vv|vFlinkElasticsearch||vvRabbitMQ用戶查詢API解析:-MQTT+Kafka解決高并發(fā)接入問題,Kafka可緩沖突發(fā)流量。-InfluxDB專為時序數(shù)據(jù)優(yōu)化,查詢效率高。-Flink實時計算異常值,如溫度超標自動告警。-Elasticsearch提供靈活的查詢能力,支持多維度過濾。三、數(shù)據(jù)庫(3題,每題15分,共45分)1.題目:解釋數(shù)據(jù)庫事務的ACID特性,并說明在實際場景中如何保證事務的一致性。答案:ACID特性:-原子性(Atomicity):事務要么全部完成,要么全部回滾。-實現(xiàn):使用數(shù)據(jù)庫的`BEGINTRANSACTION`和`COMMIT/ROLLBACK`。-一致性(Consistency):事務必須保證數(shù)據(jù)庫從一致狀態(tài)到另一致狀態(tài)。-實現(xiàn):通過約束(主鍵、外鍵)、觸發(fā)器、日志記錄。-隔離性(Isolation):并發(fā)事務互不干擾。-實現(xiàn):隔離級別(讀未提交、讀已提交、可重復讀、串行化)。-持久性(Durability):事務提交后數(shù)據(jù)永久保存。-實現(xiàn):磁盤寫入和事務日志(RedoLog)。保證一致性的方法:-外鍵約束:確保數(shù)據(jù)引用完整性。-觸發(fā)器:在插入/更新/刪除時校驗業(yè)務規(guī)則。-斷言:強制數(shù)據(jù)滿足特定條件。解析:-事務日志記錄所有操作,確保故障恢復時一致性。-隔離級別平衡性能和一致性,如`InnoDB`默認可重復讀。2.題目:設計一個訂單表(`orders`),包含以下字段:-`order_id`(主鍵,自增)-`user_id`(用戶ID,關聯(lián)用戶表)-`total_amount`(訂單總金額)-`status`(訂單狀態(tài),如`pending`,`paid`,`shipped`)-`created_at`(創(chuàng)建時間)-`updated_at`(更新時間)寫出創(chuàng)建表的SQL語句,并說明索引優(yōu)化策略。答案:sqlCREATETABLEorders(order_idINTAUTO_INCREMENTPRIMARYKEY,user_idINTNOTNULL,total_amountDECIMAL(10,2)NOTNULL,statusENUM('pending','paid','shipped')NOTNULLDEFAULT'pending',created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,updated_atTIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,INDEXidx_user_id(user_id),INDEXidx_status(status),FOREIGNKEY(user_id)REFERENCESusers(user_id));索引優(yōu)化策略:-主鍵索引
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臺州浙江臺州玉環(huán)市食品藥品檢驗檢測中心招聘編外用工人員筆試歷年參考題庫附帶答案詳解
- 2025 小學六年級科學上冊青春期的自我保護與溝通課件
- 生產(chǎn)安全意識教育培訓課件
- 企業(yè)火災隱患整改制度
- 衛(wèi)生局安全生產(chǎn)例會制度
- 私立幼兒園衛(wèi)生監(jiān)督制度
- 住宿生衛(wèi)生評比制度
- 2025-2026學年黑龍江省部分校高三11月月考語文試題(解析版)
- 2025-2026學年河南省天一大聯(lián)考高三上學期階段性檢測語文試題(解析版)
- 2025-2026學年河南省TOP二十名校高二上學期10月調(diào)研考試(B卷)語文試題(解析版)
- 2025核電行業(yè)市場深度調(diào)研及發(fā)展趨勢與商業(yè)化前景分析報告
- 急驚風中醫(yī)護理查房
- 營地合作分成協(xié)議書
- GB/T 70.2-2025緊固件內(nèi)六角螺釘?shù)?部分:降低承載能力內(nèi)六角平圓頭螺釘
- 物流管理畢業(yè)論文范文-物流管理畢業(yè)論文【可編輯全文】
- 煙草門店合作合同范本
- 壁球裁判試題及答案
- 2025年配音演員保密合同協(xié)議
- 網(wǎng)絡銷售人員培訓
- 設備租賃績效考核與激勵方案設計實施方法規(guī)定
- 屠宰場現(xiàn)場施工方案
評論
0/150
提交評論