版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2026年互聯(lián)網(wǎng)科技公司面試題及答案一、編程題(共5題,每題10分,總分50分)1.題1(10分):編寫一個(gè)函數(shù),實(shí)現(xiàn)將任意長(zhǎng)度的鏈表反轉(zhuǎn)。鏈表節(jié)點(diǎn)定義如下:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=next要求:-時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。-輸入示例:`1->2->3->4->5`,輸出:`5->4->3->2->1`。答案與解析:pythondefreverse_list(head):prev=Nonecurrent=headwhilecurrent:next_node=current.next#臨時(shí)存儲(chǔ)下一個(gè)節(jié)點(diǎn)current.next=prev#反轉(zhuǎn)指針prev=current#移動(dòng)prev到當(dāng)前節(jié)點(diǎn)current=next_node#移動(dòng)current到下一個(gè)節(jié)點(diǎn)returnprev解析:-時(shí)間復(fù)雜度:遍歷鏈表一次,O(n)。-空間復(fù)雜度:只用三個(gè)指針變量,O(1)。-核心邏輯:通過迭代方式逐個(gè)反轉(zhuǎn)節(jié)點(diǎn)指針,直到當(dāng)前節(jié)點(diǎn)為空。2.題2(10分):實(shí)現(xiàn)一個(gè)無重復(fù)字符的最長(zhǎng)子串查找功能。輸入一個(gè)字符串,返回最長(zhǎng)子串的長(zhǎng)度。要求:-輸入示例:`"abcabcbb"`,輸出:`3`(最長(zhǎng)子串為"abc")。-輸入示例:`"pwwkew"`,輸出:`3`(最長(zhǎng)子串為"wke")。答案與解析:pythondeflength_of_longest_substring(s):char_set=set()left=0max_len=0forrightinrange(len(s)):whiles[right]inchar_set:char_set.remove(s[left])left+=1char_set.add(s[right])max_len=max(max_len,right-left+1)returnmax_len解析:-時(shí)間復(fù)雜度:O(n),每個(gè)字符最多訪問兩次(left和right)。-空間復(fù)雜度:O(min(m,n)),m為字符集大小,n為字符串長(zhǎng)度。-核心邏輯:使用滑動(dòng)窗口(雙指針)和哈希集合記錄字符出現(xiàn)位置,動(dòng)態(tài)調(diào)整窗口范圍。3.題3(10分):給定一個(gè)整數(shù)數(shù)組,找出其中和為特定值的最長(zhǎng)子數(shù)組長(zhǎng)度。要求:-輸入示例:`nums=[1,-2,3,5,-1,2]`,目標(biāo)和`target=3`,輸出:`4`(子數(shù)組[1,-2,3,5]的和為3)。答案與解析:pythondefmax_subarray_len(nums,target):sum_map={0:-1}#初始化前綴和為0時(shí)索引為-1current_sum=0max_len=0fori,numinenumerate(nums):current_sum+=numifcurrent_sum-targetinsum_map:max_len=max(max_len,i-sum_map[current_sum-target])ifcurrent_sumnotinsum_map:sum_map[current_sum]=ireturnmax_len解析:-時(shí)間復(fù)雜度:O(n),遍歷數(shù)組一次。-空間復(fù)雜度:O(n),存儲(chǔ)前綴和的哈希表。-核心邏輯:通過前綴和+哈希表記錄第一個(gè)出現(xiàn)的前綴和位置,快速查找滿足條件的子數(shù)組。4.題4(10分):實(shí)現(xiàn)一個(gè)LRU(最近最少使用)緩存,支持get和put操作。緩存容量為固定值。要求:-輸入示例:`capacity=2`,操作序列`["LRU","put",1,1,"get",1,"put",2,3,"get",2,"put",4,"get",1,"get",3]`,輸出:`[1,-1,-1,3,4]`。答案與解析: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)解析:-時(shí)間復(fù)雜度:get和put均為O(1),通過雙向鏈表和哈希表實(shí)現(xiàn)。-核心邏輯:哈希表存儲(chǔ)鍵值對(duì),雙向鏈表維護(hù)使用順序,最近使用的節(jié)點(diǎn)移動(dòng)到尾部。5.題5(10分):給定一個(gè)二叉樹,判斷其是否為完全二叉樹。要求:-輸入示例:1/\23/\45輸出:`True`。1/\23\4輸出:`False`。答案與解析:pythonfromcollectionsimportdequeclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefis_complete_binary_tree(root:TreeNode)->bool:ifnotroot:returnTruequeue=deque([root])flag=False#標(biāo)記是否遇到過不完整的節(jié)點(diǎn)whilequeue:node=queue.popleft()ifnode:ifflag:returnFalse#后面出現(xiàn)滿節(jié)點(diǎn),前面有缺失節(jié)點(diǎn)flag=Truequeue.append(node.left)queue.append(node.right)else:flag=True#遇到空節(jié)點(diǎn)后,后續(xù)節(jié)點(diǎn)必須全部為空returnTrue解析:-時(shí)間復(fù)雜度:O(n),遍歷所有節(jié)點(diǎn)。-空間復(fù)雜度:O(n),使用隊(duì)列存儲(chǔ)節(jié)點(diǎn)。-核心邏輯:層序遍歷,遇到第一個(gè)空節(jié)點(diǎn)后,后續(xù)節(jié)點(diǎn)必須全部為空。二、系統(tǒng)設(shè)計(jì)題(共3題,每題20分,總分60分)1.題1(20分):設(shè)計(jì)一個(gè)高并發(fā)的短鏈接系統(tǒng)。要求:-輸入長(zhǎng)鏈接,輸出短鏈接(如6位隨機(jī)字母),點(diǎn)擊短鏈接可自動(dòng)跳轉(zhuǎn)至長(zhǎng)鏈接。-支持高并發(fā)訪問(QPS>1萬(wàn)),分布式部署,具備可擴(kuò)展性。答案與解析:系統(tǒng)架構(gòu):1.URL縮短服務(wù):-使用分布式ID生成器(如TwitterSnowflake算法)生成唯一ID。-將ID轉(zhuǎn)換為短鏈接(如62進(jìn)制編碼,`a-zA-Z0-9`共62個(gè)字符,6位長(zhǎng)度約等于`1.15e9`個(gè)短鏈接)。-緩存ID與長(zhǎng)鏈接的映射關(guān)系(Redis/Hazelcast)。2.路由服務(wù):-使用Nginx/LVS進(jìn)行負(fù)載均衡,分發(fā)請(qǐng)求到后端服務(wù)。-后端服務(wù)采用無狀態(tài)架構(gòu)(如SpringCloud/FaaS),支持彈性伸縮。3.緩存層:-高頻訪問的短鏈接緩存到Redis,TTL設(shè)為24小時(shí)。-熱點(diǎn)短鏈接可使用本地緩存(內(nèi)存)。4.數(shù)據(jù)庫(kù):-使用分片數(shù)據(jù)庫(kù)(如ShardingSphere),按ID范圍分片。高并發(fā)優(yōu)化:-異步處理:使用消息隊(duì)列(Kafka/RabbitMQ)削峰填谷。-CDN加速:靜態(tài)資源(如favicon)部署到CDN。-限流降級(jí):熔斷器(Hystrix)防止雪崩。2.題2(20分):設(shè)計(jì)一個(gè)實(shí)時(shí)消息推送系統(tǒng),支持單聊和群聊。要求:-支持WebSocket長(zhǎng)連接,低延遲推送。-用戶離線時(shí),消息可存儲(chǔ)到數(shù)據(jù)庫(kù),待上線后重發(fā)。-支持消息加簽、防重放。答案與解析:系統(tǒng)架構(gòu):1.接入層:-WebSocket協(xié)議接入,使用Nginx反向代理。-Token認(rèn)證,防止未授權(quán)訪問。2.消息隊(duì)列:-使用RabbitMQ/Kafka傳遞消息,確保高吞吐。-單聊消息直連,群聊消息廣播到所有成員。3.存儲(chǔ)層:-離線消息存儲(chǔ)到Redis(內(nèi)存)或Tair(持久化)。-消息加簽(如HMAC-SHA256),防篡改。4.推送服務(wù):-根據(jù)用戶設(shè)備類型(iOS/Android/Web)推送至客戶端。-客戶端接收后更新本地?cái)?shù)據(jù)庫(kù)。技術(shù)選型:-WebSocket:Socket.IO/FastAPI。-消息存儲(chǔ):Redis+RocksDB(持久化)。-防重放:使用UUID+Redis過期時(shí)間。3.題3(20分):設(shè)計(jì)一個(gè)高并發(fā)的實(shí)時(shí)推薦系統(tǒng),支持個(gè)性化推薦。要求:-輸入用戶行為數(shù)據(jù)(點(diǎn)擊、收藏、購(gòu)買),輸出Top10推薦商品。-支持增量更新,低延遲查詢。答案與解析:系統(tǒng)架構(gòu):1.數(shù)據(jù)采集層:-用戶行為日志接入Kafka,使用Flume/Flink實(shí)時(shí)處理。2.特征工程:-用戶畫像(年齡、性別、購(gòu)買偏好)存儲(chǔ)到Redis。-商品標(biāo)簽(類別、熱度)存儲(chǔ)到Elasticsearch。3.推薦引擎:-協(xié)同過濾(ALS/SVD),基于用戶/商品相似度。-熱門推薦(如商品點(diǎn)擊量Top10)。-實(shí)時(shí)更新(用戶行為觸發(fā)重計(jì)算)。4.查詢服務(wù):-使用Redis緩存用戶實(shí)時(shí)推薦結(jié)果。-查詢時(shí)先命中緩存,否則計(jì)算后緩存。性能優(yōu)化:-冷啟動(dòng):新用戶推薦基于熱門商品。-離線+在線結(jié)合:模型離線訓(xùn)練(Spark),在線實(shí)時(shí)調(diào)優(yōu)(TensorFlowServing)。-降級(jí)策略:推薦失敗時(shí)回退到隨機(jī)推薦。三、算法題(共3題,每題10分,總分30分)1.題1(10分):給定一個(gè)數(shù)組,返回所有可能的子集。要求:-輸入:`[1,2,3]`,輸出:`[[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]]`。答案與解析:pythondefsubsets(nums):res=[]subset=[]defbacktrack(start):res.append(subset.copy())foriinrange(start,len(nums)):subset.append(nums[i])backtrack(i+1)subset.pop()backtrack(0)returnres解析:-回溯算法:類似全排列,但每次選擇后不刪除原元素。-時(shí)間復(fù)雜度:O(2^n),n為數(shù)組長(zhǎng)度。2.題2(10分):給定一個(gè)字符串,判斷其是否為有效的括號(hào)組合。要求:-輸入:`"()[]{}"`,輸出:`True`。-輸入:`"([)]"`,輸出:`False`。答案與解析:pythondefisValid(s):stack=[]mapping={')':'(','}':'{',']':'['}forcharins:ifcharinmapping:top_element=stack.pop()ifstackelse'#'ifmapping[char]!=top_element:returnFalseelse:stack.append(char)returnnotstack解析:-棧結(jié)構(gòu):左括號(hào)入棧,右括號(hào)彈出并比對(duì)。-時(shí)間復(fù)雜度:O(n)。3.題3(10分):給定一個(gè)無序數(shù)組,找出不重復(fù)的三元組,使得a+b+c=0。要求:-輸入:`[-1,0,1,2,-1,-4]`,輸出:`[[-1,-1,2],[-1,0,1]]`。答案與解析:pythondefthreeSum(nums):nums.sort()res=[]n=len(nums)foriinrange(n):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal<0:left+=1eliftotal>0:right-=1else:res.append([nums[i],nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1right-=1returnres解析:-排序+雙指針:排序后固定一個(gè)數(shù),其余用雙指針找和為0的組合。-時(shí)間復(fù)雜度:O(n^2)。四、數(shù)據(jù)庫(kù)題(共2題,每題10分,總分20分)1.題1(10分):設(shè)計(jì)一個(gè)電商訂單表(SQL),支持高并發(fā)寫入。要求:-字段:`order_id`(主鍵)、`user_id`、`product_id`、`quantity`、`total_price`、`status`(待支付/已支付/已取消)、`create_time`。-優(yōu)化寫入性能。答案與解析:sqlCREATETABLEorders(order_idBIGINTAUTO_INCREMENTPRIMARYKEY,user_idBIGINTNOTNULL,product_idBIGINTNOTNULL,quantityINTNOTNULLCHECK(quantity>0),total_priceDECIMAL(10,2)NOTNULL,statusENUM('pending','paid','cancelled')DEFAULT'pending',create_timeTIMESTAMPDEFAULTCURRENT_TIMESTAMP,INDEXidx_user_id(user_id),INDEXidx_product_id(product_id),INDEXidx_status(status))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;優(yōu)化策略:-InnoDB引擎:支持行級(jí)鎖和事務(wù)。-分庫(kù)分表:按order_id或user_id分片。-寫入緩存:Redis預(yù)存熱點(diǎn)數(shù)據(jù),批量寫入數(shù)據(jù)庫(kù)。2.題2(10分):查詢過去7天內(nèi),每個(gè)用戶的訂單數(shù)量和總金額。要求:-輸入:`{"time_range":"last_7_days"}`,輸出:json[{"user_id":1,"order_count":5,"total_amount":1200.50},{"user_id":2,"order_count":3,"total_amount":850.00}]答案與解析:sqlSELECTuser_id,COUNT(order_id)ASorder_count,SUM(total_price)AStotal_amountFROMordersWHEREcreate_time>=NOW()-INTERVAL7DAYGROUPBYuser_idORDERBYuser_id;優(yōu)化建議:-物化視圖:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 截洪溝施工方案
- 2025年口腔診療器械消毒技術(shù)操作規(guī)范試題與答案
- 醫(yī)務(wù)科工作總結(jié)及工作計(jì)劃
- 慢性病防治試題及答案
- 四川硬筆法四級(jí)考試試題及答案
- 2025建筑工程技術(shù)考試試題(含答案)
- 物流師三級(jí)考試試題含答案
- 2025年海選詩(shī)詞大賽題庫(kù)及答案
- 震動(dòng)打樁機(jī)安全操作規(guī)程
- 建設(shè)工程施工合同糾紛要素式起訴狀模板專業(yè)權(quán)威靠譜
- 意識(shí)障礙的判斷及護(hù)理
- 儲(chǔ)能電站安全管理與操作規(guī)程
- 2025年宿遷市泗陽(yáng)縣保安員招聘考試題庫(kù)附答案解析
- 交通安全企業(yè)培訓(xùn)課件
- 2025年廣東省中考物理試卷及答案
- 皮革項(xiàng)目商業(yè)計(jì)劃書
- 主管護(hù)師護(hù)理學(xué)考試歷年真題試卷及答案
- 華文慕課《刑法學(xué)》總論課后作業(yè)答案
- 公路護(hù)欄波型梁施工方案
- 2025版煤礦安全規(guī)程新增變化條款考試題庫(kù)
- 基于SOLO分類理論剖析初中生數(shù)學(xué)開放題解決水平:現(xiàn)狀差異與提升策略
評(píng)論
0/150
提交評(píng)論