本书介绍了14个典型互联网系统架构,剖析方案设计要点,讲解原理。这些案例包括:支付系统、文件存储系统(网盘)、视频网站、聊天系统等。作者以面试问答的形式,对每一个系统案例均按照确定问题范围→顶层设计→细节设计→总结的框架来阐释,直击问题核心。全书提供大量设计框图,辅助读者理解,易读性高。 初级架构师能从本书学习到不同互联网系统设计方案要点,有经验的架构师也能从书中的案例获得启发。
1. 每章介绍一个典型互联网系统案例,涵盖各类系统的需求、规格、架构和方案设计要点。2. 以面试问答的形式展开,一步步深入到架构的核心问题3. 原书为美国亚马逊畅销书
作者简介
Alex Xu,卡耐基梅隆大学硕士,他是一位经验丰富的软件工程师,也是一个创业者。他曾在Twitter、苹果和Zynga等公司工作。他热衷于设计和实现复杂的系统。
译者简介
徐江,毕业于瑞典皇家理工学院的系统生物学专业,曾就职于Thoughtworks软件技术有限公司,现在在宝洁公司担任IT service manager,负责consumer relations。
很高兴你阅读本书,和我一起来学习系统设计面试技巧。关于系统设计的面试是所有技术面试中最难的。面试者会被要求设计一个软件系统,比如news feed、谷歌搜索、聊天系统等。这些问题令人望而生畏,没有特定的解题模式,通常范围都非常广且模糊,其答案也是开放的,也可以说不存在标准答案或正确答案。
很多公司都设有系统设计面试,因为这种面试能考验软件工程师日常工作所需的沟通能力和解决问题的能力。面试官会考查候选人如何分析一个模糊的问题并一步步解决这个问题;同时,他们还会考查候选人阐述自己想法的能力、与其他人讨论的能力、评估及优化系统的能力。
系统设计的问题是开放式的。在现实世界中,不同的系统之间存在许多差别,而系统自身还要应对各种变化。面试官期望得到的答案是一个能满足系统设计目标的架构。在面试过程中,对问题的讨论可能会因面试官的个人风格不同而走向不同的方向。有些面试官喜欢询问高层架构设计方面的问题,以全面地考查面试者的知识面,也有些面试官会选择一个或者几个领域来深入地考查知识点。一般来说,应该搞清楚系统的需求、限制和瓶颈,以便面试双方可以有效地进行沟通。
本书的目标是提供一个可靠的策略,帮助面试者回答系统设计问题。采取正确的策略且具备必要的知识,对面试的成功至关重要。
本书讲述了构建一个可扩展系统所需的基础知识。 你从本书中获得的知识越多,在解决系统设计问题时就越从容。
本书还提供了一个逐步解决系统设计问题的框架,用了很多实例来阐释这种系统性的解决方法且附有详细步骤,你可以照着操作。只要勤加练习,在回答系统设计面试问题时,你就会胸有成竹。