System design interviews have become a critical component of the hiring process at top tech companies, from Google and Amazon to Microsoft and Indian product companies like Flipkart and Zomato . Whether you’re a fresher or experienced professional, mastering system design is essential for landing roles at these companies.
2025 System Design Trends
System design interviews are now common even for fresher positions at product companies. Companies want to assess your ability to think at scale and design systems that can handle real-world challenges. Start preparing early!
A system design interview evaluates your ability to:
Design scalable, reliable, and efficient software systems
Think about trade-offs and constraints
Communicate complex technical concepts
Solve real-world problems at scale
Understand distributed systems principles
For Companies:
Assess architectural thinking and problem-solving skills
Evaluate understanding of scalability and performance
Test knowledge of distributed systems
Identify candidates who can design production-ready systems
For Candidates:
Demonstrate real-world problem-solving ability
Show understanding beyond coding to system architecture
Prove readiness for senior roles or complex projects
Stand out in competitive hiring processes
FAANG Companies:
Typically for L4+ roles (mid-level and above)
Sometimes for L3 roles (entry-level with experience)
Usually 1-2 rounds of system design interviews
Indian Product Companies:
Increasingly common for fresher positions
Standard for SDE-2 and above roles
Often 1 round focusing on practical problems
Service-Based Companies:
Less common, but growing
Usually for senior roles or specialized positions
Focus on simpler, practical systems
URL Shortener
Difficulty: Beginner
Examples: bit.ly, TinyURL
Key Concepts: Hashing, Database design, Caching
Scale: 100M URLs/day
Chat Application
Difficulty: Intermediate
Examples: WhatsApp, Slack
Key Concepts: Real-time messaging, WebSockets, Message queues
Scale: 50M active users
Notification System
Difficulty: Intermediate
Examples: Push notifications, Email system
Key Concepts: Message queues, Rate limiting, Delivery guarantees
Scale: 1B notifications/day
Rate Limiter
Difficulty: Intermediate
Examples: API rate limiting
Key Concepts: Sliding window, Token bucket, Distributed systems
Scale: 1M requests/second
1. Video Streaming Service (Netflix, YouTube)
Video storage and delivery
CDN integration
Adaptive bitrate streaming
Recommendation system
Scale: 100M+ users, petabytes of video
2. Social Media Feed (Twitter, Instagram)
Feed generation (pull vs push)
Real-time updates
Content ranking algorithms
Media storage
Scale: 500M+ users, millions of posts/day
3. Ride-Sharing Service (Uber, Ola)
Real-time location tracking
Driver-passenger matching
Route optimization
Payment processing
Scale: Millions of rides/day
4. Search Engine (Google)
Web crawling
Indexing
Ranking algorithms
Distributed search
Scale: Billions of web pages
5. Distributed Cache (Redis, Memcached)
Cache eviction policies
Consistency models
Distributed caching
Cache invalidation
Scale: Millions of requests/second
Ask Clarifying Questions:
Functional Requirements:
What are the core features?
What are the must-have vs nice-to-have features?
Who are the users?
What are the use cases?
Non-Functional Requirements:
What is the expected scale? (users, requests, data)
What are the latency requirements?
What are the availability requirements?
What are the consistency requirements?
Constraints:
What are the technical constraints?
What are the business constraints?
What is the timeline?
Example Questions:
“How many users do we expect?”
“What’s the read-to-write ratio?”
“What are the latency requirements?”
“Do we need strong consistency or eventual consistency?”
Define the Interface:
What endpoints do we need?
What are the request/response formats?
What are the error cases?
Example for URL Shortener:
Request: { "longUrl": "https://example.com/very/long/url" }
Response: { "shortUrl": "https://short.ly/abc123" }
Response: Redirect to longUrl (301/302)
Traffic Estimates:
Requests per second (RPS)
Peak traffic (2-3x average)
Read vs write ratio
Storage Estimates:
Data size per entity
Total storage needed
Growth rate
Bandwidth Estimates:
Incoming data
Outgoing data
Network requirements
Example Calculation:
Daily Active Users (DAU): 20M (20%)
Requests per user per day: 10
Requests per second: 200M / (24 * 3600) ≈ 2,300 RPS
Peak RPS: 2,300 * 3 ≈ 7,000 RPS
Draw the Big Picture:
Client layer (mobile, web)
Application servers
Database layer
Caching layer
CDN (if needed)
Load balancers
Key Components:
Client : Mobile apps, web browsers
Load Balancer : Distribute traffic
Application Servers : Business logic
Database : Data storage
Cache : Fast data access
CDN : Static content delivery
Message Queue : Async processing
Database Design:
Schema design
Database type (SQL vs NoSQL)
Indexing strategy
Sharding strategy
Caching Strategy:
What to cache?
Cache eviction policy (LRU, LFU)
Cache invalidation
Cache location (in-memory, distributed)
Load Balancing:
Algorithm (round-robin, least connections, consistent hashing)
Health checks
Session persistence
Example: URL Shortener Database
- id ( bigint , primary key )
- short_code ( varchar ( 10 ), unique index )
- expires_at ( timestamp , nullable)
- user_id ( bigint , foreign key )
Horizontal Scaling:
Add more application servers
Database replication (read replicas)
Database sharding/partitioning
Optimization Techniques:
Caching frequently accessed data
CDN for static content
Database indexing
Asynchronous processing
Pre-computation
Handling Bottlenecks:
Database: Read replicas, caching, sharding
Application servers: Load balancing, horizontal scaling
Network: CDN, compression
Storage: Compression, archiving old data
Common Trade-offs:
Consistency vs Availability (CAP Theorem):
CP (Consistency + Partition tolerance) : Strong consistency, may sacrifice availability
AP (Availability + Partition tolerance) : High availability, eventual consistency
CA (Consistency + Availability) : Not possible in distributed systems
Latency vs Throughput:
Optimize for low latency: More caching, pre-computation
Optimize for high throughput: Batch processing, async operations
Cost vs Performance:
More servers = better performance but higher cost
Caching = better performance but memory cost
CDN = better performance but bandwidth cost
Complexity vs Scalability:
Simple design = easier to maintain but may not scale
Complex design = better scalability but harder to maintain
Common Bottlenecks:
Database queries (slow queries, missing indexes)
Network latency (geographic distribution)
Single points of failure
Synchronous operations
Large data transfers
Optimization Strategies:
Database: Indexing, query optimization, read replicas
Caching: Frequently accessed data
CDN: Static content delivery
Async processing: Background jobs
Compression: Reduce data transfer size
Vertical Scaling (Scale Up):
Increase resources of existing server (CPU, RAM, storage)
Pros: Simple, no code changes
Cons: Limited by hardware, expensive, single point of failure
Horizontal Scaling (Scale Out):
Add more servers
Pros: Unlimited scaling, cost-effective, fault-tolerant
Cons: Requires load balancing, distributed systems complexity
Types:
Round Robin : Distribute requests sequentially
Least Connections : Route to server with fewest connections
IP Hash : Route based on client IP
Consistent Hashing : Distribute based on hash of key
Load Balancer Types:
Hardware Load Balancer : Dedicated hardware (expensive)
Software Load Balancer : Software-based (HAProxy, Nginx)
Cloud Load Balancer : Managed service (AWS ELB, GCP LB)
Cache Levels:
Browser Cache : Client-side caching
CDN Cache : Edge server caching
Application Cache : In-memory cache (Redis, Memcached)
Database Cache : Query result caching
Cache Strategies:
Cache-Aside : Application checks cache, loads from DB if miss
Write-Through : Write to cache and DB simultaneously
Write-Behind : Write to cache, async write to DB
Refresh-Ahead : Proactively refresh cache before expiration
Eviction Policies:
LRU (Least Recently Used) : Evict least recently accessed
LFU (Least Frequently Used) : Evict least frequently accessed
FIFO (First In First Out) : Evict oldest entry
TTL (Time To Live) : Evict after expiration time
SQL vs NoSQL:
SQL (Relational):
Use when: Structured data, ACID transactions, complex queries
Examples: MySQL, PostgreSQL
Pros: ACID guarantees, complex queries, mature
Cons: Hard to scale horizontally, schema rigidity
NoSQL:
Document Store: MongoDB (flexible schema, JSON documents)
Key-Value: Redis, DynamoDB (simple, fast)
Column Store: Cassandra, HBase (wide columns, time-series)
Graph: Neo4j (relationships, social networks)
Database Scaling:
Read Replicas: Multiple read-only copies
Sharding: Partition data across multiple databases
Partitioning: Split large tables into smaller ones
Purpose:
Decouple services
Handle async processing
Buffer traffic spikes
Ensure message delivery
Examples:
RabbitMQ : General-purpose message broker
Apache Kafka : High-throughput, distributed streaming
Amazon SQS : Managed message queue service
Redis Pub/Sub : Simple pub/sub messaging
Use Cases:
Email notifications
Image processing
Data analytics
Event-driven architecture
Purpose:
Deliver static content from edge servers
Reduce latency
Reduce origin server load
Improve user experience
How it Works:
User requests content
Request routed to nearest edge server
If cached, return immediately
If not cached, fetch from origin and cache
Use Cases:
Static assets (images, CSS, JS)
Video streaming
Large file downloads
Global content delivery
Characteristics:
Loosely coupled services
Independently deployable
Service-specific databases
Inter-service communication (REST, gRPC, message queues)
Pros:
Scalability (scale services independently)
Technology diversity
Fault isolation
Team autonomy
Cons:
Increased complexity
Network latency
Data consistency challenges
Operational overhead
Pattern:
Services communicate via events
Event producers and consumers
Event bus/message broker
Asynchronous processing
Use Cases:
Real-time notifications
Data synchronization
Workflow orchestration
Event sourcing
Purpose:
Single entry point for clients
Request routing
Authentication/authorization
Rate limiting
Request/response transformation
Benefits:
Simplified client code
Centralized cross-cutting concerns
Service abstraction
Load balancing
Strategy:
Partition data across multiple databases
Shard key determines partition
Horizontal scaling
Distributed queries
Sharding Strategies:
Range-based: Partition by value ranges
Hash-based: Partition by hash of key
Directory-based: Lookup table for shard mapping
Challenges:
Cross-shard queries
Rebalancing
Hot spots
Transaction management
Google:
Large-scale distributed systems
Search and indexing
MapReduce, BigTable concepts
Consistency models
Focus: Scalability, reliability, innovation
Amazon:
E-commerce systems
AWS services knowledge
High availability
Microservices architecture
Focus: Practical scalability, AWS integration
Microsoft:
Cloud services (Azure)
Enterprise systems
Distributed systems
Focus: Cloud architecture, enterprise scale
Meta:
Social media systems
Real-time systems
Graph databases
Focus: Real-time updates, social graphs
Apple:
Consumer products
Privacy and security
High-quality user experience
Focus: User experience, security
Flipkart:
E-commerce systems
Recommendation systems
Inventory management
Focus: Practical e-commerce problems
Zomato/Swiggy:
Food delivery systems
Real-time tracking
Route optimization
Focus: Logistics, real-time systems
Paytm/Razorpay:
Payment systems
Fraud detection
High availability
Focus: Financial systems, security
Zoho:
SaaS systems
Multi-tenancy
Scalable SaaS architecture
Focus: SaaS patterns, multi-tenancy
Fundamentals (Weeks 1-2)
Learn basic concepts (load balancing, caching, databases)
Understand scalability principles
Study CAP theorem
Learn about distributed systems basics
Core Concepts (Weeks 3-4)
Deep dive into databases (SQL vs NoSQL, sharding, replication)
Study caching strategies
Learn about message queues
Understand CDN and content delivery
Practice Simple Systems (Weeks 5-6)
Design URL shortener
Design pastebin
Design rate limiter
Design counter service
Practice Intermediate Systems (Weeks 7-8)
Design chat application
Design notification system
Design file storage system
Design search autocomplete
Practice Advanced Systems (Weeks 9-10)
Design video streaming service
Design social media feed
Design ride-sharing service
Design search engine
Mock Interviews (Weeks 11-12)
Practice with peers
Get feedback
Refine approach
Build confidence
Books
Designing Data-Intensive Applications by Martin Kleppmann (Must-read)
System Design Interview by Alex Xu
High Performance Browser Networking by Ilya Grigorik
Online Courses
Grokking the System Design Interview (Educative.io)
System Design Primer (GitHub)
System Design Course by Gaurav Sen (YouTube)
Practice Platforms
LeetCode System Design section
Pramp (Mock interviews)
InterviewBit (System design problems)
Engineering Blogs
High Scalability (Real-world architectures)
Netflix Tech Blog
Uber Engineering Blog
Google Cloud Architecture
1. Start Simple:
Begin with basic systems (URL shortener, pastebin)
Focus on understanding concepts
Don’t jump to complex systems immediately
2. Draw Diagrams:
Practice drawing clear architecture diagrams
Use standard symbols and notations
Keep diagrams organized and readable
3. Think Out Loud:
Explain your thought process
Ask clarifying questions
Discuss trade-offs
Show your reasoning
4. Study Real Systems:
Read about how companies built their systems
Understand their design decisions
Learn from their mistakes and optimizations
5. Mock Interviews:
Practice with peers or mentors
Get feedback on your approach
Improve communication skills
Build confidence
Mistake: Start designing without clarifying requirements
Fix: Always ask clarifying questions first
Impact: May design wrong system or miss important requirements
Mistake: Design without considering scale
Fix: Always estimate capacity and discuss constraints
Impact: Design may not scale or be over-engineered
Mistake: Present solution without discussing alternatives
Fix: Always discuss pros/cons and trade-offs
Impact: Shows lack of deep understanding
Mistake: Add unnecessary complexity
Fix: Start simple, add complexity only when needed
Impact: Harder to explain, may confuse interviewer
Mistake: Not explaining thought process clearly
Fix: Think out loud, explain reasoning
Impact: Interviewer can’t follow your thinking
Mistake: Focus only on functional requirements
Fix: Discuss scalability, reliability, availability
Impact: Design may not meet real-world needs
Mistake: Only verbal explanation
Fix: Always draw architecture diagrams
Impact: Harder to visualize and understand
Functional Requirements:
Shorten long URLs
Redirect short URLs to long URLs
URLs should expire after some time (optional)
Users can customize short URLs (optional)
Non-Functional Requirements:
High availability
Low latency (redirect should be fast)
Short URLs should be as short as possible
System should handle 100M URLs/day
Scale:
100M URLs created per day
100:1 read-to-write ratio
URLs stored for 5 years
Average URL length: 100 characters
Traffic:
100M URLs/day = 1,160 URLs/second
Read-to-write ratio: 100:1
Reads: 116,000 reads/second
Peak traffic: 3x average = 348,000 reads/second
Storage:
100M URLs/day * 365 days * 5 years = 182.5B URLs
Each URL: ~500 bytes (with metadata)
Total storage: 182.5B * 500 bytes = 91.25 TB
Bandwidth:
Write: 1,160 URLs/sec * 500 bytes = 580 KB/sec
Read: 116,000 URLs/sec * 500 bytes = 58 MB/sec
Client → Load Balancer → Application Servers → Database
Components:
Load Balancer: Distribute traffic
Application Servers: Handle requests
Database: Store URL mappings
Cache: Store frequently accessed URLs
Schema:
- id ( bigint , primary key , auto- increment)
- short_code ( varchar ( 10 ), unique index )
- expires_at ( timestamp , nullable)
- user_id ( bigint , nullable, foreign key )
Encoding Short URLs:
Base62 encoding (a-z, A-Z, 0-9)
6 characters = 62^6 = 56.8 billion unique URLs
Generate unique code: Hash long URL or use counter
URL Shortening Flow:
Client sends long URL
Application server generates short code
Store mapping in database
Return short URL to client
URL Redirection Flow:
Client requests short URL
Check cache first
If cache miss, query database
Store in cache for future requests
Return 301/302 redirect
Scaling:
Database: Shard by short_code hash
Cache: Distributed cache (Redis cluster)
Load Balancer: Multiple load balancers
Application Servers: Horizontal scaling
Caching: Cache 20% of URLs (80/20 rule)
Database: Read replicas for reads
CDN: For static assets
Pre-generate: Pre-generate short codes
1. Think Out Loud:
Explain your thought process
Show how you’re reasoning
Ask questions when stuck
2. Use Clear Language:
Avoid jargon unless necessary
Explain technical terms
Use analogies when helpful
3. Draw Diagrams:
Use clear, organized diagrams
Label components
Show data flow
Update diagram as you refine design
Typical 45-60 minute interview:
Requirements (5-10 min)
High-level design (10-15 min)
Detailed design (15-20 min)
Scaling and optimization (10-15 min)
Q&A and discussion (5-10 min)
Tips:
Don’t spend too much time on one aspect
Keep moving forward
Come back to details if time permits
When Requirements Are Unclear:
Ask clarifying questions
Make reasonable assumptions
State your assumptions clearly
Be ready to adjust based on feedback
When You Don’t Know Something:
Admit you don’t know
Explain what you do know
Suggest how you’d find out
Show willingness to learn
Do freshers need to prepare for system design interviews? Yes, increasingly so. While system design interviews were traditionally for senior roles, many product companies (especially Indian companies like Flipkart, Zomato, Paytm) now include system design rounds for fresher positions. Even if not required, understanding system design concepts makes you a stronger candidate and helps in technical discussions. Start with fundamentals and practice simple systems.
How long does it take to prepare for system design interviews? For freshers: 2-3 months of consistent preparation (2-3 hours/day). For experienced developers: 1-2 months. The key is understanding concepts deeply rather than memorizing solutions. Focus on: Learning fundamentals (2-3 weeks), Practicing common questions (4-6 weeks), Mock interviews (2-3 weeks). Consistency and practice are more important than duration.
What if I don’t know the answer to a system design question? It’s okay not to know everything. The interview is about your approach and problem-solving process, not having perfect answers. Steps to take: Ask clarifying questions, Break down the problem, Start with what you know, Make reasonable assumptions, Think about similar systems you know, Discuss trade-offs, Show your reasoning. Interviewers value clear thinking and communication over perfect solutions.
Should I memorize system designs for common questions? No, don’t memorize. Instead: Understand the concepts and principles, Learn the approach and methodology, Practice applying concepts to different problems, Study real-world system designs to understand trade-offs. Memorization won’t help when you get a new question. Understanding concepts allows you to design any system. Focus on the “why” behind design decisions, not just the “what”.
What tools should I use for drawing system design diagrams? For interviews: Whiteboard or paper (most common), Online whiteboards (Miro, Excalidraw, draw.io), Digital drawing tools (iPad with Apple Pencil). For practice: draw.io (free, web-based), Lucidchart (professional diagrams), Whimsical (simple, clean diagrams), Figma (design tool, good for diagrams). The tool doesn’t matter as much as clear, organized diagrams. Practice drawing by hand for interviews.
How important is knowledge of specific technologies (Redis, Kafka, etc.)? Understanding concepts is more important than specific technologies. However, knowing popular tools helps: Shows real-world experience, Helps in detailed discussions, Demonstrates practical knowledge. Focus on: Understanding the problem each tool solves, When to use what tool, Trade-offs between alternatives. You don’t need deep implementation knowledge, but understanding use cases and characteristics is valuable.
System design interviews are a crucial part of the hiring process at top tech companies. Whether you’re targeting Google , Amazon , Microsoft , or Indian product companies like Flipkart and Zomato , mastering system design will significantly improve your chances of success.
Key Takeaways:
System design interviews test architectural thinking and problem-solving
Follow a structured approach: clarify requirements, estimate capacity, design, scale, optimize
Understand core concepts: scalability, load balancing, caching, databases, message queues
Practice common questions but focus on understanding concepts, not memorizing solutions
Communication and clear thinking are as important as technical knowledge
Start preparing early, especially if you’re a fresher
Next Steps:
Learn system design fundamentals
Practice common system design questions
Study real-world system architectures
Practice drawing clear diagrams
Do mock interviews to build confidence
Ready to master system design? Combine system design preparation with placement paper practice from top companies to maximize your placement success in 2025-2026.
Author: Piyush Shekhar
Published: November 11, 2025