三面美团Java岗,java开发工程师面试题总结
2021/7/2 9:24:10
本文主要是介绍三面美团Java岗,java开发工程师面试题总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
## 事故背景 公司最近安排了一波商品抢购活动,由于后台小哥操作失误最终导致活动效果差,被用户和代理商投诉了。经理让我带同事们一起复盘这次线上事故。 ## 什么原因造成的? 抢购活动计划是零点准时开始, 22:00 运营人员通过后台将商品上线 23:00后台小哥已经将商品导入缓存中,提前预热 抢购开始的瞬间流量非常大,按计划是通过Redis承担大部分用户查询请求,避免请求全部落在数据库上。 ![缓存命中](http://www.www.zyiz.net/i/li/?n=2&i=images/20210702/1625179264105912.jpg) 如上图预期大部分请求会命中缓存,但是由于后台小哥预热缓存的时候将所有商品的缓存时间都设置为2小时过期,所有的商品在同一个时间点全部失效,瞬间所有的请求都落在数据库上,导致数据库扛不住压力崩溃,用户所有的请求都超时报错。 实际上所有的请求都直接落到数据库,如下图: ![缓存雪崩](http://www.www.zyiz.net/i/li/?n=2&i=images/20210702/1625179264952338.jpg) ## 什么时候发现的? 凌晨01:02 SRE 收到系统告警,登录运维管理系统发现数据库节点 CPU和内存飙升超过阈值,迅速联系后台开发人员定位排查。 ## 为什么没有早点发现? 由于缓存设置过期时间是2小时,凌晨1点前缓存可以命中大部分请求,数据库服务处于正常状态。 ## 发现时采取了什么措施? 后台小哥通过日志定位排查发现问题后,进行了一系列操作: > 首先通过API Gateway(网关)限制大部分流量进来? > > 接着将宕机的数据库服务重启? > > 再重新预热缓存? > > 确认缓存和数据库服务正常后将网关流量正常放开,大约01:30 抢购活动恢复正常。 ## 如何避免下次出现? 这次事故的原因其实就是出现了缓存雪崩,查询数据量巨大,请求直接落到数据库上,引起数据库压力过大宕机。 在业界解决缓存雪崩的方法其实比较成熟了,比如有: * **均匀过期** * **加互斥锁** * **缓存永不过期** **(1)均匀过期** 设置不同的过期时间,让缓存失效的时间点尽量均匀。通常可以为有效期增加随机值或者统一规划有效期。 ![缓存key过期时间均匀分布](http://www.www.zyiz.net/i/li/?n=2&i=images/20210702/1625179264705127.jpg) **(2)加互斥锁** 跟缓存击穿解决思路一致,同一时间只让一个线程构建缓存,其他线程阻塞排队。 ![互斥访问](http://www.www.zyiz.net/i/li/?n=2&i=images/20210702/1625179264282807.jpg) **(3)缓存永不过期** 跟缓存击穿解决思路一致,缓存在物理上永远不过期,用一个异步的线程更新缓存。 ![异步更新缓存](http://www.www.zyiz.net/i/li/?n=2&i=images/20210702/1625179265306827.jpg) ## 总结 一般像这样的大企业都有好几轮面试,所以自己一定要花点时间去收集整理一下公司的背景,公司的企业文化,俗话说「知己知彼百战不殆」,不要盲目的去面试,还有很多人关心怎么去跟HR谈薪资。 这边给大家一个建议,如果你的理想薪资是30K,你完全可以跟HR谈33~35K,而不是一下子就把自己的底牌暴露了出来,不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。 最后再说几句关于招聘平台的,总之,简历投递给公司之前,请确认下这家公司到底咋样,先去百度了解下,别被坑了,每个平台都有一些居心不良的广告党等着你上钩,千万别上当!!! 提供【免费】的Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。 **[Java全套进阶资料点这里免费领取](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)** 还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。 ![在这里插入图片描述](http://www.www.zyiz.net/i/li/?n=2&i=images/20210702/1625179265297702.jpg)这篇关于三面美团Java岗,java开发工程师面试题总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南