- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第PAGE页共NUMPAGES页
2026年软件工程师面试题详解及考点分析
一、编程实现题(共3题,每题15分,总分45分)
题目1(15分):实现一个简单的LRU缓存机制
要求:
-请使用Python或Java实现LRU(LeastRecentlyUsed)缓存机制。
-缓存容量为固定值`capacity`。
-支持以下操作:
-`get(key)`:获取键`key`对应的值,如果键不存在返回-1。获取值后,将该键值对标记为最近使用。
-`put(key,value)`:插入或更新键值对。如果缓存已满,则删除最久未使用的键值对。
-请解释你的实现思路,并说明如何保证`get`和`put`操作的时间复杂度为O(1)。
答案与解析:
实现思路:
-使用`LinkedHashMap`(Java)或自定义双向链表+哈希表(Python)实现。
-`LinkedHashMap`的`accessOrder`属性可以按访问顺序排序。
-自定义实现时,双向链表记录顺序,哈希表记录键值对以实现O(1)查找。
示例代码(Python):
python
classLRUCache:
def__init__(self,capacity:int):
self.capacity=capacity
self.cache={}
self.head,self.tail=Node(0,0),Node(0,0)
self.head.next=self.tail
self.tail.prev=self.head
classNode:
def__init__(self,key,value):
self.key=key
self.value=value
self.prev=None
self.next=None
defget(self,key:int)-int:
ifkeyinself.cache:
node=self.cache[key]
self._remove(node)
self._add(node)
returnnode.value
return-1
defput(self,key:int,value:int)-None:
ifkeyinself.cache:
self._remove(self.cache[key])
node=self.Node(key,value)
self.cache[key]=node
self._add(node)
iflen(self.cache)self.capacity:
lru=self.tail.prev
self._remove(lru)
delself.cache[lru.key]
def_remove(self,node):
delself.cache[node.key]
node.prev.next=node.next
node.next.prev=node.prev
def_add(self,node):
node.next=self.head.next
node.next.prev=node
self.head.next=node
node.prev=self.head
解析:
-`LinkedHashMap`通过调整`accessOrder`实现LRU。
-自定义实现时,双向链表维护顺序,哈希表实现O(1)查找。
-`get`操作时,将节点移动到链表头部;`put`操作时,如果缓存已满,删除链表尾部节点(最久未使用)。
题目2(15分):实现一个有效的括号匹配器
要求:
-编写一个函数`isValid(s:str)-bool`,判断字符串`s`中的括号(`{`,`[]`,`()`)是否有效。
-有效括号需满足:
-左括号必须与相同类型的右括号匹配。
-左括号必须按正确的顺序闭合。
-示例:
-输入:`()[]{}`→输出:`True`
-输入:`([)]`→输出:`False`
答案与解析:
实现思路:
-使用栈(Stack)数据结构。
-遍历字符串:
-遇到左括号,入栈。
-遇到右括号,检查栈顶是否为对应左括号,若不是或栈为空,返回`False`。
-遍历结束后,栈应为空。
示例代码(Python):
python
defisValid(s:str)-bool:
stack=[]
mapping={):(,]:[,}:{}
forcharins:
ifcharinmapping:
top_element=stack.p
您可能关注的文档
最近下载
- 安徽省合肥市第四十六中学2025-2026学年九年级数学12月月考试卷.docx VIP
- 2022年辽宁铁道职业技术学院单招综合素质题库及答案解析.docx VIP
- 2025年普通高等学校招生全国统一考试(黑吉辽蒙)生物(网络收集版)含答案.docx VIP
- 成本会计期末考试试题及答案.docx VIP
- 混凝土框架结构设计.docx VIP
- 2024年苏州卫生职业技术学院单招语文考试试题及答案解析.docx VIP
- ISO14644-3洁净室及相关受控环境检测方法.pdf VIP
- 25016-iRead上海英语 模拟试卷 教师版.pdf VIP
- 成本会计期末考试试题及答案.pdf VIP
- 山东省枣庄市滕州市2025-2026学年高一上学期期中数学试题含答案.pdf
原创力文档


文档评论(0)