2026年京东软件开发面试全攻略与题库.docxVIP

  • 0
  • 0
  • 约5.48千字
  • 约 15页
  • 2026-01-20 发布于福建
  • 举报

2026年京东软件开发面试全攻略与题库.docx

第PAGE页共NUMPAGES页

2026年京东软件开发面试全攻略与题库

一、编程基础(共5题,每题10分,总分50分)

1.题目:请用Java实现一个简单的LRU(LeastRecentlyUsed)缓存机制,要求支持get和put操作,并说明时间复杂度。

答案:

java

importjava.util.HashMap;

importjava.util.Map;

publicclassLRUCacheK,V{

privatefinalintcapacity;

privatefinalMapK,Nodemap;

privateNodehead,tail;

publicLRUCache(intcapacity){

this.capacity=capacity;

map=newHashMap();

}

publicVget(Kkey){

Nodenode=map.get(key);

if(node==null)returnnull;

moveToHead(node);

returnnode.value;

}

publicvoidput(Kkey,Vvalue){

Nodenode=map.get(key);

if(node!=null){

node.value=value;

moveToHead(node);

}else{

if(map.size()==capacity){

map.remove(tail.key);

removeNode(tail);

}

NodenewNode=newNode(key,value);

map.put(key,newNode);

addToHead(newNode);

}

}

privatevoidmoveToHead(Nodenode){

removeNode(node);

addToHead(node);

}

privatevoidaddToHead(Nodenode){

node.next=head;

node.prev=null;

if(head!=null)head.prev=node;

head=node;

if(tail==null)tail=node;

}

privatevoidremoveNode(Nodenode){

if(node.prev!=null)node.prev.next=node.next;

if(node.next!=null)node.next.prev=node.prev;

if(node==head)head=node.next;

if(node==tail)tail=node.prev;

}

privatestaticclassNode{

Kkey;

Vvalue;

Nodeprev,next;

Node(Kkey,Vvalue){

this.key=key;

this.value=value;

}

}

}

解析:LRU缓存通过双向链表和哈希表实现,get操作将节点移动到头部,put操作时如果缓存已满则删除尾部节点。时间复杂度为O(1)。

2.题目:请用Python实现快速排序算法,并分析其时间复杂度。

答案:

python

defquick_sort(arr):

iflen(arr)=1:

returnarr

pivot=arr[len(arr)//2]

left=[xforxinarrifxpivot]

middle=[xforxinarrifx==pivot]

right=[xforxinarrifxpivot]

returnquick_sort(left)+middle+quick_sort(right)

解析:快速排序通过分治法实现,时间复杂度为O(nlogn),最坏情况下为O(n2)。

3.题目:请解释Java中的线程池原理,并说明如何使用`ExecutorService`创建一个固定大小的线程池。

答案:

java

importjava.util.concurrent.ExecutorService;

importjava.util.concurrent.Executors;

publicclassThreadPoolExample{

publicstaticvoidmain(String[]args){

ExecutorServiceexec

文档评论(0)

1亿VIP精品文档

相关文档