番茄小说一面面经-后端

鼠鼠第一次投大厂面试,写面经攒人品:

1. 个人介绍(2min)
2. 挖项目(我跟后端相关的项目似乎只有抖音商城(字节跳动青训营),他一直挖我这个项目)
3. 服务是怎么被发现的?(微服务)
4. 假如你这个服务要更新,要更平滑,不让用户感到延迟,你会怎么做?

- 维护两套环境(蓝:当前生产环境;绿:新版本环境)。
- 新版本在绿环境测试通过后,切换流量到绿环境,蓝环境作为回滚备用。
- 优点:零停机,用户无感知切换。

5. 你输入一个url的处理过程

6. 然后就开始写题了,面试官直接口述,输入一个数字,输出下一个最小的比这个数大的数字(重新排列)leetcode类似的题目是:[556. 下一个更大元素 III](******************************************************)这道题手撕还是相当紧张的,给我撕出来了

7. 数据库事务是什么

8. mvcc是什么,怎么实现的?
9. 场景题,给你一个番茄小说的书,有十万订阅,如何快而准确的通知到所有订阅的人更新了(这里要求你去用具体的实现)

我这里寄了,后面复盘的时候,应该是使用feed流,这个是用ai写的答案:

- 推模式 (Fanout-On-Write/Writes):
  - **操作时机:** 当关键事件(如新章节发布)发生时**立即**执行。
  - **目标用户:** **核心活跃粉丝(数量相对较小)**。
  - **动作:** 将事件**直接写入**这些目标粉丝的个人 **收件箱(Inbox Feed)**(一个按时间排序的数据存储)。用户访问自己的 Feed 流时,直接从这个收件箱拉取即可,延迟极低。

- 拉模式 (Fanout-On-Read):

  - **操作时机:** 当用户主动请求访问 Feed 流时执行。
  - **目标用户:** **非核心粉丝(长尾粉丝,数量大)** 或 触发推模式的粉丝,在访问 Feed 时可能需要拉取更长时间范围内的数据。
  - **动作:** 后端服务在用户请求时,**实时聚合**用户所关注对象(收藏的书籍)的 **发件箱(Outbox Feed)** 数据(包含所有发布事件),按时间排序后返回给用户。这需要访问多个发件箱(每个收藏的书一本)并聚合。

- **「推拉结合」的关键:** **合理区分「核心粉丝」与「长尾粉丝」**,只对核心粉丝进行实时写入。

  **关键组件与流程详解:**

  1. **事件源 (Event Source):**
     - **新章节发布:** 最核心的事件源。携带 `bookId`, `chapterId`, `publishTimestamp`。
     - **粉丝关系变更:** 用户收藏 (`favor`) 或取消收藏 (`unfavor`) 一本书。携带 `userId`, `bookId`, `action`, `timestamp`。
  2. **事件总线 (Event Bus):**
     - 使用高吞吐、可靠的消息队列如 Kafka/Pulsar。接收上述事件并进行持久化,供下游消费者订阅。

  后面是就是针对十万用户的进行**精准界定“核心活跃粉丝” (`HotFanCache`):**,查询优化,**高性能存储与分片:**

10. 反问,问了业务是什么,技术栈是什么,然后和面试官聊的蛮开心的,面试官夸了基础好,知道稳了

10min之后,hr通知2面.1面成功.#牛客AI配图神器#
全部评论
再加个linuxio多路复用
1 回复 分享
发布于 2025-06-27 10:08 安徽
up是26届还是27届
点赞 回复 分享
发布于 2025-07-03 16:06 陕西

相关推荐

2025-12-21 15:20
门头沟学院 Java
1.实习介绍2你们公司jdk版本用的是多少,为什么用这个版本4.能给我讲一下G1和传统比如CMS的区别是什么5.讲讲并发编程经验吧讲一下java当中怎么处理线程安全问题7.说一下jvm它为什么要这么去划分内存区域8Redis用过吧,聊一下缓存穿透是什么以及怎么解决9你刚刚提到两点,一个是布隆过滤器,布隆过滤器有什么坑,可能存在的问题是什么10.其实里面有个初始化的问题。布隆过滤器很难初始化比如说你有一亿的商品数据对不对?你要初始化,用过滤器,实际上很耗时的,这个该怎么来解决呢11.好,那我觉得还有第二个的话它只能追加,不能修改和删除。对吧,想一想有什么办法解决吗12.然后说回存null值的问题,他其实问题很多,比如增加业务流程的复杂度,因为你排查问题的时候,其实有可能不经意的就命中了一个缓存,对吧。另外的话就有可能导致缓存雪崩,因为它的key如果是一个变量,别人在攻击你的时候。就可能储存大量的这样的无效信息。第二个的话就是它其实不抗并发,第三个也有很多问题,你列举一下在用null的时候有没有发现过其他的问题?或者思考一下它还有可能存在哪些问题还有针对我上面提到的它有这么多这些问题为什么还要用它呢13你刚刚说对业务数据更新不友好,这个怎么不友好了,展开讲讲14聊聊业务项目吧,聊聊清结算吧给你整体介绍一下15实时有实时计价的是吧?就实时要返回是用到了mq是吧,有没有实时RPC部分呢,就不走消息异步的部分比如调用方需要实时的拿到这一笔这样的金额这种16.你们这个科目是什么,这个科目的话是按照什么样的配置和维度进行拆的。17.这些维度有优先级吗?或者是有层次的划分吗18既然有他们是共享的么,那我觉得这种的设计有一个问题,举个例子,你的短信的配置和信贷的配置实际上是一份规则配置,对吧?共享的话,最难解决的一个问题是分母问题,我不知道你能不能理解就是什么意思呢?你没有办法清楚的描述跑在你这个平台上的业务场景有多少个。也就比较难以进行资损防控,就比如说上游可能变了一个字段,对吧,你就匹配到另外一套规则了。因为有优先级,有很多的规则混合在一起了,然后另外一个场景也确实有,它不该,它可能本应该匹配a,但是它却匹配了B,对不对?这种问题的话一般是要怎么解决呢19.你说的是事前的部分,那它根本上要在架构上解决,你觉得应该怎么解决20.手撕:小于n的最大数
点赞 评论 收藏
分享
评论
13
43
分享

创作者周榜

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