京东技术面试题及答案详解.docxVIP

  • 1
  • 0
  • 约7.59千字
  • 约 21页
  • 2026-02-17 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年京东技术面试题及答案详解

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

1.题目:

请实现一个函数,输入一个正整数`n`,返回`n`的阶乘。要求使用递归方式实现,并考虑大数处理的边界情况。

答案:

java

importjava.math.BigInteger;

publicclassFactorial{

publicstaticBigIntegerfactorial(intn){

if(n0){

thrownewIllegalArgumentException(输入必须为非负整数);

}

if(n==0||n==1){

returnBigInteger.ONE;

}

returnfactorial(n-1).multiply(BigInteger.valueOf(n));

}

publicstaticvoidmain(String[]args){

System.out.println(factorial(20));//输出2432902008176640000

}

}

解析:

-使用`BigInteger`类处理大数计算,避免`long`类型溢出。

-递归实现简洁,但需注意栈深度限制(`n`过大时可能抛出`StackOverflowError`)。

-边界处理:`n`为0或1时直接返回1,负数输入抛异常。

2.题目:

给定一个字符串`s`,请判断它是否是有效的括号字符串(只包含`(`和`)`,且括号匹配正确)。

答案:

java

publicclassValidParentheses{

publicstaticbooleanisValid(Strings){

if(s==null||s.length()%2!=0){

returnfalse;

}

StackCharacterstack=newStack();

for(charc:s.toCharArray()){

if(c==(){

stack.push(c);

}elseif(c==)){

if(stack.isEmpty()||stack.pop()!=(){

returnfalse;

}

}else{

returnfalse;//额外字符直接返回false

}

}

returnstack.isEmpty();

}

publicstaticvoidmain(String[]args){

System.out.println(isValid(()));//true

System.out.println(isValid((()));//false

}

}

解析:

-使用栈结构实现括号匹配,左括号入栈,右括号匹配栈顶左括号并出栈。

-额外字符或长度为奇数直接返回false。

-时间复杂度O(n),空间复杂度O(n)。

3.题目:

请实现一个无重复字符的最长子串查找函数,输入字符串`s`,返回最长子串的长度。

答案:

java

publicclassLongestSubstring{

publicstaticintlengthOfLongestSubstring(Strings){

int[]last=newint[128];//ASCII字符集

Arrays.fill(last,-1);

intmaxLen=0,start=-1;

for(inti=0;is.length();i++){

charc=s.charAt(i);

if(last[c]start){

start=last[c];

}

last[c]=i;

maxLen=Math.max(maxLen,i-start);

}

returnmaxLen;

}

publicstaticvoidmain(String[]args){

System.out.println(lengthOfLongestSubstring(abcabcbb));//3(abc)

}

}

解析:

-使用数组记录每个字符上次出现的位置,滑动窗口法动态调整子串范围。

-时间复杂度O(n),空间复杂度O(1)。

4.题目:

给定一个排序数组,其中元素可能重复,请实现二分查找,返回目标值`target`的第一个出现位置(如果不存在返回-1)。

答案:

java

publicclassBinarySearchFirst{

publicstaticintsearchFi

文档评论(0)

1亿VIP精品文档

相关文档