总结
该面考察中,主要是从技术角度对于问题解决方案的设计,不从业务层面思考,应更聚焦于技术上如何解决,排除业务对于思路的影响
个人在面试过程中,对于此考察要点没有迅速领悟,导致简单的方案花了较多时间才想到
在自我介绍中,花费太多时间描述细节,该内容并不是此次面试关心的重点,可减少相应内容的篇幅
需要进一步提炼自身思维的抽象能力
问题
短信发送服务,遇到用户收不到短信,但是短信服务商响应表明短信发送是成功的,会如何设计方案解决这个问题
基本的服务内问题不做过多考虑,默认其是正常的:一般基于消息中间件实现,考虑生产者、消息中间件、消费者三个层面的消息可靠投递,自身服务限流等
消息发送可做日志记录,用于对账:因接口回送为成功,此对账在该场景下多为无意义
接入多个短信服务商,轮询或有权重的选用服务商:自身系统层面排查没有问题,那么就考虑可能是第三方系统问题导致,因此得出此方案
遇到过的技术挑战
有没有遇到过Redis并发高导致的问题
Redis大Key(Value)问题,数据不频繁更新,在不考虑业务因素的情况下,要怎么做优化
在大数据切分为多个小数据块视为业务上的考量
默认业务上对于数据更新、删除的处理是没有什么问题
Redis定期进行数据压缩
从开发层面:Key在本地内存中缓存
从运维层面:Redis采用主从、集群等方式部署,分摊读取压力,也可提高性能
本地内存缓存,有什么优点,有什么缺点
优点:速度快,对Redis并发进行了分流
缺点:缓存有效期需要处理、本地内存占用会升高
本地内存占用升高,出现频繁GC的问题,会怎么去处理
LRU?Key淘汰算法,主动维持热Key
JVM参数优化?未答出,但个人认为是第一考虑的问题,不在处理方法内,后续可一并提出
最近在学什么新技术