2026年高级工程师面试题及答案后端工程师.docxVIP

  • 0
  • 0
  • 约9.81千字
  • 约 27页
  • 2026-01-26 发布于福建
  • 举报

2026年高级工程师面试题及答案后端工程师.docx

第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

文档评论(0)

1亿VIP精品文档

相关文档