Monday, December 18, 2023

Design interview questions-2

Design a global chat service like Whatsapp or a facebook messenger.

  • What are some of the required features?
    • Allow users to chat over the internet.
    • Provide support for one-on-one and group chats.
    • Messages need to be stored for better viewing.
    • Messages need to be encrypted for security purposes.
  • What are some of the common problems that can be encountered?
    • What would happen to a message if it is sent without an internet connection?
    • Will encrypting and decrypting increase the latency?
    • How are the messages sent and notified to the device?
  • Possible Tips for consideration:
    • Split database schema into multiple tables such as user table, chat table, massage table etc.
    • Make use of web sockets for bi-directional communication between the device and the server.
    • Make use of push notifications for notifying the members even if they are online.

 How do you design a URL shortening service like TinyURL or bit.ly?

TinyURL or bit.ly takes a long URL and generates a new unique short URL. These systems are also capable of taking the shortened URL and returning the original full URL.

  • What are some of the Required Features?
    • Generate a short URL having a length shorter than the original URL.
    • Store the original URL and map it to the shortened one.
    • Allow redirects in the shortened URLs.
    • Support custom names for short URLs.
    • Handle multiple requests at the same time.
    • Delete expired URLs
    • The system should be highly available
  • What are some of the Common Problems encountered?
    • What if two users input the same custom URL?
    • What happens if there are more user load than expected?
    • How do you regulate the database storage space?
  • Possible tips for consideration:
    • The concept of hashing can be used for linking original and new URLs.
    • REST API can be used for balancing high traffic and handling front-end communication.
    • Multithreading concept for handling multiple requests at the same time.
    • NoSQL databases for storing original URLs.

 Design a forum-like systems like Quora, Reddit or HackerNews.

These sites are meant for posting questions and answering them, showing newsfeed highlighting popular questions based on tags and related topics. Users can also comment on questions or shared links. 

  • What are some of the Required Features?
    • Users should be able to create public posts and apply tags to them.
    • Posts should be sortable based on tags.
    • Post comments in real-time by users.
    • Display posts on newsfeed based on followed tags.
    • News feed generation which means users can see the list of top questions from all the users and topics they follow on their timeline.
    • Approach to record stats of each answer such as the number of views, up-votes/down-votes, etc.
  • What are some of the Common Problems encountered?
    • Should it be just a web application?
    • Where to store the uploaded images and links?
    • How can you determine the related tags?
    • How can you distribute posts across a server network?
  • Possible tips for consideration:
    • Check on using SQL database for mapping relational data between users, posts, comments, likes, tags, posts etc.
    • Incorporate multithreading and load balancer for supporting high traffic.
    • Make use of sharding for distributing the data across different systems.
    • Incorporate machine learning algorithms for finding correlations between the tags.

 Design Facebook’s newsfeed system.

Facebook’s newsfeed allows users to see what is happening in their friend's circle, liked pages and groups followed.

  • What are some of the Required Features?
    • Generate newsfeed using posts from other system entities that the user follows.
    • Newsfeed posts can be of text, image, audio or video format.
    • Append new posts to the user’s newsfeed in close to real-time.
  • What are some of the Common Problems encountered?
    • What happens if the new post sees a lot of latency to get appended to the news feed?
    • Can the algorithm handle sudden user load?
    • What posts should take priority for displaying in the news feed?
  • Possible tips for consideration:
    • Evaluate the process of fanout for publishing posts to the followers
    • Check how sharding can be achieved efficiently for handling heavy user load. The feed data of a user shouldn't be put into multiple servers. Instead, sharding can be done on user ids.

Design a parking lot system?

  • What are some of the Required Features?
    • The parking lot can have multiple levels where each level has multiple rows for parking spots.
    • The parking lot can support parking for cars, buses, motorcycles hence spots can be of multiple sizes.
    • Consider the parking lot capacity at the time of designing the system.
    • Design appropriate pricing for each parking spot.
  • What are some of the Common Problems encountered?
    • What should happen to the parking lot system if every spot is occupied?
    • Assigning parking lot spots of smaller size to vehicles of a bigger size.
  • Possible tips for consideration:
    • Think of an algorithm for assigning an appropriate parking spot to a vehicle.
    • Think of different entities required for designing the system.

How do you design a recommendation system?

Recommendation systems are used for helping users identify what they want efficiently by assisting them by offering various choices and alternatives based on their history or interests.

  • What are some of the Required Features?
    • Discuss what kind of recommendation system is required - whether it is for movies, e-commerce websites, songs etc.
  • What are some of the common problems encountered?
    • Figure out how to recommend fresh and relevant content in real-time.
  • Possible tips for consideration:
    • Discuss how to use the Eval component for understanding the working of the system.
    • Discuss how to train a collaborative filtering approach.

Design an API Rate Limiter system for GitHub or Firebase sites.

API Rate Limiters limit the API calls that a service receives in a given time period for avoiding request overload. This question can start with the coding algorithm on a single machine to the distributed network.

  • What are some of the Required Features?
    • What is the required request count per hour or second? Let us assume that the requirement can be 10 requests per second.
    • Should the limiter notify the user if the requests are blocked?
    • The limiter should handle traffic suitable according to the scale.
  • What are some of the common problems encountered?
    • How to measure the requests per given time?
    • How to design the rate limiter for the distributed systems when compared to a local system?
  • Possible tips for consideration:
    • Evaluate the usage of sliding time windows for avoiding hourly resets.
    • Try using a counter integer instead of a request for saving space.

How do you design global file storage and file sharing services like Google Drive, Dropbox etc?

Design a file or image hosting service that allows users to upload, store, share, delete, and download files or images on their servers and provides synchronization across various devices.

  • What are some of the Required Features?
    • Users should be able to upload, delete, share and download files over the web.
    • File updates should be synced across multiple devices.
    • The system should support storing large files up to a GB.
  • What are some of the common problems encountered?
    • Where to store the files?
    • How can you handle updates? Should the files be re-uploaded or does just the modified version has to be updated?
    • How to handle updation of two documents at the same time?
  • Possible tips for consideration:
    • Consider using chunking for splitting files into multiple sections for supporting re-uploads of a particular section rather than the whole file.
    • Make use of cloud storage for storing the files.

Design a type-ahead search engine service.

This service partially completes the search queries by displaying n number of suggestions for completing the query that the user intended to search.

  • What are some of the Required Features?
    • Service has to match partial queries with popularly searched queries.
    • The system has to display n number of suggestions (say 5, for example) based on the written query.
    • The suggestions have to be updated based on the query updation.
    • Approach to storing previous search queries
    •  Real-time requirement of the system
    • Approach to keep the data fresh.
    • Approach to find the best matches to the already typed string
    •  Queries per second are to be handled by the system.
    •  Criteria for choosing the suggestions.
    •   A total number of data to be stored.
    • Approach to find the best matches to the already typed string
  • What are some of the common problems encountered?
    • How to update the suggestions without much latency?
    • How to determine the most likely suggestion?
    • Are the suggestions adapting to the user’s search results?
    • When do the suggestions appear? Is it updated on the fly or once the user stops writing?
  • Possible tips for consideration:
    • Evaluate the usage of natural language processing for anticipating the next characters.
    • Markov chain rule for ranking the probabilities of top queries.

Design Netflix/Youtube.

Design a video streaming service like Youtube/Netflix where users can upload/view/search videos. The service should be scalable where a large number of users can watch and share the videos simultaneously. It will be storing and transmitting petabytes and petabytes of data. 

Netflix is a video streaming service.

  • What are some of the Required Features?
    • Uninterrupted video streaming to be made available for the users.
    • Likes and reviews of videos.
    • Recommend new videos.
    • Support high traffic of users.
    • Adding comments on videos in real-time.
    • Approach to record stats about videos e.g. the total number of views, up-votes/down-votes, etc.
  • What are some of the common problems encountered?
    • Is it acceptable to have lags while uploading videos?
    • What happens if many users are accessing the same video concurrently?
  • Possible tips for consideration:
    • Make use of cloud technology to store and transmit video data
    • There are three components of Netflix: OC (Content Delivery Network), Backend database, Client device for accessing the application.

Design a traffic control system.

Generally, in a traffic control system, we see that the lights transition from RED To GREEN, GREEN to ORANGE and then to RED.

  • What are some of the Required Features?
    • Transition traffic lights based on the conventions.
  • What are some of the common problems encountered?
    • Determine the time interval for which the state of the traffic lights has to change.
    • What happens in worst-case scenarios where the state is wrongly shown?
  • Possible tips for consideration:
    • Make use of state design patterns and scheduling algorithms for the transition of the state from one colour to another.

Design Web Crawler.

The Web crawler is a search engine-related service like Google, DuckDuckGo and is used for indexing website contents over the Internet for making them available for every result.

  • What are some of the Required Features?
    • Design and develop a Scalable service for collecting information from the entire web and fetching millions of web documents.
    • Fresh data has to be fetched for every search query.
  • What are some of the common problems encountered?
    • How to handle the updates when users are typing very fast?
    • How to prioritize dynamically changing web pages?
  • Possible tips for consideration:
    • Look into URL Frontier Architecture for implementing this system.
    • Know how crawling is different from scraping.

Design ATM system.

ATMs are used for depositing and withdrawing money from customers. It is also useful for checking the account balance.

  • What are some of the required features?
    • Each user should have at least one bank account that is linked to the card for performing transactions.
    • ATM to authenticate the user based on 4 digit PIN associated with the card.
    • User to perform only one transaction at a given time.
  • What are some of the common problems encountered?
    • What happens during transaction timeout?
    • What happens if the money is deducted from the bank account but the user hasn't received it from the machine?
  • Possible tips for consideration:
    • Divide the problem into different entities like Card, Card Reader etc and establish a relationship between each of the entities.

Design Uber, Ola or Lyft type of systems.

These platforms help user request rides and the driver picks them up from the location and drop them at the destination selected by the user.

  • What are some of the required features?
    • Real-time service for booking rides
    • Should have the capability of assigning rides that lets the user reach the destination fast.
    • Show the ETA (Estimated Time of Arrival) of the driver after booking the ride and once the ride has been started, show the ETA of the vehicle arriving at the destination.
  • What are some of the common problems encountered?
    • How to store geographical locations for drivers always on move?
    • How to assign drivers to the customers efficiently?
    • How do you calculate the ETA of the driver arrival or the destination arrival?
  • Possible tips for consideration:
    • Make use of the microservices concept with fast databases for booking rides faster.
    • Evaluate Dispatch System for assigning drivers to the users.

 

No comments:

Post a Comment