2026年饿了么技术团队面试题集.docxVIP

  • 1
  • 0
  • 约6.57千字
  • 约 22页
  • 2026-02-27 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年饿了么技术团队面试题集

一、编程能力测试(共5题,每题20分)

1.Java编程题(20分)

题目:请编写一个Java方法,实现找出一个整数数组中的所有快乐数。快乐数是指一个数各位数的平方和重复计算,最终会达到1的数。例如:19是一个快乐数,计算过程为1^2+9^2=82,8^2+2^2=68,6^2+8^2=100,1^2+0^2+0^2=1。

答案:

java

publicclassHappyNumber{

publicbooleanisHappy(intn){

SetIntegerseen=newHashSet();

while(n!=1!seen.contains(n)){

seen.add(n);

n=nextNumber(n);

}

returnn==1;

}

privateintnextNumber(intn){

intsum=0;

while(n0){

intdigit=n%10;

sum+=digitdigit;

n/=10;

}

returnsum;

}

}

2.Python编程题(20分)

题目:请用Python实现一个函数,输入一个字符串,返回该字符串的所有子集(包括空集,但不包括重复的子集)。例如,输入abc,输出[[],[a],[b],[c],[a,b],[a,c],[b,c],[a,b,c]]。

答案:

python

defsubsets(s):

result=[[]]

forcharins:

result+=[curr+[char]forcurrinresult]

returnresult

3.数据结构题(20分)

题目:请解释什么是二叉搜索树(BST),并实现一个函数,判断一个二叉树是否是平衡的二叉搜索树。平衡的定义是:对于树中的每个节点,其左右子树的高度差不超过1。

答案:

python

classTreeNode:

def__init__(self,val=0,left=None,right=None):

self.val=val

self.left=left

self.right=right

defisBalancedBST(root):

defcheck(node):

ifnotnode:

return0,True

left_height,left_balanced=check(node.left)

right_height,right_balanced=check(node.right)

balanced=(left_balancedandright_balancedand

abs(left_height-right_height)=1)

returnmax(left_height,right_height)+1,balanced

returncheck(root)[1]

4.算法设计题(20分)

题目:饿了么外卖系统需要处理大量订单,请设计一个数据结构,支持以下操作:

1.快速添加新订单

2.快速查找某个订单

3.删除已完成订单

4.按照距离最近/最远排序订单

答案:

python

classOrderSystem:

def__init__(self):

self.id_map={}#订单ID到订单对象的映射

self.distance_heap=[]#距离相关的堆

selfcompleted_orders=set()#已完成订单集合

defadd_order(self,order):

self.id_map[order.id]=order

假设order有一个distance属性表示距离

heapq.heappush(self.distance_heap,(order.distance,order.id))

deffind_order(self,order_id):

returnself.id_map.get(order_id)

defcomplete_order(self,order_id):

iforder_idinself.id_map:

order=self.id_map.pop(order_id)

pleted_orders.add(order_id)

defsort_orders_by_distance(self,reverse=False):

返回排序后的订单ID列表

r

文档评论(0)

1亿VIP精品文档

相关文档