26年2月杭州云智科技 Java开发工程师 二面

1. 详细讲讲你项目中使用Redis的场景,如何保证Redis和数据库的数据一致性?

回答

:项目中Redis主要用于缓存热点数据、分布式锁、验证码存储等。保证数据一致性的方案有:Cache Aside模式(读时先查缓存,缓存不存在查数据库并写入缓存;写时先更新数据库,再删除缓存)、延迟双删(更新数据库后删除缓存,短暂延迟后再次删除缓存)、订阅MySQL binlog异步更新缓存。对于分布式锁,使用Redisson客户端的RedLock算法实现。

2. 项目中使用RabbitMQ的作用是什么?为什么选择RabbitMQ而不是其他消息队列?

回答

:项目中RabbitMQ主要用于异步处理、流量削峰、系统解耦。例如用户下单后异步发送短信、邮件通知;抽奖结果异步写入数据库等。选择RabbitMQ的原因:支持多种消息确认机制、消息持久化、死信队列、延迟队列等功能;支持复杂的路由规则;社区活跃文档完善;对于中小型项目,RabbitMQ足够满足需求且部署简单。

3. 讲讲分布式锁的实现方案,Redis实现分布式锁需要注意哪些问题?

回答

:分布式锁实现方案包括Redis(SETNX+EXPIRE或SET NX EX)、ZooKeeper(临时顺序节点)、etcd(Lease机制)。Redis实现分布式锁需要注意:SET和EXPIRE需要原子操作(使用SET key value NX EX seconds);value使用唯一标识(如UUID)解决误删问题;需要考虑锁的可重入性;需要设置合理的过期时间;建议使用RedLock算法提高可用性;需要考虑Redis主从切换时的锁丢失问题。

4. 如果让你设计一个秒杀系统,你会从哪些方面考虑?请说说你的设计思路。

回答

:秒杀系统设计需要考虑:前端层面(验证码、限流、静态资源CDN);网关层面(限流、熔断);服

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏

全部评论

相关推荐

03-24 17:57
门头沟学院 Java
yakuso:你这头像哈哈哈
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务