Course

System Design 谷歌工程师讲系统设计 – Computer Science Course 601

0 out of 87 steps completed0%
7 Lessons

特邀讲师:

大鲲,常春藤名校计算机博士,在谷歌工作多年,面过各种级别的数百求职者,现为谷歌招聘委员会(Hiring Committee)成员。

是的,传说中让大家面完谷歌后忐忑不安的Hiring Committee成员之一,从幕后走出来,教授大家System Design知识。

这门系统设计课程侧重什么?

大鲲的课程不会把“how to design Twitter”、“how to design Netflix”、“how to design xxx”等面试题套路一路讲下来。

根据大鲲的面试经验:很多求职者遇到系统设计类问题,会硬搬已有的解题套路或者答案,但是,系统设计类问题非常open ended,这种做法经常让面试官觉得你“驴唇不对马嘴”,并且“给你暗示你也不听,甚至屡教不改”。

大鲲的课程会先讲授工业界系统设计相关知识,让你先理解Why,然后再讲解如何应用这些知识来设计系统。我们希望你不光是掌握应对面试的技巧,也能提高对系统设计的理解和应用能力。

课程安排:

第一课
Part 1:

Insights on system design interviews. Knowledge test. Experience test.
The actual interview question.
Reading the interviewer’s mind.

从面试官的角度探究为什么要设计system design interview,具体考察什么

Part 2:

An overview of important technologies used in internet application companies.
Concepts of servers, data centers, http(s) communication, RPC communication, testing, protocol buffer, load balancing, QPS, databases, map reduce.

这是用来扫盲的High Level Overview,也给出了课程将会覆盖的内容

第二课
Part 1:

Testing — Is it political correct in the programing world?
Unit tests, integration tests, mocking, test flakiness. How to write good unit tests.
Hermetic tests.

大鲲老师认为很重要、有很多争议的一个话题。

Part 2:

Data centers, machines, server jobs, load balancing.
Life of a query, http(s) requests, RPC requests, protocol buffers.
Server resource planning.

第三课
Part 1:

Distributed NoSQL databases.
Why NoSQL DBs are so popular? Performance, Availability, Consistency.
Considerations for strong consistency.
A detailed analysis of bigtable and its pros and cons. NoSQL database Schema design.

Part 2:

Map reduce, its theory and design.
Applications that are suitable for map reduce.

第四课
System design interview questions analysis.
Three steps to beat the system design interviews.

1. Drawing a diagram.
2. Design the database
3. Analyze the life cycle of the operations.

这里会讲解如何应用前面几节课的知识来应对具体的面试题目。One class can typically cover 3-4 interview questions in depth.

第五课
This class will go through common design patterns and explain how they are used in the real world software development.

How Singleton pattern is used?
How publisher and subscriber pattern is used?
How dependency graph is used?
How scheduled refresh job can be implemented.
etc

第六课
System design interview questions analysis. 3-4 questions will be analyzed in depth.
再次将理论知识应用到实践中,深入讲解几道系统面试题目。

第七课
System design interview questions analysis.

MapReduce
Dependency Graph
Amazon Shopping Cart Design

所需基础:
required:学过操作系统或者分布式系统,或具备相关的基础知识。
optional:了解常见的设计模式
MOOC课程:
Introduction to Operating Systems
Advanced Operating Systems

试听章节:

相关课程:
Computer Science 401 – 谷歌招聘委员会成员讲解:如何准备面试

$1299 - Take this Course

CS601 Lesson 1

CS601 Lesson 2

CS601 Lesson 3

CS601 Lesson 4

CS601 Lesson 5

CS601 Lesson 6

CS601 Lesson 7