总结

  1. 该面考察中,主要是从技术角度对于问题解决方案的设计,不从业务层面思考,应更聚焦于技术上如何解决,排除业务对于思路的影响

  2. 个人在面试过程中,对于此考察要点没有迅速领悟,导致简单的方案花了较多时间才想到

  3. 在自我介绍中,花费太多时间描述细节,该内容并不是此次面试关心的重点,可减少相应内容的篇幅

  4. 需要进一步提炼自身思维的抽象能力

问题

  1. 短信发送服务,遇到用户收不到短信,但是短信服务商响应表明短信发送是成功的,会如何设计方案解决这个问题

    1. 基本的服务内问题不做过多考虑,默认其是正常的:一般基于消息中间件实现,考虑生产者、消息中间件、消费者三个层面的消息可靠投递,自身服务限流等

    2. 消息发送可做日志记录,用于对账:因接口回送为成功,此对账在该场景下多为无意义

    3. 接入多个短信服务商,轮询或有权重的选用服务商:自身系统层面排查没有问题,那么就考虑可能是第三方系统问题导致,因此得出此方案

  2. 遇到过的技术挑战

  3. 有没有遇到过Redis并发高导致的问题

  4. Redis大Key(Value)问题,数据不频繁更新,在不考虑业务因素的情况下,要怎么做优化

    1. 在大数据切分为多个小数据块视为业务上的考量

    2. 默认业务上对于数据更新、删除的处理是没有什么问题

    3. Redis定期进行数据压缩

    4. 从开发层面:Key在本地内存中缓存

    5. 从运维层面:Redis采用主从、集群等方式部署,分摊读取压力,也可提高性能

  5. 本地内存缓存,有什么优点,有什么缺点

    1. 优点:速度快,对Redis并发进行了分流

    2. 缺点:缓存有效期需要处理、本地内存占用会升高

  6. 本地内存占用升高,出现频繁GC的问题,会怎么去处理

    1. LRU?Key淘汰算法,主动维持热Key

    2. JVM参数优化?未答出,但个人认为是第一考虑的问题,不在处理方法内,后续可一并提出

  7. 最近在学什么新技术