番茄小说一面面经-后端

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

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 陕西

相关推荐

04-01 15:36
已编辑
鹤岗师范高等专科学校 Java
3.16  一面     两个小时后约二面3.20 二面    等了一周约的三面,手撕hot100没写出来,可能是看一面面评还可以才给过的3.30 三面   一个小时后oc  晚上offer要求4.8到岗,没法调整时间。已经接了offer了后续会补一下具体的面经三面一、开场与基础信息先请你简单做个自我介绍吧。咱们这个岗位偏数据库、基建方向,和你之前偏业务的经历不同,对这块领域你有什么了解吗?数据库及数据库中间件方向,你大概知道日常需要做哪些工作、需要了解哪些知识吗?有什么自己的理解?二、分库分表相关你用过 ShardingSphere 吗?自己在项目中有用过分库分表吗?当时为什么要去做分表?做了分库分表以后,除了解决数据量过大的问题,对你的使用带来了什么影响?分库分表场景下主键唯一性的问题,有什么解决办法?仍然使用数据库自身主键的情况下,分库分表场景下可能会有什么问题?你有做过分库分表扩容吗?扩容的时候分表数量有变化过吗?假设让你实现分库分表的扩容逻辑,你觉得方案大概是怎样的?数据在不同表之间搬迁的时候,主键有没有可能冲突?三、分布式事务相关项目中遇到过分库分表带来的分布式事务问题吗?你是怎么解决的?分布式事务解决方案里你哪些比较了解,可以深入展开?实际项目当中你用的是哪一种分布式事务方案?两阶段事务提交的 TC 是业务侧自己的服务吗?在京东实习的时候遇到过分布式事务相关问题吗?四、GC 问题与线上排查你之前遇到过频繁 Full GC 的问题,当时是怎么排查的?这个 SQL 一开始就写错了,测试阶段没验证出来吗?一个查询返回 1000 多条数据,应该不至于造成频繁 Full GC 吧?当时只看了服务应用的监控,能看到数据库的监控吗?平时开发当中会看数据库的监控吗?数据库有哪些比较关键的监控指标?结合你这个 GC 案例,如果看数据库监控,哪些指标可能会异常?当时有看过这条 SQL 确实很慢吗?除了慢日志,还能想到什么其他异常指标?应用机器的系统指标(CPU、内存、网络带宽)当时会看吗?当时网络带宽有变化吗?五、编程语言与技术栈你主要用 Java,也提到用过 Go,其他语言比如 Python、前端有接触过吗?项目开发中你会去写前端的东西吗?你自己的练手项目有前端部分吗?六、AI 辅助开发相关开发过程中你一般会怎么使用 AI(Web Coding)?有具体用 AI 辅助完成项目的案例吗?AI 写的代码不符合预期、有 bug 时,你怎么跟 AI 交互修正?有用 AI 做过问题定位的工作吗?现在再遇到当时 Full GC 宕机的问题,想借助 AI 排查的话会怎么做?非公式化的特定场景问题,AI 怎么帮助定位问题?人怎么去干预、配合 AI 完成问题定位?
点赞 评论 收藏
分享
评论
14
45
分享

创作者周榜

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