How to prepare for System Design interview round?

Photo by Olena Sergienko on Unsplash

Advantages of System Design Interview round

  1. As system design questions are open ended, you can use your creativity and differentiate from other candidates.
  2. There are very limited questions in system design and once you start practicing, you will notice the pattern to solve similar questions. Thus it is relatively easy to prepare for the system design round.
  3. System designing is more of a discussion. Thus, feel less intense than in the coding round.

Disadvantages of System Design Interview round

  1. As it is very open ended, the expectations of interviewer is not clear. Few interviewers may expect just a component diagram with DB schemas. On the other hand, there may be interviewers who are expecting class diagram with SQL queries. One way to handle this scenario is to keep your thinking loud and ask interviewer where they need in-depth explanation.
  2. System design for totally unknown product. It may become boring for both interviewer and interviewee. If you already know a system, the discussion starts from the features to consider and tech involved. But when the question is completely unknown then the discussion starts with understanding the product itself. This happened with me when I was quite naive and an interviewer asked me to design tinyURL service but I wasn’t aware of it. One way to avoid this scenario is to practice many questions and a way to handle such scenario is to take a deep breath and start with very clear discussion with mutiple questions.
  3. System Designing need shallow knowledge of many technologies. To design any system, you at least need to know about component diagrams, class diagrams, SQL queries, servers, DBs, caches, queues, scaling, logging, load balancers and analytics. Also, the interviewer can choose to ask anything in-depth.
  4. System design without a whiteboard is slightly difficult. This is my personal view as I only like designing systems on a big whiteboard with multi-colored markers.

How to prepare?

Whether you like it or not, system design is your chance to get extra points on clear communication, loud thinking, collaboration, neat white-boarding, and handling continuous interviewer’s views and questions. You can get the basic idea about system designing from chapter 9th of the “Cracking the Coding interview” book.

  1. Design a lift system for a skyscraper.
  2. Design a movie booking system like Bookmyshow.
  3. Design a URL shortening system like TinyURL.
  4. Design a message broadcasting system like Twitter.
  5. Design a cache.
  6. Design a geo-location based service like Uber.
  7. Design a collaboration tool like Google docs.
  8. Design an efficient memory system with processes and garbage collector.
  9. Design a video streaming platform like Netflix.
  10. Design a new DB with <xyz> extra feature.
  11. Design a real time messaging app like WhatsApp.
  12. Design a webcraler to rank pages like Google.
  1. Success in Tech

How to ace?

Once you understand the system designing of above mentioned questions then you can practice more by designing the regular used tech products like instagram, banking system, recommendation system,news feed, abusive content controller system and community management system.

  1. Class diagrams
  2. SQL queries (Insert, Select, Join)
  3. Servers (EC2, Lambda)
  4. RDBMS and NoSQL DBs (MySQL, PostgreSQL, Mongo, Cassandra)
  5. Caches (Redis, Map-reduce)
  6. Loadbalancer
  7. Messaging Queues (RabbitMQ, Service Bus Queue, Kafka)
  8. Scaling (horizontal, vertical, sharding, instances)
  9. Logging (New relic)
  10. Analytics (Google analytics, MixPanel)
  11. Real time events and eventual consistency

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Navita Pareek

Navita Pareek

Started as a Software Engineer, now an Entrepreneur.