,没有认真准备 SDI 的应聘者,大部分表现不佳,尤其是在 Google,Facebook,Amazon,Microsoft 等顶尖公司的面试,如果表现不及平均水平的候选人,获得获得 offer 的机会非常渺茫。另一方面,良好的面试表现总是会带来更好的回报,或者是更高的职位,或者是更高的薪水,因为这显示了候选人处理复杂系统的能力。
接下来,我们将按以下步骤循序渐进地解决多个设计问题:
第一步:需求澄清
在需求范围内提出一些问题有助于澄清需求。设计问题大多是开放性的,并且没有一个标准答案,这就是为什么要澄清一些具体需求。花费足够时间来定义系统最终目标有助于在面试中获得成功。另外,由于系统设计的面试只有 35-40 分钟的时间,我们应该弄清楚哪些部分需要重点关注。
以设计一个类 Twitter 的服务为例,在开始设计之前应先回答以下问题:
-
我们服务的用户能否发布推文并关注其他人?
-
我们是否还应该设计来创建和显示用户的时间轴?
-
推文中是否包含照片和视频?
-
我们是仅专注于后端还是前端?
-
用户将能够搜索推文吗?
-
我们需要显示热门话题吗?
-
是否有关于新(或重要)推文的推送通知?
这些问题将决定最终设计的系统长什么样。
第二步:系统接口定义
定义系统期望的接口(API)不仅可以帮助建立预期的接口协议 ,也可以确保我们没有弄错需求。比如类似 Twitter 的服务的接口可能是这样的:

(编辑:甘孜站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|