System Design Interviews: A Step by Step Guide