8.23美团日常实习一面,无八股无算法。面试官人很好很温柔,我听不懂也很细心的给我反复讲场景,引导我回答问题可我太菜了,感觉凉了。围绕简历我写的四个职责来问的,因此分为四块1.打开项目(IDEA)讲解一下责任链和决策树是如何代码实现的。场景问题:如果有一个业务a需要调用b,c,b,c又需要分别调用d,e和f,g,你会如何设计去实现这个逻辑(没太弄明白,我就说我项目的是决策树,单路的,后面不了了之)2.代码讲解抽奖算法如何实现的以空间换时间,为什么要这样做?场景问题:设计一个类,用来解决任务分配服务器的。有多个服务器,不同服务器内存大小不同,设计一个类来对任务进行分配,自己发挥设计输入输出。(直接idea现场编写,没写完后面讲了一下思路)3.redis是如何使用的?电商场景下超卖问题如何解决?如何用代码来实现的延迟队列?场景问题:如何实现一个类似支付时间十分钟的定时任务?我:用延迟队列或者设置redis过期时间,定时任务一直扫描面试官:这两个方案无如何做到每个任务过期实时响应?我:应该无法实现~(不知道)面试官:而且定时任务每次都去遍历全部数据代价太大,是否有更好的方案我:按照时间排序的队列,队头是最先过期的。面试官:对于实时显示时间倒计时遍历队列时间消耗问题,是否有更好的方案?我:二叉树中的大小顶堆。(这里是面试官一直引导的)4.看你使用到了MQ,没啥好问的,先说一下你为什么用吧。场景问题:面试官:如果我有一个队列存储的信息需要被多个消费者同时消费,如何保证同时消费以及顺序消费问题?我:每个业务对接一个队列,交换机向需要信息的队列发送数据面试官:实际场景不会这么做,代价太大。我:那就每个业务通过一个变量记录读取队列的offset或者ID之类的。面试官:如何存储这个变量能够做到崩溃恢复?我:从MySQL猜到redis,最后说的本地内存。面试官问我:了不了解zookeeper,可以了解一下面试结束。 #Java面经# #美团# #日常实习#