system-design-interview

Blog Cover Image
Client-Server Model or Architecture

The client-server architecture is a distributed application framework consisting of clients and servers in which the server hosts, manages, and delivers the client’s services. Here clients are connected to a central server, and they communicate over a network or internet connection through a computer network.

Blog Cover Image
Youtube System Design

YouTube is a frequently used social networking platform for video sharing and advertising. It is a widely used service, so our system should be cost efficient, highly available, scalable, and reliable. It should offer low latency and high throughput. This blog will focus on youtube system design and discussion around various components.

Blog Cover Image
Design Key-Value Store

A key-value database is a non-relational database that stores data using a simple key-value mechanism. Data is stored in a key-value database to collect key-value pairs, with a key serving as a unique identifier. Both keys and values can be any object, from simple to complex compound objects.

Blog Cover Image
Types of Load Balancing Algorithms

Load balancers can receive and distribute requests to a particular server based on various load balancing techniques. These techniques use different algorithms to select servers based on a specific configuration. These algorithms are categorized into two parts: Static load balancing, 2) Dynamic load balancing

Blog Cover Image
What is the Latency of a System?

Latency is an essential concept that determines how fast the data transfers from the client to the server and back to the client. The lower the Latency, the better the performance. This blog will focus on the conceptual understanding of Latency, how it impacts the system's performance, and measures to improve Latency.

Blog Cover Image
Caching: System Design Concept

In this blog, we will learn about Caching, an important fundamental concept in system design. Have you ever experienced that when you open a website the first time, it takes more time than usual, but when you open the same website again, it takes no time to load? Do you know why this happens? Let's find out!

Blog Cover Image
Availability: System Design Concept

Availability is the percentage of time in a given period that a system is available to perform its task and function under normal conditions. One way to look at it is how resistant a system is to failures. High Availability comes with its own tradeoffs, such as higher latency or lower throughput.

Blog Cover Image
Throughput: System Design Concept

Throughput is defined as the total number of items processed per unit of time or the rate at which something is produced. It is generally represented as the number of bits transmitted per second or HTTP operations per day. In this blog, we’ll be talking about the importance of Throughput in designing any system.

Blog Cover Image
Process Management in Operating System (OS)

Process management involves executing various tasks such as creating processes, scheduling processes, managing deadlock, and termination of processes. It is the responsibility of the operating system to manage all the running processes of the system. In this blog, we will learn about process management and various algorithms related to it.

Blog Cover Image
Least Frequently Used (LFU) Cache Implementation

The least frequently used (LFU) is a cache algorithm used to manage memory within a computer. In this method, the system keeps track of the number of times a block is referenced in memory, and when the cache is full, our system removes the item with the lowest reference frequency.

Blog Cover Image
Key-Value Database in System Design

A key-value database is a non-relational database (NoSQL) that stores data using a simple key-value mechanism. Its structure is similar to maps or dictionaries, where each key is associated with one value only. The simplicity of this model makes a key-value database fast, easy to use, scalable, portable, and flexible.

Blog Cover Image
System Design Concepts for Interview Preparation

System design is one of the critical topics that large tech companies ask about during the interview. On the other hand, it is also necessary for solving large-scale software problems. This blog will help you get familiar with concepts important for solving system design questions and learning system design at an advanced level.

Blog Cover Image
Database Partitioning (Sharding) in System Design

Data Partition(Sharding) is a technique of dividing the data into independent components. It is a way of partitioning data into smaller pieces so that data can be easily accessed and managed. Partitioning is the backbone of modern distributed database management systems, which helps to improve scalability, manageability, and availability of the system.

Blog Cover Image
Load Balancer in System Design

Load balancing is essential for building high-performance and scalable applications. It is also a popular topic for system design interviews. In terms of definition: a load balancer is a software or a hardware device that sits between clients and servers to balance the workload. It saves servers from overloading and increases system throughput.

Blog Cover Image
Design WhatsApp Messenger: System Design Interview Question

Whatsapp is a social messenger platform, which allows users to send messages to each other. It is a messaging system that is widely used throughout the globe. Here in this blog, we’ll be discussing WhatsApp’s generic architecture and which could also be used as a base for designing any such chat application. So let’s get started by discussing the key requirements of our service.

Blog Cover Image
Typeahead or Autocomplete System Design

As users type their search query, the Typeahead feature guesses the rest of a word and offers the top suggestions that begin with whatever they have written. Here frequency and recentness of a query are used to sort suggestions. Autocomplete is used by many search platforms like Facebook, Instagram, Google, etc.

Blog Cover Image
Designing Google Docs - System Design Interview Question

Google Docs is an online word processor that is part of Google’s free, web-based Google Docs Editors package. It is a massive system with tons of features. If you spend a few minutes thinking about how Google Docs is built and how it works, you may realize that it is much more complex than it seems to be. Without any much delay let’s see how Google Docs work :)

Blog Cover Image
Designing Dropbox - System Design Interview Question

Dropbox is a cloud storage service that allows users to store their data on remote servers. The remote servers store files durably and securely, and these files are accessible anywhere with an Internet connection.

Blog Cover Image
Designing Instagram: System Design Interview Question

Instagram is a photo and video-sharing social media platform that allows users to share their creations with others. The original poster can set the visibility of these posts (photos/videos) to private or public. Posts can be liked and commented on by users. Users can follow and see the news feeds of other users (a collection of posts from the users they are following).

Blog Cover Image
Designing Twitter: System Design Interview Question

Twitter is a social media platform where users may post and interact with “tweets.” Users submit and engage with “tweets” on Twitter, a microblogging and social networking site. Users can subscribe to other users’ feeds and receive tweet notifications from those they follow. Tweets are almost 140–280 character communications.

Blog Cover Image
Designing Notification Service: System Design Interview Question

In today’s world, notification services are widely employed in almost every product. They’re helpful if you’d like to be alerted of a price change or availability of a product you’re interested in, or if you’d want to be told if a new job specification for a job search criterion you’ve provided becomes available.

Blog Cover Image
Designing Yelp (Nearby Friends Service): System Design Interview Question

Design a Yelp like service, where users can search for nearby places like restaurants, theaters, or shopping malls, etc., and can also add/view reviews of places.

Blog Cover Image
Designing QR Code Generator: System Design Interview Question

QR code payment is one of the contactless payment methods to transfer funds from the buyer’s wallet to the seller’s wallet or account. here Payment is performed by QR code at POS from the mobile app.

Blog Cover Image
Designing API Rate Limiter: System Design Interview Question

At its most basic level, a rate limiter restricts the number of events a certain object (person, device, IP, etc.) can do in a given time range. A rate limiter, in general, restricts the number of requests a sender can send in a given period of time. Once the cap is reached, Rate Limiter blocks requests.

Blog Cover Image
Designing Uber: System Design Interview Question

Uber continues to improve its operations and services by deploying and developing new services to meet market demand, find the best and most efficient routes, detect any potential fraud, provide more customer-centric services, and monitor and update data to provide the most efficient real-time services. In this blog, we’ll be looking at how to design the Uber system.

Blog Cover Image
MapReduce in Hadoop: System Design Concept

MapReduce is a batch processing programming paradigm that enables massive scalability across a large number of servers in a Hadoop cluster. It was published in 2004, was called “the algorithm that makes Google so massively scalable.” MapReduce is a relatively low-level programming model compared to the parallel processing systems developed for data warehouses many years previously.

Blog Cover Image
Designing Web Crawler: System Design Interview Question

A web crawler is a system for downloading, storing, and analyzing web pages. It is one of the main components of web search engines that compile a collection of web pages, index it, and allow users to issue index queries and find web pages that match queries.

Blog Cover Image
Leader Election in Distributed Systems: System Design Concept

The objective of leader election is to provide one item (a process, host, thread, object, or human) specific powers in a distributed system. These specific abilities could include the capacity to delegate tasks, the ability to edit data, or even the responsibility for managing all system requests.

Blog Cover Image
How to Choose the Right Database?

Databases are a critical component of the world’s most complex technology systems, and how they are used has a significant impact on their performance, scalability, and consistency. Because this is an essential topic with many moving components, hence in this article, we’ve outlined the most crucial database topics that you’ll need to know during a system design interview.

Blog Cover Image
Throttling and Rate Limiting: System Design Concept

At its most basic level, a rate limiter restricts the number of events a certain object (person, device, IP, etc.) can do in a given time range. In general, a rate limiter caps how many requests a sender can issue in a specific time window. Rate Limiter then blocks requests once the cap is reached.

Blog Cover Image
What are Peer-to-Peer (P2P) Networks?

In the common client-server architecture, multiple clients will communicate with a central server. A peer-to-peer (P2P) architecture consists of a decentralized network of peers, which are nodes that can act as both clients and servers. Without a central server's need, P2P networks distribute workload among peers, and all peers contribute and consume resources within the network.

Blog Cover Image
Long Polling in System Design

Polling is a technique that allows the servers to push information to a client. Long polling is a version of traditional polling that allows the server to send data to a client whenever available. It involves the Client requesting information from the server in the same way that standard polling does, but with the caveat that the server may not respond right away. A complete answer is delivered to the Client once the data is accessible.

Blog Cover Image
What are Web Sockets? - System Design Concept

While building any Web Application, one needs to consider what kind of delivery mechanism would be best. The web has been built around the HTTP's request and response paradigm. However, such a paradigm faces the overhead problem of HTTP, and as a result, they are not suitable for low latency applications. In this blog, we focus on Web-Sockets, which are vital components behind the applications like multiplayer games or any application that rely on real-time data transfer. In this blog, we tried to give a complete insight into Web-Socket, how it works, and its key components. So without any much delay, let's look at what Web-Sockets are :)

Blog Cover Image
CAP Theorem in DBMS: System Design Concept

CAP Theorem is an essential concept in distributed systems for designing networked shared data systems. It allows a distributed database system to have only two of these functionalities: Consistency, Availability, and Partition Tolerance. We can make trade-offs between the three available functionalities based on the unique use case for our system.

Blog Cover Image
Server Sent Events: System Design Concept

Whenever we build any Web Application dealing with real-time data, we need to consider delivering data to the Client. While building such a Web Application type, one needs to consider the best delivery mechanism, right! We are presenting a series of three concept blogs focusing on data transfer between clients and servers. In this blog, we are focusing on Server-Sent Events, and here, we will give you a complete insight into its internal working and the underlying features.

Blog Cover Image
What are Proxies in System Design?

In computer networking, a proxy is a server that acts as an intermediary between a client and another server. In this blog, we discussed: What is a proxy server? How do proxy serves work? What are proxies used for? What are forward and reverse proxies?

Blog Cover Image
Designing URL Shortening Service like TinyURL

Design a tiny-URL service. Tiny-URL is a URL-shortening web service that creates shorter aliases for long URLs. Whenever the user visits the short URL, he/she will be redirected to the original URL. The goal is to design a highly scalable service that could allow users to create shorter URLs, given long URLs, and have read and write functionality.

Blog Cover Image
Consistent Hashing: System Design Concept

Consistent Hashing is the most widely used concept in a distributed system as it offers considerable flexibility in the scaling of the application. This blog discusses the key concepts and approaches which comes in handy while scaling out the distributed storage system. Consistent Hashing is beneficial and frequently applied to solving various system related challenges and is quite helpful in System Design Interviews.

Blog Cover Image
Distributed Systems

Distributed systems are crucial in designing fault-tolerant, highly scalable, and low latency services. This blog will introduce you to the fundamentals of distributed systems, their functioning, and how they are applicable in real-world scenarios.

Blog Cover Image
Network Protocols

A network can be defined as a group of computers and other devices connected in some ways to exchange data. It is one of the critical system design concepts to learn.

Blog Cover Image
Pastebin System Design

Have you ever thought of any such service that could make our life easier by allowing us to store data over the internet and simultaneously allow others to access the same data? If it is so, then this is the perfect blog for you. Here, in this blog, we'll be discussing the PasteBin System. Here, the aim is to design a highly scalable service that could allow users to paste various content (images, text, etc.) over the internet and allow others to access the pasted content. So let's look at the formal definition of PasteBin.

Blog Cover Image
How to Approach System Design Interview?

The system design interview is an open-ended conversation. As a candidate, we are expected to lead it along with a discussion with the interviewer.

Our weekly newsletter

Subscribe to get free weekly content on data structure and algorithms, machine learning, system design, oops design and mathematics.