番茄小说一面面经-后端

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

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 回复 分享
发布于 06-27 10:08 安徽
up是26届还是27届
点赞 回复 分享
发布于 07-03 16:06 陕西

相关推荐

09-10 20:58
已编辑
北京师范大学 算法工程师
啊啊啊!!不愧是字节 拷打的汗流浃背,最后算法题没为难 力扣hot100原题许愿许愿啊啊啊拷打项目&八股!(都是根据项目问的八股额啊啊啊):项目难点啊,轻耦合表现在哪啊,java的哪些特性实现了轻耦合啊,模块与模块之间怎么实现的轻耦合啊……spring依赖注入方案有哪些?Setter和基于接口的方案有啥区别?你用哪个?为什么?柔性事务相对刚性事务有什么区别?中间状态不一致为什么保持了强一致?tcp半包粘包?tcp报文段有规定体积吗?头部有规定体积吗?设计编码器是怎么解决半包粘包的?怎么判断这个包是不是属于这个包的开头部分……tcp重复和丢包是怎么处理的?怎么保证收到的是完整的?(长度和内容)udp实现IM的话应用层怎么保证安全和一致性呢?(重传部分问的很细((java集合的ArrayList和LinkedList有什么区别?内存部分有什么特点?应用场景有?Hashmap底层怎么实现的?什么时候扩展到红黑树?有什么优势?红黑树怎么保证平衡?场景题:用户同时保存下载100本小说,有进度提示,希望下载的越快越好,也希望保障手机的性能,可以从哪些点入手来实现?这样的item结构是啥样的?怎么更新下载状态?存到本地数据库要注意什么?为什么造成死锁?怎么解决?怎么设计锁?网络层层面怎么进行优化?……算法:删除链表的倒数第n个节点攒点人品希望至少能过一面
查看23道真题和解析
点赞 评论 收藏
分享
算法没写出来导致三面挂 哎哎1. 详细介绍游戏审核架构迁移项目,包括其背景(老架构无人维护、技术债高)、目标(统一审核SDK、让业务方无感迁移)以及具体实现。2. 针对异步审核回调场景,阐述对比过的两种方案(异步长轮询 vs EventBus),并解释最终选择EventBus的原因。3. 阐述了整体架构流程,特别是引入乐高(Lego)组件作为隔离和降级手段的作用。4.  介绍黑白名单统一管理平台的项目背景、要解决的核心痛点(运营管理繁琐、开发重复定制)。5. 详细解释如何通过三级缓存架构(本地缓存+Redis+DB)顶住70万QPS的流量,并阐述为什么读请求不回源到DB。6.  详细阐述保证DB和Redis数据最终一致性的多重方案(MQ异步更新、Binlog增量对账、天级定时任务全量校对、人工ONCALL)。7. 解释如何通过“模板”来抽象和支持不同业务维度的黑白名单,以及模板和名单对象在数据库中的存储设计(JSON字段)。8.  阐述系统的检索方式(不支持按JSON内字段检索),以及如何处理存量数据的迁移(RPC、Excel导入)。9. 算法:一个蚂蚁在时钟上从12点出发,每次可以顺时针或逆时针走一个刻度,总共走n步,问最终刚好回到12点的走法有多少种。(动态规划/回溯问题)10. 设计一个在5000人群里发50个随机金额红包的功能,需要考虑哪些技术问题,并给出解决方案。
查看10道真题和解析
点赞 评论 收藏
分享
评论
12
37
分享

创作者周榜

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