美团暑期后端(一面 + 二面)
感谢牛客,押中了二面手撕题
一面:
- 介绍一下项目,和其中的难点,并讲一讲是如何克服的
- 涉及到最难的点是哪一个
- 为什么使用责任链模式,它的好处是什么(扩展性)
- 写单元测试吗,写的话会注意哪些点
- MQ解耦主要用在哪方面?(库存一致性的解耦、发放奖品的解耦)
- 最终一致性是如何保障的(redis库存空时发送清零消息)
- 如果大量用户抽奖时,由于抽奖流程需要记录到数据库,是不是也会出现扛不住的原因(是的,可能需要限流、熔断等方式来应对)
- 用户中奖概率的设计
- 开源工作上具体做了哪些
- redis缓存热点数据是如何做的
- 目前已经有单抽,如果新增十连抽的话,会考虑使用什么设计模式来实现(装饰器模式、策略模式、模板方法模式)
- 介绍JVM堆、栈的原理和区别
- 介绍hashmap和concurrenthashmap的原理和区别
- hash冲突的解决方案
- volatile字段的原理,是否能替代锁
- full-gc的触发原因有哪些,主动触发的方式有哪些
- 实习中处理内存溢出的方法和解决方案
- 输入URL后浏览器的响应
- mysql数据库支持的隔离级别,对应的实现原理
- 数组中第k个最大元素(O(n)的实现没做出来,交了个O(nlogk)的)
第二天约了二面
二面:
- 介绍项目流程
- 讲一讲项目中你认为的设计细节中较难的点
- 系统为了防止奖品的超卖和少买,分别做了哪些设计
- 针对于商品详情,商品库存的缓存一致性问题
- 项目有压测过吗,效果怎么样
- 有没有尝试过进行分析项目目前的瓶颈是哪些
- 如果想要监控性能瓶颈,你认为有哪些参数应该进行监控,并且如何监控?
- 算法题 反转链表② (感谢牛客,面试前3小时刚刷完
)
- 尝试设计一下算法的测试样例
- 做完算法题后的30分钟就很悠闲了,聊了聊岗位的介绍,问我对哪个岗位最感兴趣,以及个人优势、学习方法、职业规划等类似HR面的问题