美团一面凉经

今天下午面的,面到一半就知道挂定了。。。为啥看大家伙的美团面筋都是八股,我上来就是场景题?

1.自我介绍

2.讲讲你的实习项目吧

3.怎么保证你向另一端发送的请求能被接受到?

4.假设现在有个场景,一个结算系统,一个积分系统,一个用户消费后,需要通过积分系统增加对应的积分。那么你怎么实现这个请求的发送?说了同步和异步

5.你刚刚说消息队列和RPC远程调用是吧,那你在选择这两种方式的时候,评判标准是什么? 我答了时效性。

6.还有别的评判标准吗?我想了想说消息队列可以起存储消息的作用,可以让消息在队列中存储一段时间,后面再进行处理,面试官说这也是时效性。(我说我想不到了 ...)

7.假如用消息队列,那么会不会出现,消费了但是积分没增加的情况?怎么解决呢?

8.楼主说的rabbitMQ,从可靠性以及生产者、队列、消费者三个维度来说了怎么保证消息不丢失?

9.你刚刚说消费端用消息确认模式,那我假设消息消费失败了怎么办,(我说可以重入列,or 本地重试,重试了放死信队列,后期处理)

10.假如我现在结算系统发送给积分系统的消息,确认失败返回了nack报文怎么办?(我说可以建立重试机制。)

11.那么我要是一直重试失败,MQ就是接受不到这个消息,怎么办? (想了想说,可以从网络的角度去考虑,可能当前出现了网络阻塞,因此可以把消息先发送给另一个消息队列,或者直接先落库。)

12.但是你这样,相当于原来的MQ没有被使用了呀? 而且你这样存储入库了,怎么保证时效性呢?(我其实没听懂他什么意思,事后问同事,同事说用了MQ不就已经不考虑实时性了吗。。。) 回到那个一直重试的问题,求求大佬说一下,我场景题太差了。

13.我们换个问题吧,假如我现在MQ中有两个增加积分的消息,会不会出现被积分系统重复消费的问题? 怎么解决呢? 我说可以设置唯一分布式ID,通过唯一性来解决幂等问题。或者也可以通过数据库的唯一性id来解决这个问题。

14.你理解错了我的意思,我的意思是这两个消息的内容是一样的,但是id不同,你该怎么处理?

15.(我还是没听懂他的意思,我理解是如果不是重试机制下发出相同ID的消息,正常发出的两个内容相同的消息正常消费不就可以了吗。。)他说,那我换个问法吧,假如现在有一个List<Student> student的字段有 id name classid 现在这个列表中,存在多个相同的学生(id name classid都相同),你怎么做去重,同时做分组(将存在重复的,以及不存在的分组)?写个代码实现一下吧。

16.你把刚刚那题,在数据库的场景下,写个sql语句吧。(..太久没写sql了框架用多了。。。给忘了怎么写了)

17.了解spring吗,事务以及对应的传播机制,循环依赖怎么解决的?

18.分布式锁了解吗?为什么要给分布式锁加ttl呢?

19.反问:知道自己铁挂了,就直接问对自己的评价,需要哪方面加强了。

#美团#
全部评论
我根据我的理解的话,他其实那几个幂等性的问题,其实关键就是消费系统里面的ID,就对于一个用户来说,他消费系统做的一次消费,这次消费应该有唯一的消费单ID,可以用这个消费单ID作为唯一索引。然后进来以后,积分系统增加积分成功以后,应该把这个消费单ID和用户ID,积分相关内容一起记录。然后接下来防重我感觉有3步要做,首先应该根据订单ID和一些其他属性作为Redis分布式锁的Key,保证同时只有一个进入,然后进入后首先查这个消费单ID是否有记录,有的话就不继续加积分系统,没有的话就积分系统加分,成功的话把这个消费单ID,用户ID,积分相关内容作为一条记录落库。
5 回复 分享
发布于 2023-08-31 22:29 北京
有没有可能问这种难度的都是觉得你是大佬,过的可能性会比较大呢?
3 回复 分享
发布于 2023-08-31 22:42 湖北
咱俩同一个面试官吧,题目基本一样,我感觉我寄了
3 回复 分享
发布于 2023-08-31 22:28 浙江
感觉可以和他聊聊分布式事务 tcc
3 回复 分享
发布于 2023-08-31 21:37 北京
12题之前感觉他是想问分布式事务相关,比如结算系统在下游失败后应该有相应的回滚能力、以及对账能力去感知下游接口是否更新成功
2 回复 分享
发布于 2023-08-31 22:02 广东
我也是到家,一面问了70多分钟八股,问麻了然后做了二十多分钟题
1 回复 分享
发布于 2023-09-02 08:43 北京
15这个分组 没搞懂他啥意思 楼主咋回答的呀
1 回复 分享
发布于 2023-08-31 22:02 广东
大家可以试试腾讯云智,hc多,不卡学历,而且面试不难,只要基础扎实,多准备准备很容易过———https://www.nowcoder.com/share/jump/68795928579826351
1 回复 分享
发布于 2023-08-31 21:45 湖南
哥们试试众安保险,互联网保险企业,工资是互联网级别的,招JAVA和后台岗的,区别竞争一下~
点赞 回复 分享
发布于 2023-09-02 15:40 上海
来试试我司
点赞 回复 分享
发布于 2023-09-02 11:10 江苏
可以看下富途,互联网券商,金融科技。 现在投,预计最快九月份拿offer。 https://www.nowcoder.com/share/jump/7403134121720614441
点赞 回复 分享
发布于 2023-09-01 14:37 广东
这么难吗
点赞 回复 分享
发布于 2023-09-01 14:30 江苏
谢谢分享
点赞 回复 分享
发布于 2023-09-01 13:47 江苏
试试这个
点赞 回复 分享
发布于 2023-09-01 12:44 北京
最怕的就是get不到面试官想问的是什么
点赞 回复 分享
发布于 2023-09-01 09:46 浙江
佬是到家下的哪个部门
点赞 回复 分享
发布于 2023-08-31 22:37 上海
同学,要不试试携程吧,秋招刚开,NTAW4HN帮忙查进度。
点赞 回复 分享
发布于 2023-08-31 22:19 上海
这这这,这是后端嘛
点赞 回复 分享
发布于 2023-08-31 21:37 北京

相关推荐

小厂面经,也是我的处女面(30min)1.自我介绍2.spring&nbsp;boot的自动装配原理(好多类和接口的单词都忘了全称是啥了,就说了记得的单词,流程应该说对了吧)3.有用过redis吗?主要是用在实现什么功能(说了技术派用redis的zset来实现排行榜)5.有了解过Redisson吗?讲一下对于分布式锁的了解以及在什么场景下应用(说了秒杀场景)6.对mysql有了解吗?包括它的索引优化和创建(把想起来的全说了)7.了解设计模式吗?比如单例模式,为什么要使用单例模式,它的优点是什么(昨天刚看的设计模式)8.工厂模式有了解吗?主要的使用场景是?(也是昨天刚看的)9.场景题:有7个服务器,需要在早上十点定时的向数据库中的用户表中的用户发短信,如果做到发送的消息不重复,且如果发送失败了需要知道是到哪个用户失败了,这样下次就直接从这个用户开始(我答了用spring&nbsp;task来实现定时,用分布式锁来保证只有一份服务器可以发送消息,用消息队列来存储消息,然后用消息确认机制来保证错误信息的记录,以及在数据库或者业务层面完成消息消费的幂等性)10.场景题:如果在系统启动的时间就将数据库的所有用户相关的信息都读到一个hashmap中(这个没啥思路,没答好)27届的投了一个星期终于有一个面试了,大部分公司都只招26的
inari233:已oc,拒了
查看9道真题和解析
点赞 评论 收藏
分享
评论
31
196
分享

创作者周榜

更多
牛客网
牛客企业服务