Requirements
- You need to know at least one programming language
- You need to know data structures and algorithms
- You need to have basic knowledge on networks, databases and cloud computing
Features
- Essential knowledge and problem solving for any System Design job interview part
- Essential knowledge on networks, databases, and cloud computing
- Problem solving for data structures and specific system design
- Learn exactly what you need to know
- Learn only what you need to know
Target audiences
- Software Engineers and Developers
- Software and Solution Architects
- Any technical-oriented person going to a job interview
Learn exactly what you need to know and only what you need to know for any System Design job interview part.
Test your acquired skills with 5 specialized quizzes, each with 20 single and multi-choice questions. Then check the answers and the detailed focused explanations. Go through the referenced links to learn more.
(1) Networking
- URL parts, browsers, HTTP request-response
- DNS lookup, cache, record types
- HTML rendering, browser engines, CORS/JSONP/XSS…
- SSL/TLS handshake, TCP handshake, TCP vs UDP
- HTTP GET/POST, PUT/POST/PATCH verbs in RESTful APIs
- OSI layers, network protocols, CIDR
(2) Databases
- data-oriented systems, SMP/MPP/EPP
- NoSQL stores, CAP Theorem, ACID vs BASE
- replication, eventual vs strong consistency
- NoSQL, sharding, partition and sort keys
- data formats, Map-Reduce steps
- distributed two-Phase Commit protocol
- table constraints, referential integrity, UDFs vs stored procedures
- read anomalies, isolation levels, optimistic/pessimistic locks
- SQL injection
(3) Cloud Computing
- throughput vs latency, high availability, horizontal scale
- architecture styles, event-driven vs messaging, streaming
- retry/throttling patterns, API rate limiter, proxies, DDoS
- load balancers, fault-tolerant system, CDNs
- Docker, deployments
- RBAC, encryption, data in transit/at rest
- SSL/TLS certificates, OAuth
(4) Data Structures
- singly vs doubly linked lists
- queue vs stack, circular queue, queue with stacks, heap vs stack
- enumerator vs iterator
- hash table with collisions
- trie
- heap, priority queue
- LRU cache, LFU cache, caching strategies
- closures, pointers, smart pointer, garbage collection
- asynchronous vs multi-threading programming
- consistent hashing
(5) Design Problems
- real-time recommendations (with graph databases)
- tiny URL (compression algorithms)
- autocomplete system (with trie)
- web crawler (with no infinite loops)
- parking lot problem (object-oriented design)
- chat server (with web sockets)
- in-memory file system (with Composite pattern)
- search engine (components)
- file publishing (with JSON/XML file)
- Twitter (interview questions)
- summarization (with scale)
- Instagram (with sharding)
- Dropbox (with file chunks)
- Ad widget (with timezone)
- garbage collector (for zombie objects)
- API rate limiter
- Uber (with ETA estimates)
- state machine use cases
- Pastebin (database size estimates)
- Estimated numbers