新笔趣阁 > 成功励志 > 职场进修 > 程序员面试金典 > 8.10 扩展性与存储限制 (1 / 4)

8.10 扩展性与存储限制 (1 / 4)

        8.10扩展性与存储限制扩展性面试题看似吓人,其实这类问题算得上是最简单的。它们不会暗藏什么“陷阱”,不会有什么花招,也不需要花哨的算法——至少通常不会有。你不需要学习分布式系统方面的课程,也不必具备系统设计的相关经验。只要稍加练习,任何心思缜密且够聪明的软件工程师都能轻松搞定这些问题。

        循序渐进法

        面试官并不是想考察你掌握了多少系统设计知识;实际上,除了考察最基本的计算机科学概念,面试官一般不会考具体的知识点。相反,他们想要评估的是你分解棘手问题的能力,以及用所学知识解决问题的能力。以下这些步骤有助于应对大多数系统设计问题。

        步骤1:大胆假设

        假设一台计算机就能装下全部数据,且存储上没有任何限制。你会如何解决问题?由此得出的答案,可以为你最终解决问题提供基本思路。

        步骤2:切合实际

        现在,让我们回到问题本身。一台计算机究竟能装下多少数据,拆分这些数据会产生什么问题?通常,我们需要考虑如何合理拆分数据,以及一台计算机需要不同的数据片段时,如何得知该去哪里查找,等等。

        步骤3:解决问题

        最后,想一想该如何处理步骤2发现的问题。请记住,这些解决方案应该能彻底消除这些问题,或至少改善一下状况。通常情况下,你可以继续使用(进行一定修改)步骤1描述的方法,但偶尔也需要改弦易张,从根本上改变解决方案。

        请注意,迭代法通常很有用。也就是说,等你解决好步骤2发现的问题,可能又会冒出新问题,你还要着手处理这些新问题。

        你的目标不是重新设计公司耗资数百万美元搭建的复杂系统,而是证明你有能力分析和解决问题。检验自己的解法,四处挑错并予以修正,是个向面试官展现实力的不错方法。

        你需要知道的:信息、策略与问题

        典型系统

        尽管仍有公司在使用大型机,可大多数互联网公司还是喜欢使用由普通计算机互联组成的大型系统。通常情况下,你可以假定自己就是在使用这种系统。

        面试之前,你最好填写下面的表格。利用这张表,可以估算出一台计算机可存储多少数据。

        组件一般容量/数值硬盘空间内存网络传输延迟

        内容未完,下一页继续阅读