- 1
- 0
- 约7.95千字
- 约 25页
- 2026-06-19 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年高级程序员面试题库及解答要点
一、编程语言与数据结构(共5题,每题10分)
1.题目:
请用Java实现一个LRU(LeastRecentlyUsed)缓存,要求容量为固定值,当缓存满时,需要淘汰最久未使用的元素。请说明你的实现思路,并提供关键代码片段。
答案要点:
LRU缓存的核心是双向链表和哈希表的结合。双向链表维护元素的访问顺序,头节点为最近访问,尾节点为最久未访问。哈希表提供O(1)时间复杂度的查找。具体步骤:
1.定义双向链表节点(含键、值、前驱、后继指针);
2.定义LRU结构体,包含双向链表头尾指针、哈希表、容量;
3.查找元素时,若存在则移动到链表头,并更新哈希表中的节点指针;
4.若不存在且缓存未满,则添加到链表头和哈希表;若已满,则删除链表尾节点,并从哈希表中移除对应键。
java
classLRUCacheK,V{
privatefinalMapK,Nodemap=newHashMap();
privatefinalintcapacity;
privateNodehead,tail;
publicLRUCache(intcapacity){
this.capacity=capacity;
head=tail=newNode(null,n
原创力文档

文档评论(0)