回复: 0
收起左侧

Uber L7系统设计真题

本楼:   👍  2
100%
0%
0   👎
全局:   511
99%
1%
5

2023(7-9月) 码农类General 博士 全职@uber - 猎头 - 视频面试  | 😃 Positive 😣 HardPass | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 sd_6oahc 于 2024-9-10 19:23 编辑

最近我朋友面试了 Uber 的 Staff+ sde岗,碰到了一道挺难的系统设计题。题目是设计一个Event Lifecycle Management System(事件生命周期管理系统),系统需要从不同的服务中接收大量消息并进行分析。难点在于,数据量非常大,单一的磁盘或服务器根本装不下,而且事件的顺序可能是乱的(比如 endEvent 先到,而 startEvent 后到),甚至有时候事件会在实际发生几天后才到达系统。

刚开始,题目看起来还挺直观的:
1. startEvent(event_id, timestamp):记录事件开始,
2. endEvent(event_id, timestamp):记录事件结束,
3. getOngoingEvents(timestamp):查询某个时间点的进行中事件。

但是在问了一些澄清问题后,他发现真实的需求其实有点不同。比如,他们特别指出 getOngoingEvents(timestamp) 只能查询 24小时以前的数据。而且,事件最长只持续一个小时。
这个细节其实非常关键,因为它意味着我们不需要支持实时查询!我们有一天的缓冲时间,所以问题变得相对简单了。我们可以用 批处理 来解决问题,而不是实时更新,设计也因此简化了不少。

一开始,他考虑用常见的实时系统解决方案,比如bucketing time series data。但在更深入了解了面试官的真正要求后,他意识到批处理才是更合理的选择。

所以他提出了这样一个方案:

* 先将事件数据接收到一个分布式系统中(比如 Kafka),因为数据量太大,单台服务器无法处理。
* 然后,利用批处理来整理那些乱序到达的事件,并在执行查询
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
3acres.com/?url=https%3A%2F%2Fleetcode.com%2Fdiscuss%2Finterview-question%2Fsystem-design%2F3378926%2FSystem-Design-or-Uber-or-SSE" rel="nofollow noopener" target="_blank">https://leetcode.com/discuss/int ... sign-or-Uber-or-SSE

评分

参与人数 4大米 +9 收起 理由
EnderLee + 1 给你点个赞!
清道神君 + 5 欢迎分享你知道的情况,会给更多大米奖励!
loganfcg + 2 很有用的信息!
Hw1513 + 1 给你点个赞!

查看全部评分


上一篇:[求加米] InterSystems TET 25NG 原题
下一篇:meta面经整理
您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表