查看: 2942| 回复: 10
跳转到指定楼层
上一主题 下一主题
收起左侧

[题目讨论] 请教一道SD面试题以及如何深入的提高系统设计能力

全局:

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

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

x
最近面试某大厂碰到一道系统设计题目,如下:
一个SQL table 有两个column,

1 uid
2 rating ( 0 - 99 int)
要求是设计两个get api 接口, 第一个搜索uid , 另一个 搜索 rating 的某个范围。
我当时回答的uid 作为primary key, 然后rating 做index。
然后又问如果数据大的话 要做分布式database sharding 的话,要怎么设计。
当时感觉自己虽然知道一些 database 的简单知识,比如index ,分布式的sharding。 但遇到这种问题似乎很不确定答案是什么。为了更深入理解Database 的有什么好的资料和书可以看吗?
我自己工作了一年多,平时工作中没接触到architecture。自己读完一遍 Alex Xu 的设计书 volume 1 (正在读volume 2),但看来还是远远不够。碰到这种没怎么遇到过,又感觉关于某个技术比较深入的理解,就有点懵。 如果想以后应付面试系统设计,是不是对于一些重要的技术 ,需要找一两本书深入研究下?

上一篇:why might Consistent Hashing not be the correct answer to your system ...
下一篇:[抛砖引玉] System Design的个人见解和一些例子
推荐
zunge 2022-12-13 15:14:10 | 只看该作者
全局:
麻烦请楼主用清晰的语言把面试官的要求表述清楚。
1) 如果完全按楼主的叙述理解,SQL Table里面现在已经有了uid和rating这两个column, 需要楼主在上层新搭建两个API call。
楼主的回答“把uid作为primary key”应该是建立新的SQL Table的时候考虑的,并没有直接解决面试官的问题。
2) “搜索uid”是什么意思?如果是想查询一个uid在SQL Table是否存在,一方面可以给uid加index,也可以用Bloom filter加快效率。
3) “搜索rating范围”是什么意思?如果是想查询现有的数据中rating的range,可以在memory中维护一个min和max。
4) Database sharding具体看用例。楼主可以查阅一下range partition,或者consistent hashing。

评分

参与人数 1大米 +1 收起 理由
yxj8126 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
JEM 2022-12-13 14:58:16 来自APP | 只看该作者
全局:
我有个alex xu读书群周一到周四开,主要在读卷二
回复

使用道具 举报

🔗
无量塔 2022-12-13 15:52:11 | 只看该作者
全局:
数据库看DDIA
回复

使用道具 举报

全局:
JEM 发表于 2022-12-12 22:58:16
我有个alex xu读书群周一到周四开,主要在读卷二
想加群!!!

评分

参与人数 1大米 +1 收起 理由
lu9999 + 1 求加群

查看全部评分

回复

使用道具 举报

🔗
 楼主| yxj8126 2022-12-14 12:17:27 | 只看该作者
全局:
zunge 发表于 2022-12-12 23:14
麻烦请楼主用清晰的语言把面试官的要求表述清楚。
1) 如果完全按楼主的叙述理解,SQL Table里面现在已经有 ...

很有启发。
关于(3) ,是需要 在数据库中搜索 rating 的 任意 range 的 所有record。 这种问题,应该怎么考虑做?
回复

使用道具 举报

🔗
 楼主| yxj8126 2022-12-14 12:18:35 | 只看该作者
全局:

多谢提醒,准备去看。
回复

使用道具 举报

🔗
zunge 2022-12-14 12:32:00 | 只看该作者
全局:
yxj8126 发表于 2022-12-13 20:17
很有启发。
关于(3) ,是需要 在数据库中搜索 rating 的 任意 range 的 所有record。 这种问题,应该怎么 ...

如果能动SQL schema就在rating上加一个索引加快查询。
如果不能动的话,没想到有什么能优化的点,除非能再存一份数据用来快速查询。
回复

使用道具 举报

🔗
ChaosMonkey7 2022-12-14 13:09:32 | 只看该作者
全局:
zunge 发表于 2022-12-13 04:14
麻烦请楼主用清晰的语言把面试官的要求表述清楚。
1) 如果完全按楼主的叙述理解,SQL Table里面现在已经有 ...

这答案听起来就是不带实战经验的答案,浓浓的刷题风。
回复

使用道具 举报

🔗
ChaosMonkey7 2022-12-14 13:17:10 | 只看该作者
全局:
yxj8126 发表于 2022-12-14 01:17
很有启发。
关于(3) ,是需要 在数据库中搜索 rating 的 任意 range 的 所有record。 这种问题,应该怎么 ...

这是个好题。
你还是蹲个大佬来讲吧。或者你自己思考成为大佬。

我给你几个hint和结论,看能不能辅助你思考找到答案:
1. 针对rating加索引会有优化效果么?
2. 举个例子,说明有效果。再举个例子,说明没效果。
3. 针对没效果的case,该怎么继续优化?
4. 最后别忘了分页。

hmm 或许,“分页”应该放第一个说,因为是送分项。就像“添加索引”一样,无脑先说,分拿到先,至少听起来像个工程狗,而不是背书憨。
回复

使用道具 举报

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

本版积分规则

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