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