Most difficult part of design interview is to structure the interview.In my experience i have faced this a lot in which i have a lot of knowledge but don't know how to put that knowledge out in structured format in 60 min interview. Please comment in case this helped you. Happy InterviewingSTRUCTURE
(1) PROBLEM & SCOPE Understanding. [5-10 min] =>
(1) Use cases
(2) Scenarios that will not be covered
(3) Usage patterns
(4) Assume High availability is required.
(5) Who will use
(6) How many will use(2) CONSTRAINTS/ESTIMATIONS [5 min]
(1) Throughput (QPS for read and write queries) ask per month(Bonus)
(2) Read/Write ratio
(3) Traffic estimates read and write QPS
(4) Storage estimates - How much data will be written per sec and total storage needed for 5 years
(5) Memory estimates
(6) Latency expected from the system (for read and write queries)(3) DESIGN GOALS [5 min]
(1) Latency and Throughput requirements
(2) Consistency vs Availability [Weak/strong/eventual => consistency | Failover/replication => availability](4) HIGH LEVEL DESIGN [5-10 min]
(1) APIs for Read/Write scenarios for crucial components
(2) Database schema
(3) Basic algorithm
(4) High level design for Read/Write scenario
(5) Infrastructure (LB, messaging)(5) DEEP DIVE [15-20 min]
(1) Scaling the algorithm
(2) Think about the following components, how they would fit in and how it would help
a) DNS
b) CDN [Push vs Pull]
c) Load Balancers [Active-Passive, Active-Active, Layer 4, Layer 7]
d) Reverse Proxy
e) Application layer scaling [Microservices, Service Discovery]
f) DB [RDBMS, NoSQL]
g) Caches
p.s: This is curated from own experience and multiple other sources(thanks to all the OP's)