The system design round has become a standard part of the interview in the software engineering process. If you want to get your dream job then you need to tell your approach about building a complex large scalable system.
It is an important part of programming job interviews, and if you want to do well, you must prepare this topic.
In this article, we will discuss some common design interview questions asked by the interviewers frequently in giant tech companies. I had a top list of questions that I have collected from various interviews. While designing the system and explaining the answers to the interviewer, we will discuss some key points which you should consider
Design A URL Shortening Service
It allows users to enter a long URL, and then it returns a shorter, unique URL.
Things We Should Discuss And Analyze
- Given a long URL, the service should generate a short & unique URL.
- Consider scalability
- Service handle redirects.
- Support for short URLs.
- Delete Expired URLs.
- Track click stats.
- The system should be highly available.
While designing the service you need to consider three things.
- API
- Application layer
- Persistence layer
Design Facebook Messenger Or Whatsapp ( Global Chat Service)
Things we should discuss & analyze.
- One on one text messaging between users.
- Extending the design to support group chats.
- Push notification
- If the user is not connected to the internet, what actions need to be taken.
- Delivered and read status.
- Sending images and other documents.
- Providing end to end message encryption.
Design Youtube/Netflix ( Global Video Streaming Service)
Design youtube/ Netflix video. Streaming service where users can upload/ view/ search videos. The service should be scalable where a large no. of users can share and watch the videos simultaneously.
Things to discuss and analyze
- Record stats about videos.
E.g. total no. of views, upvotes, downvotes, etc.
- Adding comments on videos in real-time.
Components:
- Open connect- clouds like AWS, OC which act as a content delivery network.
- Backend- Database & Data Structures online courses.
- Client- use Youtube/Netflix.
Design Quora/ Reddit/ Hacker News
These social network and message board services allow users to post questions, share links, and answer the questions of other users.
Things to discuss and analyze:
- Record stats of each answer such as no. of views, upvotes/ downvotes, etc.
- Follow options for users to follow other users or topics.
- Newsfeed generation which means users see top questions from all users and topics they follow on their timeline.
Design a Web Crawler.
These scalable services that collect information from the entire web and fetch hundreds of millions of web documents.
Things to discuss and analyze
- Find new pages.
- Prioritize web pages that change dynamically.
- You should ensure that crawler is not unbounded on the same domain.
Design Dropbox/ Google Photos/ Google Drive ( Global File Storage And Sharing Service)
Design a file/ image hosting service that allows users to store, share, upload, delete, and download files or images on their servers and provides system design course online synchronization across different devices.
Things to discuss and analyze
- Approach to view/ search/ upload/ share and download photos or files from any devices.
- Track permission for file sharing
- Allow multiple users to edit the same documents.
- ACID property should be present in the system.
- The system should support storing large files.
Design An API rate limiter( Github)
Design a tool that monitors the no. of requests per window time a service agrees to allow.
Things to discuss and analyze
- Limiting the number of requests sent to an API within a time window.
- APIs are available through a group of servers.
- How to handle throttling.