京东开发人员面试题集.docxVIP

  • 0
  • 0
  • 约9.37千字
  • 约 28页
  • 2026-03-10 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年京东开发人员面试题集

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

题目1(Java基础)

题目:请解释Java中的重载和重写的区别,并分别举例说明在什么场景下使用。

答案:

-重载(Overloading):指同一个类中,方法名相同但参数列表不同的方法。参数列表不同可以是参数个数不同、参数类型不同或参数顺序不同。重载与返回值类型无关。

-例子:java

publicclassCalculator{

publicintadd(inta,intb){returna+b;}

publicdoubleadd(doublea,doubleb){returna+b;}

}

-场景:提高代码的可读性和易用性,如提供不同参数类型的方法。

-重写(Overriding):指子类重写父类的方法,方法名、参数列表必须完全相同,但子类可以实现不同的行为。重写方法可以访问父类的私有方法。

-例子:java

classAnimal{

publicvoidmakeSound(){System.out.println(Animalsound);}

}

classDogextendsAnimal{

@Override

publicvoidmakeSound(){System.out.println(Woof);}

}

-场景:实现多态性,让子类具有特定的行为。

题目2(数据结构)

题目:请比较数组(Array)和链表(LinkedList)的优缺点,并说明在什么情况下选择使用哪一个。

答案:

-数组:

-优点:随机访问速度快(O(1)时间复杂度),内存连续,缓存友好。

-缺点:大小固定(除非使用动态数组),插入和删除操作慢(O(n)时间复杂度)。

-使用场景:需要频繁随机访问元素,元素数量固定或变化不大。

-链表:

-优点:插入和删除操作快(O(1)时间复杂度),大小动态。

-缺点:随机访问慢(O(n)时间复杂度),内存不连续,缓存不友好。

-使用场景:需要频繁插入和删除元素,元素数量动态变化。

题目3(算法)

题目:请实现一个快速排序(QuickSort)算法,并说明其时间复杂度和空间复杂度。

答案:

java

publicclassQuickSort{

publicstaticvoidquickSort(int[]arr,intleft,intright){

if(leftright){

intpivotIndex=partition(arr,left,right);

quickSort(arr,left,pivotIndex-1);

quickSort(arr,pivotIndex+1,right);

}

}

privatestaticintpartition(int[]arr,intleft,intright){

intpivot=arr[right];

inti=left-1;

for(intj=left;jright;j++){

if(arr[j]=pivot){

i++;

swap(arr,i,j);

}

}

swap(arr,i+1,right);

returni+1;

}

privatestaticvoidswap(int[]arr,inti,intj){

inttemp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

}

-时间复杂度:平均O(nlogn),最坏O(n^2)(当数组已经有序或逆序时)。

-空间复杂度:O(logn)(递归栈空间)。

题目4(Java并发)

题目:请解释Java中的线程池(ThreadPoolExecutor)的工作原理,并说明如何配置线程池参数。

答案:

-工作原理:

1.核心线程数(corePoolSize):线程池中始终保持的线程数量。

2.最大线程数(maximumPoolSize):线程池允许的最大线程数量。

3.队列(workQueue):用于存储等待执行的任务的阻塞队列。

4.拒绝策略(handler):当队列满了且线程数达到最大时,如何处理新任务。

5.线程工厂(threadFactory):创建新线程的工厂。

6.保持活动时间(keepAliveTime):当线程数大于核心线程数时,超出核心线程的线程在终止前可以保持空闲的最长时间。

-配置参数:

java

ThreadPoolExecutorexecut

文档评论(0)

1亿VIP精品文档

相关文档