Testing object-oriented systems models patterns and tools. System Design: How to design Twitter? Interview question at Facebook, Google, Microsoft