- 0
- 0
- 约9.81千字
- 约 27页
- 2026-01-26 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年高级工程师面试题及答案:后端工程师
一、编程实现题(共3题,每题20分,总计60分)
题目1(20分):实现一个高效的LRU缓存机制
要求:
1.设计一个LRU(LeastRecentlyUsed)缓存类,支持get和put操作
2.get操作返回缓存中对应key的value,并更新该key的最近使用时间
3.put操作将key-value对添加到缓存中,如果缓存已满,则移除最久未使用的key-value对
4.不使用任何现成的缓存库,需手动实现数据结构
5.请说明你的实现思路及时间复杂度分析
答案:
java
importjava.util.HashMap;
importjava.util.Map;
classLRUCacheK,V{
privatefinalintcapacity;
privatefinalMapK,NodeK,Vmap;
privatefinalNodeK,Vhead,tail;
publicLRUCache(intcapacity){
this.capacity=capacity;
map=newHashMap();
//创建双向链表头部和尾部标记
head=newNode(null,null);
tail=newNode(null,null);
head.next=tail;
tail.prev=head;
}
publicVget(Kkey){
NodeK,Vnode=map.get(key);
if(node==null){
returnnull;
}
//将访问的节点移动到头部
moveToHead(node);
returnnode.value;
}
publicvoidput(Kkey,Vvalue){
NodeK,Vnode=map.get(key);
if(node!=null){
//更新已有节点的值
node.value=value;
//将节点移动到头部
moveToHead(node);
}else{
//创建新节点
NodeK,VnewNode=newNode(key,value);
map.put(key,newNode);
//添加到链表头部
addNode(newNode);
//如果超出容量,移除尾部节点
if(map.size()capacity){
NodeK,VtailNode=removeTail();
map.remove(tailNode.key);
}
}
}
privatevoidmoveToHead(NodeK,Vnode){
//先从链表中移除
removeNode(node);
//添加到头部
addNode(node);
}
privatevoidaddNode(NodeK,Vnode){
//添加到head之后
node.prev=head;
node.next=head.next;
head.next.prev=node;
head.next=node;
}
privateNodeK,VremoveTail(){
NodeK,Vres=tail.prev;
removeNode(res);
returnres;
}
privatevoidremoveNode(NodeK,Vnode){
node.prev.next=node.next;
node.next.prev=node.prev;
}
privatestaticclassNodeK,V{
Kkey;
Vvalue;
NodeK,Vprev;
NodeK,Vnext;
Node(Kkey,Vvalue){
this.key=key;
this.value=value;
}
}
}
解析:
1.数据结构选择:采用双向链表+哈希表的组合实现LRU缓存
-双向链表保持插入顺序,头节点为最近使用,尾节点为最久未使用
-哈希表提供O(1)时间复杂度的查找能力
2.get操作:通过哈希表定位节点,然后将其移动到链表头部(表示最近使用)
3.put操作:
-如果key已存在,更新值并将节点移动到头部
-如果key不存在,创建新节点并添加到链表头部
-当缓存容量超出限制时,移除链表尾部节点(最久未使用)并从哈希表中删除对应key
4.时间复杂度:
-get和put操作均为O(1)时间复杂度
-空间复杂度为O(capa
您可能关注的文档
- 2026年快消品行业销售主管考核要点.docx
- 2026年法官面试题及法律文书写作能力评估含答案.docx
- 媒体行业电影制片人职业培训与选拔试题参考.docx
- 化工设备维修岗位面试题及考核要点.docx
- 智能家居行业销售面试高频问题解析.docx
- 2026年面试英语口语及答案.docx
- 2026年金融产品运营专员面试题精讲.docx
- 2026年行政部经理面试题集与工作指南.docx
- 2026年公司总裁高级管理层岗前专岗试题库.docx
- 精益管理专员岗位精益管理认证考试题含答案.docx
- 2024年广东工商职业技术大学辅导员考试参考题库附答案.docx
- 2024年平凉职业技术学院辅导员考试参考题库最新.docx
- 2024年平凉职业技术学院辅导员招聘备考题库附答案.docx
- 2024年常熟理工学院辅导员考试笔试真题汇编最新.docx
- 2024年常德职业技术学院辅导员招聘备考题库最新.docx
- 2024年平凉职业技术学院辅导员考试笔试真题汇编最新.docx
- 2024年平顶山文化艺术职业学院辅导员招聘考试真题汇编最新.docx
- 2024年广东外语外贸大学辅导员考试参考题库最新.docx
- 2024年常州铁道职业技术学院辅导员考试笔试真题汇编附答案.docx
- 2024年平顶山工业职业技术学院辅导员考试笔试题库附答案.docx
原创力文档

文档评论(0)