版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2026年后端開發(fā)面試題及數(shù)據(jù)庫知識含答案一、編程語言基礎(chǔ)(15分)題目1(5分)請用Java實現(xiàn)一個簡單的LRU(最近最少使用)緩存,要求支持以下功能:1.初始化緩存容量為固定值2.`get(key)`:獲取鍵對應(yīng)的值,如果不存在返回-13.`put(key,value)`:添加或更新鍵值對,如果超出容量,需要刪除最久未使用的鍵題目2(10分)用Python實現(xiàn)一個線程安全的計數(shù)器,要求:1.支持多線程同時讀取和寫入2.確保計數(shù)的一致性3.提供一個方法返回當(dāng)前計數(shù)值二、數(shù)據(jù)結(jié)構(gòu)與算法(20分)題目1(10分)給定一個整數(shù)數(shù)組,設(shè)計一個算法找到數(shù)組中未出現(xiàn)的最小正整數(shù)。要求時間復(fù)雜度O(n),空間復(fù)雜度O(1)。題目2(10分)實現(xiàn)二叉樹的深度優(yōu)先遍歷(前序、中序、后序)和廣度優(yōu)先遍歷,要求用遞歸和非遞歸兩種方式實現(xiàn)。三、數(shù)據(jù)庫知識(25分)題目1(10分)解釋ACID特性,并說明在哪些場景下可能需要犧牲某些ACID特性以換取性能。題目2(15分)設(shè)計一個簡單的電商系統(tǒng)數(shù)據(jù)庫表結(jié)構(gòu),包含以下功能:1.用戶表(id,username,password,email)2.商品表(id,name,price,category)3.訂單表(id,user_id,total_amount,order_date)4.訂單明細(xì)表(id,order_id,product_id,quantity,price)要求:1.設(shè)計主外鍵關(guān)系2.添加必要的索引3.編寫SQL語句實現(xiàn):-查詢某個用戶的消費總額-查詢某個分類的商品數(shù)量-查詢最近一周的訂單數(shù)量及平均訂單金額四、系統(tǒng)設(shè)計(20分)題目1(10分)設(shè)計一個高并發(fā)的短鏈接生成系統(tǒng),要求:1.支持高并發(fā)訪問2.鏈接具有唯一性3.鏈接長度盡可能短題目2(10分)設(shè)計一個簡單的消息隊列系統(tǒng),要求:1.支持消息的發(fā)布和訂閱2.保證消息的可靠傳遞3.提供至少兩種消費者模式五、分布式系統(tǒng)(20分)題目1(10分)解釋CAP理論,并說明在哪些場景下需要采用最終一致性架構(gòu)。題目2(10分)設(shè)計一個分布式鎖的解決方案,要求:1.支持高可用2.防止死鎖3.能在分布式環(huán)境中正常工作答案與解析一、編程語言基礎(chǔ)(15分)題目1(5分)答案javaimportjava.util.HashMap;importjava.util.Map;importjava.util.LinkedList;publicclassLRUCache<K,V>{privatefinalintcapacity;privateMap<K,Node<K,V>>cache;privateLinkedList<Node<K,V>>list;publicLRUCache(intcapacity){this.capacity=capacity;this.cache=newHashMap<>();this.list=newLinkedList<>();}publicVget(Kkey){if(!cache.containsKey(key)){return-1;}Node<K,V>node=cache.get(key);moveToHead(node);returnnode.value;}publicvoidput(Kkey,Vvalue){if(cache.containsKey(key)){Node<K,V>node=cache.get(key);node.value=value;moveToHead(node);}else{Node<K,V>newNode=newNode<>(key,value);if(cache.size()>=capacity){Node<K,V>tail=list.removeLast();cache.remove(tail.key);}cache.put(key,newNode);list.addFirst(newNode);}}privatevoidmoveToHead(Node<K,V>node){list.remove(node);list.addFirst(node);}privatestaticclassNode<K,V>{Kkey;Vvalue;Node<K,V>next;Node<K,V>prev;publicNode(Kkey,Vvalue){this.key=key;this.value=value;}}}題目2(10分)答案pythonimportthreadingclassThreadSafeCounter:def__init__(self,initial=0):self.value=initialself.lock=threading.Lock()defincrement(self):withself.lock:self.value+=1defdecrement(self):withself.lock:self.value-=1defget_value(self):withself.lock:returnself.value二、數(shù)據(jù)結(jié)構(gòu)與算法(20分)題目1(10分)答案pythondeffirst_missing_positive(nums):n=len(nums)foriinrange(n):while1<=nums[i]<=nandnums[nums[i]-1]!=nums[i]:nums[nums[i]-1],nums[i]=nums[i],nums[nums[i]-1]foriinrange(n):ifnums[i]!=i+1:returni+1returnn+1題目2(10分)答案python遞歸方式classTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefpreorder_recursive(root):ifnotroot:return[]return[root.val]+preorder_recursive(root.left)+preorder_recursive(root.right)definorder_recursive(root):ifnotroot:return[]returninorder_recursive(root.left)+[root.val]+inorder_recursive(root.right)defpostorder_recursive(root):ifnotroot:return[]returnpostorder_recursive(root.left)+postorder_recursive(root.right)+[root.val]defbfs(root):ifnotroot:return[]result,queue=[],[root]whilequeue:node=queue.pop(0)result.append(node.val)ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)returnresult非遞歸方式defpreorder_non_recursive(root):ifnotroot:return[]result,stack=[],[root]whilestack:node=stack.pop()result.append(node.val)ifnode.right:stack.append(node.right)ifnode.left:stack.append(node.left)returnresultdefinorder_non_recursive(root):result,stack,current=[],[],rootwhilestackorcurrent:whilecurrent:stack.append(current)current=current.leftcurrent=stack.pop()result.append(current.val)current=current.rightreturnresultdefpostorder_non_recursive(root):ifnotroot:return[]result,stack=[],[(root,False)]whilestack:node,visited=stack.pop()ifnode:ifvisited:result.append(node.val)else:stack.append((node,True))stack.append((node.right,False))stack.append((node.left,False))returnresult三、數(shù)據(jù)庫知識(25分)題目1(10分)答案ACID特性解釋:1.原子性(Atomicity):一個事務(wù)中的所有操作要么全部完成,要么全部不做,不會處于中間狀態(tài)2.一致性(Consistency):事務(wù)必須保證數(shù)據(jù)庫從一個一致性狀態(tài)轉(zhuǎn)換到另一個一致性狀態(tài)3.隔離性(Isolation):一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾,即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務(wù)是隔離的4.持久性(Durability):一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就是永久性的犧牲ACID的場景:1.性能需求高時可能犧牲隔離性(如使用可重復(fù)讀隔離級別)2.實時性要求高時可能犧牲一致性(如最終一致性架構(gòu))3.大量寫入場景下可能犧牲原子性(如本地寫入,異步提交)4.分布式事務(wù)場景下可能犧牲持久性(如兩階段提交協(xié)議)題目2(15分)答案sql--用戶表CREATETABLEusers(idINTAUTO_INCREMENTPRIMARYKEY,usernameVARCHAR(50)NOTNULLUNIQUE,passwordVARCHAR(255)NOTNULL,emailVARCHAR(100));--商品表CREATETABLEproducts(idINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(255)NOTNULL,priceDECIMAL(10,2)NOTNULL,categoryVARCHAR(100),INDEXidx_category(category));--訂單表CREATETABLEorders(idINTAUTO_INCREMENTPRIMARYKEY,user_idINTNOTNULL,total_amountDECIMAL(10,2)NOTNULL,order_dateDATETIMEDEFAULTCURRENT_TIMESTAMP,FOREIGNKEY(user_id)REFERENCESusers(id));--訂單明細(xì)表CREATETABLEorder_items(idINTAUTO_INCREMENTPRIMARYKEY,order_idINTNOTNULL,product_idINTNOTNULL,quantityINTNOTNULL,priceDECIMAL(10,2)NOTNULL,FOREIGNKEY(order_id)REFERENCESorders(id),FOREIGNKEY(product_id)REFERENCESproducts(id));--查詢某個用戶的消費總額SELECTuser_id,SUM(quantityprice)AStotal_spentFROMorder_itemsoiJOINordersoONoi.order_id=o.idGROUPBYuser_id;--查詢某個分類的商品數(shù)量SELECTcategory,COUNT()ASproduct_countFROMproductsGROUPBYcategory;--查詢最近一周的訂單數(shù)量及平均訂單金額SELECTCOUNT()ASorder_count,AVG(total_amount)ASavg_amountFROMordersWHEREorder_date>=NOW()-INTERVAL7DAY;四、系統(tǒng)設(shè)計(20分)題目1(10分)答案1.數(shù)據(jù)結(jié)構(gòu)設(shè)計:-使用hash映射存儲短鏈接與長鏈接的對應(yīng)關(guān)系-使用自增ID生成短碼,可映射為62進(jìn)制字符2.系統(tǒng)架構(gòu):-負(fù)載均衡的前端接入層-短鏈接存儲服務(wù)(可使用Redis或內(nèi)存緩存)-原始鏈接存儲服務(wù)(數(shù)據(jù)庫或分布式文件系統(tǒng))-錯誤處理與日志系統(tǒng)3.代碼示例:pythonimportbase64importhashlibimportredisclassShortLinkService:def__init__(self):self.redis=redis.Redis()self.base="http://short.url/"self.characters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"selfcharacter_len=len(self.characters)defgenerate_short_code(self,length=6):random_bytes=os.urandom(length)hash_digest=hashlib.sha256(random_bytes).hexdigest()short_code=base64.urlsafe_b64encode(hash_digest[:length]).decode().rstrip('=')returnshort_code[:length]defcreate_short_link(self,long_url):short_code=self.generate_short_code()self.redis.setex(short_code,360024365,long_url)returnself.base+short_codedefresolve_short_link(self,short_code):long_url=self.redis.get(short_code)iflong_url:returnlong_url.decode()return"404NotFound"題目2(10分)答案1.消息隊列架構(gòu):-生產(chǎn)者(Producer)發(fā)布消息到主題(Topic)或隊列(Queue)-消費者(Consumer)訂閱主題/隊列接收消息-消息中間件(如RabbitMQ,Kafka)2.實現(xiàn)方案:pythonimportpikaimportuuidclassMessageQueue:def__init__(self,queue_name="task_queue"):self.connection=pika.BlockingConnection(pika.ConnectionParameters('localhost'))self.channel=self.connection.channel()self.channel.queue_declare(queue=queue_name)self.correlation_id=str(uuid.uuid4())defsend_message(self,message,queue_name="task_queue"):self.channel.basic_publish(exchange='',routing_key=queue_name,body=message,properties=pika.BasicProperties(reply_to='response_queue',correlation_id=self.correlation_id))defreceive_message(self,queue_name="task_queue"):result=self.channel.basic_consume(queue=queue_name,auto_ack=True,on_message_callback=self.on_message)self.channel.start_consuming()defon_message(self,channel,method,properties,body):print(f"Receivedmessage:{body}")處理消息response="Messageprocessed"channel.basic_publish(exchange='',routing_key=properties.reply_to,properties=pika.BasicProperties(correlation_id=properties.correlation_id),body=response)五、分布式系統(tǒng)(20分)題目1(10分)答案CAP理論解釋:-C(Consistency):一致性-A(Availability):可用性-P(Partitiontolerance):分區(qū)容錯性當(dāng)網(wǎng)絡(luò)分區(qū)發(fā)生時,系統(tǒng)必須能在以下三個特性中至少滿足兩個:1.一致性:所有節(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 術(shù)后退行性變護(hù)理查房
- 控制體重的營養(yǎng)食譜
- 2025年高純高碳鉻軸承鋼及滲碳軸承鋼項目發(fā)展計劃
- 護(hù)理記錄的規(guī)范與護(hù)理質(zhì)量評價
- 護(hù)理分級標(biāo)準(zhǔn)的國際比較
- 護(hù)理法律法規(guī)知識普及視頻
- 員工懲處課件
- 人衛(wèi)護(hù)理實踐指南與案例分析
- 基礎(chǔ)護(hù)理體位角色扮演
- 產(chǎn)婦產(chǎn)后身心康復(fù)全攻略
- G-T 42582-2023 信息安全技術(shù) 移動互聯(lián)網(wǎng)應(yīng)用程序(App)個人信息安全測評規(guī)范
- 國外慣性技術(shù)發(fā)展與回顧
- 國開2023秋《幼兒園教育質(zhì)量評價》形考任務(wù)123 大作業(yè)參考答案
- 課本劇西門豹治鄴劇本
- 移動應(yīng)用程序權(quán)限管理與加固項目需求分析
- 中華人民共和國簡史學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
- 成都空港產(chǎn)業(yè)興城投資發(fā)展有限公司空中客車飛機(jī)全生命周期服務(wù)項目環(huán)境影響報告
- 回族上墳怎么念
- 繩結(jié)的各種打法
- 大眾滑雪智慧樹知到答案章節(jié)測試2023年沈陽體育學(xué)院
- GB/T 26480-2011閥門的檢驗和試驗
評論
0/150
提交評論