系统设计面试的准备

May 23, 2020 • 预计阅读时间 2 分钟

系统设计的关键点在于知识面广 + 考虑全面,这需要经验做支撑,但通过多学习案例、套路是可以弥补的

学习资料

   Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

   System design interview for IT companies

除了拿来面试,也是学习架构的大宝藏。

经典案例

突击 or 有架构经验的话,我觉得只要认真研读经典设计问题即可:

问题
设计 Pastebin.com (或者 Bit.ly)解答 1
解答 2
设计 Twitter 时间线和搜索 (或者 Facebook feed 和搜索)解答
设计一个网页爬虫解答
设计一个图片分享网站 Instantgram解答
设计 Mint.com解答
为一个交易平台设计限价订单(limited order book)解答
为一个社交网络设计数据结构解答
为搜索引擎设计一个 key-value 储存解答
通过分类特性设计 Amazon 的销售排名解答
在 AWS 上设计一个百万用户级别的系统解答

答题策略

九章总结的 4S 分析法:

-   Scenario 场景:需要设计哪些功能,到什么程度?
    -   who will use
    -   how many will use
    -   usage pattern
    -   use case not covered
    -   estimated throughput
    -   estimated latency
-   Service 服务:将大系统拆分为小服务
    -   api for read/write scenarios
    -   schema
-   Storage 存储:数据如何存储与访问
    -   data size
    -   read/write ratio
    -   read/write traffic
    -   rdbms/nosql
-   Scale 升级:解决缺陷,处理可能遇到的问题
    -   scaling the algorithm
    -   scaling the individual component
    -   memory cache
    -   DNS, CDN, reverse proxy, load balancer, ...
    -   async: message queue, back pressure, time & order, ...
    -   communiction: tcp, udp, rest, rpc, ...

技术点参考

   云原生时代|分布式系统设计知识图谱(内含 22 个知识点) 分布式系统设计知识图谱

展开的话范围相当的广,只能平时积累,逐个突破。

   番外:

   我理解的架构 & 架构师(兼谈微服务)

  淘宝服务端高并发分布式架构演进之路 ⏤ 其实是互联网应用的典型架构,架构是互通的,了解后至少懂得大方向。

职业发展面试指南系列

股票新手成长 - 基础入门

Jackson 常用注解

comments powered by Disqus