美团技术岗面试题_第1页
美团技术岗面试题_第2页
美团技术岗面试题_第3页
美团技术岗面试题_第4页
美团技术岗面试题_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年美团技术岗面试题一、编程题(共3题,每题15分,共45分)1.编程题(15分)题目:美团外卖系统需要统计骑手接单的平均时间,骑手接单时间为一个包含多个时间戳的数组(单位:秒),时间戳为骑手接单到完成送达的总耗时。请实现一个函数,计算骑手接单的平均耗时,要求时间复杂度O(n)。示例输入:pythontimestamps=[120,90,150,180,60]示例输出:python90.0解析:计算方法为所有时间戳的总和除以时间戳数量。时间复杂度要求O(n),即遍历一次数组即可。答案:pythondefaverage_time(timestamps):ifnottimestamps:return0total=sum(timestamps)returntotal/len(timestamps)示例timestamps=[120,90,150,180,60]print(average_time(timestamps))#输出:90.02.编程题(15分)题目:美团地图服务需要根据用户输入的起点和终点,计算最短路径。请实现一个Dijkstra算法,输入为图的邻接矩阵(表示城市间距离),起点和终点,输出为最短路径的长度。示例输入:pythongraph=[[0,2,9,float('inf'),float('inf'),7],[2,0,10,10,float('inf'),float('inf')],[9,10,0,10,6,8],[float('inf'),10,10,0,3,2],[float('inf'),float('inf'),6,3,0,1],[7,float('inf'),8,2,1,0]]start=0end=5示例输出:python8解析:Dijkstra算法通过贪心策略,每次选择当前未访问节点中距离最小的节点,更新其邻接节点的距离,直到到达终点。时间复杂度O(n²),适用于稠密图。答案:pythonimportheapqdefdijkstra(graph,start,end):n=len(graph)distances=[float('inf')]ndistances[start]=0heap=[(0,start)]whileheap:current_dist,u=heapq.heappop(heap)ifu==end:returncurrent_distifcurrent_dist>distances[u]:continueforv,weightinenumerate(graph[u]):ifweight!=float('inf'):distance=current_dist+weightifdistance<distances[v]:distances[v]=distanceheapq.heappush(heap,(distance,v))returndistances[end]示例graph=[[0,2,9,float('inf'),float('inf'),7],[2,0,10,10,float('inf'),float('inf')],[9,10,0,10,6,8],[float('inf'),10,10,0,3,2],[float('inf'),float('inf'),6,3,0,1],[7,float('inf'),8,2,1,0]]start=0end=5print(dijkstra(graph,start,end))#输出:83.编程题(15分)题目:美团点评需要统计商家评分的平均值,但部分商家评分可能为空。请实现一个函数,计算商家的平均评分,忽略空值,要求时间复杂度O(n)。示例输入:pythonratings=[4.5,None,3.2,5.0,None,4.0]示例输出:python4.0解析:遍历评分列表,忽略空值,计算非空评分的总和和数量,再求平均值。时间复杂度O(n)。答案:pythondefaverage_rating(ratings):total=0count=0forratinginratings:ifratingisnotNone:total+=ratingcount+=1returntotal/countifcount>0else0示例ratings=[4.5,None,3.2,5.0,None,4.0]print(average_rating(ratings))#输出:4.0二、系统设计题(共2题,每题25分,共50分)1.系统设计题(25分)题目:设计美团外卖的订单实时推送系统,要求:(1)高可用、低延迟;(2)支持百万级订单并发推送;(3)用户离线时能缓存推送消息;(4)系统需支持监控和告警。解析:系统需分为消息生产端、消息存储端和消息消费端。生产端为骑手接单/完单事件,存储端使用Kafka等消息队列,消费端为App端,支持离线缓存(如Redis)。监控可使用Prometheus+Grafana。答案:1.架构设计:-消息生产端:骑手接单/完单事件触发消息推送,使用RPC或RESTAPI发送至Kafka。-消息存储端:Kafka集群(3-5个Broker)存储消息,分区提高吞吐量。-消息消费端:-App端使用WebSocket/长轮询订阅消息,离线时消息缓存于Redis。-消息消费逻辑:检查用户在线状态,离线则存入Redis,在线则直接推送。-监控与告警:Prometheus监控Kafka队列长度、延迟,Grafana可视化,告警系统(如Sentry)处理异常。2.关键点:-高可用:Kafka集群+负载均衡。-低延迟:Redis缓存离线消息。-监控:链路追踪(SkyWalking)+业务指标监控。2.系统设计题(25分)题目:设计美团地图服务的实时路况更新系统,要求:(1)支持千万级车辆数据实时采集;(2)路况数据更新频率为5秒一次;(3)用户端能实时显示拥堵/事故信息;(4)系统需支持数据去重和异常过滤。解析:系统需处理高并发数据采集、实时计算和用户端渲染。可使用Flink处理流数据,Redis缓存路况信息,前端WebSocket推送。答案:1.架构设计:-数据采集层:-车辆GPS数据通过MQTT协议采集,使用Kafka作为缓冲。-分布式采集节点(如MQTTBroker集群)处理千万级数据。-数据处理层:-Flink实时计算车辆速度、拥堵状态,过滤异常数据(如速度超限)。-结果存入Redis(热点数据缓存)+HBase(持久化)。-用户端推送:-WebSocket实时推送路况更新,前端ECharts渲染热力图。-离线用户通过App推送通知(FCM/CMMS)。2.关键点:-去重:Kafka去重机制+Flink状态管理。-异常过滤:FlinkSQL/CEP检测异常模式。三、数据库与SQL题(共2题,每题15分,共30分)1.数据库与SQL题(15分)题目:美团外卖数据库中有订单表(orders)和骑手表(riders),字段如下:-orders:order_id(订单ID),rider_id(骑手ID),status(订单状态),create_time(创建时间)。-riders:rider_id(骑手ID),rider_name(骑手名),region(区域)。请写SQL查询:统计每个区域的骑手接单量(订单状态为“已接单”),按接单量降序排列。示例输出:|region|order_count||-|||A|120||B|90|解析:JOIN连接orders和riders,WHERE筛选“已接单”订单,GROUPBY区域,ORDERBY排序。答案:sqlSELECTr.region,COUNT(o.order_id)ASorder_countFROMordersoJOINridersrONo.rider_id=r.rider_idWHEREo.status='已接单'GROUPBYr.regionORDERBYorder_countDESC;2.数据库与SQL题(15分)题目:美团点评数据库中有评价表(reviews),字段如下:-review_id(评价ID),business_id(商家ID),rating(评分),review_time(评价时间)。请写SQL查询:统计每个商家的平均评分,但只统计最近90天内的评价,结果保留2位小数。示例输出:|business_id|avg_rating|||||101|4.50||102|4.20|解析:WHERE筛选90天内评价,GROUPBY商家ID,AVG计算平均值,ROUND保留小数。答案:sqlSELECTbusiness_id,ROUND(AVG(rating),2)ASavg_ratingFROMreviewsWHEREreview_time>=DATE_SUB(CURRENT_DATE,INTERVAL90DAY)GROUPBYbusiness_id;四、分布式与中间件题(共2题,每题15分,共30分)1.分布式与中间件题(15分)题目:美团支付系统需要处理高并发交易,请解释如何设计分布式事务,并说明优缺点。解析:可使用2PC(强一致性)、TCC(补偿性事务)或本地消息表+异步最终一致性。2PC可靠但阻塞,TCC解耦但实现复杂。答案:1.方案:-2PC:协调者发起Prepare,参与者准备数据后响应,协调者收到所有响应后Commit。-TCC:每个服务实现“尝试/确认/取消”操作。-本地消息表+异步:事务写入本地表+消息队列,消费者异步补偿。2.优缺点:-2PC:强一致性,但阻塞且不可靠。-TCC:高可用,但代码复杂。2.分布式与中间件题(15分)题目:美团点评需要缓存热门商家信息,请比较Redis和Memcached的优缺点,并说明选择场景。解析:Redis支持原子操作和持久化,Memcached纯内存,适合不同场景。答案:1.RedisvsMemcached:-Redis:支持String/Hash/SortedSet等类型,事务支持,持久化。-Memcached:纯内存,简单协议,无持久化。2.选择场景:-Redis:业务逻辑缓存(如评分计数)、分布式锁。-Memcached:简单热点数据缓存(如商家基本信息)。五、网络与系统基础题(共2题,每题15分,共30分)1.网络与系统基础题(15分)题目:美团外卖App需要兼容4G和5G网络,请解释TCP三次握手过程,并说明如何优化网络延迟。解析:TCP握手通过SYN/SYN-ACK/ACK完成连接,优化可使用TCPFastOpen(快速建立连接)。答案:1.握手过程:-客户端发送SYN(seq=x),服务器回复SYN-ACK(seq=y,ack=x+1),客户端发送ACK(ack=y+1)。2.优化:-TCPFastOpen:客户端在SYN包中携带数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论