Study guide to prepare for technical interviews. Feel free to contribute and help improve the repo!
- Overview
- High level overview of architecture questions / concepts
- RDBMS vs. NoSQL
- Row store vs. Column store
- Hadoop vs. NoSQL
- Common types of NoSQL
- Basic frontend terms and concepts
- HTML and CSS specific frontend interview questions
- What is a hash table?
- What are hash collisions?
- Open Addressing
- Linear and Quadratic Probing
- Separate Chaining – Robin Hood Hashing – Cuckoo Hashing
- HTTP headers
- Request methods
- Cookies
- JavaScript: Basics and Tricky Questions
- Node / Express / Readline / FS / Stream / etc.
- What is OOP?
- Why OOP?
- Key Concepts
- Pointers
- Memory Allocation
- Mutex vs. Semaphore
- Thread locking
- High-level thoughts
- Bubble sort
- Selection sort vs. Insertion sort
- Quick sort
- Merge sort
- Heap sort
- Bucket sort
- Radix sort
- Why is Quicksort preferred?
- More basic concepts before reading the architecture section
- Example questions
- CheatSheet - System Design
- How would you design a URL Shortner?
- What really happens when you navigate to a URL
- What is a web crawler?
- How does it work?
- Speeding up your website
- What is WebSocket?
- Contrast to other alternatives
- Resources
- HTTP vs. HTTPS
- XSS vs. CSRF
- Web server vs. Application server
- Cookie / SessionStorage / LocalStorage
- Cookies vs. Tokens
Feel free to work on any of these and make a pull request!
- API Design and Webhooks
- Topological Sort, Dijkstra's Algorithm, Priority Queue
- Rabin-Karp Substring Search
- AVL Trees / Self-balancing BST
- Red-Black Trees
- MapReduce
- Bellman-Ford Algorithm
- Floyd-Warshall Algorithm
- Minimum Spanning Trees
To fix a bug or create a feature, follow these steps:
- Fork the repo
- Create a new branch (
git checkout -b awesome-feature
) - Make changes or add new changes.
- Commit your changes (
git add -A; git commit -m 'Awesome new feature'
) - Push to the branch (
git push origin awesome-feature
) - Create a Pull Request!
Please click here to report an issue or request a new feature.
... or simply star the repo!