2026年京东数字技术面试题及答案.docxVIP

  • 0
  • 0
  • 约5.3千字
  • 约 16页
  • 2026-02-08 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年京东数字技术面试题及答案

一、编程题(共3题,每题20分,总分60分)

1.(20分)字符串匹配问题

题目:

给定两个字符串`text`和`pattern`,`text`的长度为`n`,`pattern`的长度为`m`。请实现一个函数,返回`pattern`在`text`中出现的所有起始索引(从0开始)。要求使用KMP算法实现,并说明时间复杂度。

示例:

输入:`text=ABCDABCDABDE`,`pattern=ABCDABD`

输出:`[0,4]`

答案:

python

defkmp_search(text,pattern):

defcompute_lps(pattern):

lps=[0]len(pattern)

length=0

i=1

whileilen(pattern):

ifpattern[i]==pattern[length]:

length+=1

lps[i]=length

i+=1

else:

iflength!=0:

length=lps[length-1]

else:

lps[i]=0

i+=1

returnlps

lps=compute_lps(pattern)

i=j=0

result=[]

whileilen(text):

iftext[i]==pattern[j]:

i+=1

j+=1

ifj==len(pattern):

result.append(i-j)

j=lps[j-1]

elifilen(text)andtext[i]!=pattern[j]:

ifj!=0:

j=lps[j-1]

else:

i+=1

returnresult

示例

text=ABCDABCDABDE

pattern=ABCDABD

print(kmp_search(text,pattern))#输出:[0,4]

解析:

KMP算法通过构建部分匹配表(LPS数组)来避免重复比较,时间复杂度为`O(n+m)`,其中`n`是`text`的长度,`m`是`pattern`的长度。

2.(20分)动态规划问题

题目:

给定一个字符串`s`,请找出其中最长的回文子序列的长度。例如:

输入:`s=bbbab`

输出:`4`(最长回文子序列为bbbb或bbb)

答案:

python

deflongest_palindromic_subseq(s):

n=len(s)

dp=[[0]nfor_inrange(n)]

foriinrange(n-1,-1,-1):

dp[i][i]=1

forjinrange(i+1,n):

ifs[i]==s[j]:

dp[i][j]=dp[i+1][j-1]+2

else:

dp[i][j]=max(dp[i+1][j],dp[i][j-1])

returndp[0][n-1]

示例

s=bbbab

print(longest_palindromic_subseq(s))#输出:4

解析:

动态规划解法使用二维数组`dp`,其中`dp[i][j]`表示`s[i..j]`的最长回文子序列长度。通过遍历所有子串并填充`dp`数组,最终`dp[0][n-1]`即为答案。时间复杂度为`O(n^2)`。

3.(20分)分布式系统问题

题目:

假设京东有一个分布式数据库集群,节点数为`k`。现需设计一个高可用的数据分片策略,要求:

(1)每个数据分片只能存储在`m`个不同的节点上(`mk`);

(2)当任意`p`个节点宕机时,仍能保证至少`q`个分片可用(`p+q=k`)。

请说明你的设计思路,并举例说明如何实现。

答案:

设计思路:

1.分片策略:采用一致性哈希(ConsistentHashing)算法,将数据分片映射到哈希环上,每个分片占据一个虚拟节点(VirtualNode,VN),以分散热点。

2.冗余存储:每个数据分片复制到`m`个不同的虚拟节点上,确保即使`m-1`个节点宕机,数据仍可用。

3.高可用性:设置`p`个节点宕机时,剩余`q`个节点仍可提供服务,即`p+q=k`,其中`p`为允许宕机节点数,`q`为可用节点数。

举例:

假设`k=5`(节点数为5),`m=3`(每个分片存储在3个节点),`p=2`(允许2个节点宕机),`q=3`(需3个节点可用)。

-使用一致性哈

文档评论(0)

1亿VIP精品文档

相关文档