- 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)