昨天去面试,面试官问我发微信红包,微信红包过期了,需要返回原账户,这应该怎么设计?
我回答延时队列+死信队列,他问这合理么?
我说使用定时任务,他说定时任务可以达到秒级么?
我说使用redis expire,他说过期了怎么知道过期了去触发回退红包的操做?
几个问题把我问的蒙蔽的不行,有没有大老,遇到过类似的问题,这该怎么回答啊?
昨天去面试,面试官问我发微信红包,微信红包过期了,需要返回原账户,这应该怎么设计?
我回答延时队列+死信队列,他问这合理么?
我说使用定时任务,他说定时任务可以达到秒级么?
我说使用redis expire,他说过期了怎么知道过期了去触发回退红包的操做?
几个问题把我问的蒙蔽的不行,有没有大老,遇到过类似的问题,这该怎么回答啊?
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
这是一个涉及到系统设计的问题,尤其是在处理红包过期并需要退回到原账户的业务场景。以下是对这个问题的分析和一些可能的解决方案:
综合以上几种方案,你可以根据具体需求和系统环境来选择最适合的方案。下面是一些建议和回答面试官问题的话术:
"对于微信红包过期返回原账户的问题,我会考虑使用延时队列来处理。当红包被发送时,我们可以将其放入一个延时队列中,并设置其过期时间。这样,一旦红包过期,它会自动进入死信队列,然后我们可以轻松地将其返回给发送者。这种方案可以保证红包的过期处理是自动的,并且可以有效地防止因人为因素导致的红包处理错误。"
"关于定时任务能否达到秒级的问题,这取决于我们使用的定时任务框架和硬件环境。一些高性能的定时任务框架,如Quartz,可以支持较为精确的定时任务调度。但如果红包数量非常大,我们可能需要考虑其他方案,如使用分布式任务调度系统来处理大量的红包过期检查。"
"使用Redis的Expire功能也是一个可行的方案。我们可以设置红包的过期时间,并让Redis在红包过期时自动删除数据并触发事件。然后我们的系统可以监听这些事件,并在事件发生时执行相应的操作。但是,这种方案需要我们确保系统能够及时处理Redis的过期事件。"
希望这些建议能够帮助你更好地回答面试官的问题。