番茄小说后端 2025.9.17

对面试官的提问感到失望。

全程项目拷打,没有八股。

  1. 自我介绍一下
  2. 来说说怎么解决重复下单。这里我回答下单前需要先向订单服务申请一个ID,订单服务接收到请求后会给userid上锁一段时间,防止同一个usedid连续创建订单,后续申请订单ID的连续请求拿不到锁直接返回,就解决了重复下单问题。
  3. 接上面的,面试官接着问前端有重试机制,你这样解决不了。我回答如果触发重试那之前的订单ID也收不到了,最终只会有一个订单ID,后续请求带着唯一的订单ID,不会出现重复下单。面试官不满意☹️
  4. 库存扣减方案。我回答库存扣减用redis,通过消息队列将数据同步到数据库。
  5. 面试官接着提问数据库写失败造成数据不一致怎么办?面试官这里也没说什么原因造成数据库写失败(数据库压力太大,就考虑优化数据库,部署更多节点或者分库分表,如果是锁竞争导致的有重试机制,如果是网络断开导致无法连接数据库,根本没影响,消息队列会做持久化,恢复连接后继续消费)。我说有重试机制,重试失败会放到死信队列,由人工处理。感觉答案不完善,又补充了一下,redis主从同步是异步的,在极端情况下确实会出现数据库扣减成功,redis没有扣减成功的情况,解决方案是开启一个协程监听binlog,同步到redis。这里面试官还是不满意☹️
  6. redis 上锁是怎么实现的?我回答用 set nx 命令(时候反应过来,还有个 Expire 命令)
  7. 动态数组的底层实现是什么样的?哈希表底层实现是什么?
  8. 手撕:Leetcode 3:无重复字符的最长子串(秒完问了一下时间复杂度)
  9. 反问

失望的地方在于我说的很多东西面试官都没听,一直否定我。也不知道是不是面试官太忙了。结果就是仙家对话,她说她的,我说我的。

美美睡觉,等明天10点感谢信。

#发面经攒人品#
全部评论
有些kpi面没办法,只有面了才知道
点赞 回复 分享
发布于 09-19 17:39 江苏
也是17号面的番茄小说,现在还在等感谢信
点赞 回复 分享
发布于 09-19 14:07 辽宁
蹲后续,怎么样了?
点赞 回复 分享
发布于 09-18 14:47 广东
现在后面后续吗
点赞 回复 分享
发布于 09-23 15:02 安徽
其实我觉得本身使用redis作为库存的预扣减操作就可能会出现超卖的现象,想要彻底的解决这个问题的话最好还是放在数据库层面执行上(因为我们的实际库存的操作是要以数据库为准的),所以当数据的库存扣减操作出现非正常值的时候需要调用订单的取消接口,主动取消这个超卖的订单。 还有就是重复下单问题,这个问题的本质其实就是需要区别是用户的不小心重复下单还是真的想要购买多个相同商品,最简单的就是前端针对同一个商品的下单接口在5s内只能进行一次调用,或者说我们在redis中设置一个userID+spu_id的分布式锁,执行一个lua脚本实现放置重复下单的操作(先去判断锁是否存在?不存在的话就执行库存的预扣减操作,并设置一个过期时间为5s的锁,如果存在的话直接返回,判断为重复下单)
点赞 回复 分享
发布于 09-22 14:42 广西
防超卖怎么做的?服务内部的超时,比如说客户端给redis服务端发扣减命令,客户端超时怎么办?
点赞 回复 分享
发布于 09-20 13:09 陕西
前几天面的番茄小说后端日常实习,怎么感觉提问一模一样,虽说答的不好,但面试官还是给我过了,相信自己可以的
点赞 回复 分享
发布于 09-18 07:52 辽宁

相关推荐

1. 你在三家比较大的公司都有实习经历,为什么一直在换呢?2. 你觉得这三家公司的技术体系有什么不同吗?3. 你们的三层缓存是怎么设计的?4. 第一层缓存(Kconf)是什么?它怎么工作的?5. 这一层缓存和 DB 怎么保持一致的?6. 你们的本地缓存过期策略是怎样的?为什么设置 5 秒?7. 你们更新 Redis 是通过 MQ,对吧?那 MQ 会丢消息吗?你们怎么保证不会丢?8. 你们用的 MQ 是什么?9. RocketMQ 能保证消息一定是在 DB 成功更新之后才投递出去吗?10. 你知道 RocketMQ 的事务消息具体是怎么实现的吗?11. 来写一段代码吧:两个线程交替打印奇偶数,打印到 100。12. 有没有可能存在多余的循环或空转的问题?13. 如果线程之间没有通信,会造成什么影响?要怎么改?(比如用阻塞+唤醒机制)14. 你可以用 **`synchronized`** / **`Object.wait/notify`** 或 **`Lock`** 来改写一下吗?15. 来一个设计题:如果要存储全球的行政区划数据(国家、省、市、区/县、街道),你会怎么设计?16. 不同国家层级不一样,这算一个难点,你怎么处理?17. 你会按层级来做表设计吗?这种设计可能存在哪些问题?18. 如果层级发生变化(比如新增一个层级),你的结构怎么应对?19. 有没有暴力一点的方案?(比如 JSON 存储)20. 那以“河北省”为例,你在这种 JSON 存储里会怎么表示?21. 你的 JSON 存储方案有什么缺点?22. 树型结构除了你这种方式,还有其他表达方式吗?23. 这种树形结构会面临哪些性能问题?比如查询跨级数据的时候怎么处理?24. 有没有更好的办法?能不能结合两种方式?25. 在读多写少场景,你会怎么优化?
发面经攒人品
点赞 评论 收藏
分享
评论
6
26
分享

创作者周榜

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