黑马点评面试问题
主要汇总一下暑期实习面试遇到的问题
优惠卷秒杀:
优惠卷秒杀的逻辑
聊聊你的乐观锁。数据库层面的update?update也要加锁的,那这样你的并发量很低,有想过解决方式吗?(被三个面试官指责我这种实现不好,有个面试官建议我用redis扣减库存)
你订单接口的幂等性是怎么做的?(意思就是post请求带着:一个用户id,一个优惠卷id。发送多次请求,如何保证只有一个成功)
你库存扣减之后,还要去insert一个新的订单,你是如何保存这个的一致性的。
关注和点赞:
说说你的数据结构怎么设计的?我关注的人和关注我的人怎么设计的?
redis里面有设置过期时间吗?
那种大v,粉丝数量应该很多,这种热key+大key你是怎么处理的?分表知道吗?
rabbitmq进行异步处理?那我假如关注一个人之后,马上要给他发消息怎么办(场景:互关才能发消息),你怎么保证这个即时性
博客加载:(自己做了个串行加载改并行:thread pool+future)
线程池的参数怎么设计的,核心线程数2n(n=cpu核心数)?但是你多个tomcat请求共用一个线程池啊......tomcat线程池都有几百个线程了,2n肯定不行
future类异步获取加载结果,如果等待时间很长怎么办?一直阻塞吗?
登录:
简述你的登录逻辑
双重拦截器是什么
为什么要用thread local,thread local底层你懂吗?会出现什么问题?内存泄漏知道吗?怎么解决的
redis:
自定义布隆过滤器解决缓存穿透?布隆过滤器满了怎么办?布隆过滤器的数据怎么迁移?从一个小的变成一个更大的布隆过滤器可以吗?
延迟双删说一下,更新成功但是第二次删除失败了怎么办
为什么用redisson?redisson底层原理你懂吗?看门狗机制具体怎么实现的?redisson如何解决主节点宕机问题(setnx进入master,但是宕机,slave节点还没有收到写命令)
zookeeper实现分布式锁知道吗?
优惠卷秒杀:
优惠卷秒杀的逻辑
聊聊你的乐观锁。数据库层面的update?update也要加锁的,那这样你的并发量很低,有想过解决方式吗?(被三个面试官指责我这种实现不好,有个面试官建议我用redis扣减库存)
你订单接口的幂等性是怎么做的?(意思就是post请求带着:一个用户id,一个优惠卷id。发送多次请求,如何保证只有一个成功)
你库存扣减之后,还要去insert一个新的订单,你是如何保存这个的一致性的。
关注和点赞:
说说你的数据结构怎么设计的?我关注的人和关注我的人怎么设计的?
redis里面有设置过期时间吗?
那种大v,粉丝数量应该很多,这种热key+大key你是怎么处理的?分表知道吗?
rabbitmq进行异步处理?那我假如关注一个人之后,马上要给他发消息怎么办(场景:互关才能发消息),你怎么保证这个即时性
博客加载:(自己做了个串行加载改并行:thread pool+future)
线程池的参数怎么设计的,核心线程数2n(n=cpu核心数)?但是你多个tomcat请求共用一个线程池啊......tomcat线程池都有几百个线程了,2n肯定不行
future类异步获取加载结果,如果等待时间很长怎么办?一直阻塞吗?
登录:
简述你的登录逻辑
双重拦截器是什么
为什么要用thread local,thread local底层你懂吗?会出现什么问题?内存泄漏知道吗?怎么解决的
redis:
自定义布隆过滤器解决缓存穿透?布隆过滤器满了怎么办?布隆过滤器的数据怎么迁移?从一个小的变成一个更大的布隆过滤器可以吗?
延迟双删说一下,更新成功但是第二次删除失败了怎么办
为什么用redisson?redisson底层原理你懂吗?看门狗机制具体怎么实现的?redisson如何解决主节点宕机问题(setnx进入master,但是宕机,slave节点还没有收到写命令)
zookeeper实现分布式锁知道吗?
全部评论
从这篇文章的收藏度,你就可以知道黑马点评在多少人的简历上了
我记得黑马点评优惠券秒杀不就是用的redis判断,然后异步扣减的吗
redis更新成功MySQL更新失败怎么解决
如果数据库的update并发量很低,那么使用乐观锁可能并不是最有效的方式来处理高并发抢优惠券的场景。以下是一些建议来改进这种情况:
内存缓存: 考虑使用内存缓存来存储优惠券库存的状态,这样可以减少数据库的访问次数。你可以使用诸如Redis等内存数据库,或者在应用程序中使用内存数据结构(如字典或集合)来存储优惠券库存。
分布式锁: 考虑使用分布式锁来确保在更新优惠券库存时的原子性操作。这样可以避免多个客户端同时更新库存造成的并发问题。你可以使用ZooKeeper、Redisson等工具来实现分布式锁。
预减库存: 在实际扣减库存之前,可以先检查库存是否足够,以减少无效的更新操作。这样可以降低对数据库的负载,提高系统的性能。
消息队列: 使用消息队列来异步处理优惠券的扣减操作。当用户领取优惠券时,将扣减库存的请求发送到消息队列中,然后由消费者异步地处理这些请求。这样可以降低对数据库的直接访问,提高系统的并发处理能力。
缓存更新策略: 考虑使用定时任务或者定期检查的方式来更新缓存中的优惠券库存状态,以保证缓存与数据库中的数据一致性。
数据库优化: 如果数据库的性能成为瓶颈,可以考虑对数据库进行优化,如增加索引、分表分库等方式来提高数据库的并发处理能力。
综上所述,通过结合使用内存缓存、分布式锁、预减库存、消息队列等技术手段,可以有效地提高系统处理高并发抢优惠券的能力,并减少对数据库的压力。
校友好强 学到了
目前有offer了吗
接口幂等那个怎么解决啊
m
哥又帅了
厉害
好强 学习学习
学习
我靠,学习了
学长🐮
m
加油
M
你是我的神,兄弟!
学到了
学习学习
相关推荐
老衲法力无边:是的,借助数据库update的行锁是悲观锁,并没有用到版本号之类的机制
点赞 评论 收藏
分享
10-13 09:53
广东海洋大学 Java 今天卖鱼没:权限体系和用户体系差不多就这样,我感觉讲的比较清楚了,但可能有同学没接触过有些地方可能不太清楚,我后面讲一下这两块数据库表的必要关键字段设计,就能了解它们是怎么串起来了
点赞 评论 收藏
分享
10-20 17:34
天津理工大学 Java 讲道理的变色龙在午休:这年代测试真比开发强吧?开发都烂大街了。要是工资说的过去,你就专精测试慢慢钻研测试技术,当养老,测试比开发好的一个点是不受年纪限制,老了也无所谓。但也可以理解有些公司确实纯水货,要是实在干不了就直接骑驴找马,千万别辞职再找。实习其实能找到的,不过只有中小厂要人,可能你所在的城市不太热门?去北上广深投投试试。但真的可以好好考虑长期做测试
点赞 评论 收藏
分享