├── README.md ├── resources ├── 1_ipkeWQ_Lb0lbkhB8rigxTA.png ├── a.txt └── javacollections.png └── system-design-topics.md /README.md: -------------------------------------------------------------------------------- 1 | ## Technical Interview Preparation 2 | 3 | #### Basics 4 | - Big O notation [[1]](https://www.interviewcake.com/article/java/big-o-notation-time-and-space-complexity) 5 | - [Big O cheatsheet](https://www.bigocheatsheet.com/) 6 | - Linear and Binary Search 7 | - [https://github.com/kdn251/interviews](https://github.com/kdn251/interviews) - Quick Refresher 8 | 9 | #### Data Structures 10 | - [Data Structures BaseCS Medium](https://medium.com/basecs/tagged/data-structures) 11 | - Arrays and Lists [[1]](https://medium.com/basecs/whats-a-linked-list-anyway-part-1-d8b7e6508b9d) 12 | - Linked List [[1]](https://medium.com/basecs/whats-a-linked-list-anyway-part-2-131d96f71996) 13 | - Strings [[1]](https://www.geeksforgeeks.org/string-data-structure/) 14 | - Stack & Queue [[1]](https://medium.com/basecs/stacks-and-overflows-dbcf7854dc67) [[2]](https://medium.com/basecs/to-queue-or-not-to-queue-2653bcde5b04) 15 | - Hash Table & Hash Set [[1]](https://medium.com/basecs/taking-hash-tables-off-the-shelf-139cbf4752f0) [[2]](https://medium.com/basecs/hashing-out-hash-functions-ea5dd8beb4dd) 16 | - Heap [[1]](https://medium.com/basecs/learning-to-love-heaps-cef2b273a238) [[2]](https://www.geeksforgeeks.org/heap-data-structure/) 17 | - Graphs [[1]](https://medium.com/basecs/a-gentle-introduction-to-graph-theory-77969829ead8) 18 | - Binary Tree & Binary Search Tree [[1]](https://medium.com/basecs/how-to-not-be-stumped-by-trees-5f36208f68a7) [[2]](https://medium.com/basecs/leaf-it-up-to-binary-trees-11001aaf746d) 19 | - Trie [[1]](https://medium.com/basecs/trying-to-understand-tries-3ec6bede0014) 20 | 21 | 22 | 23 | #### Sorting 24 | - Sorting Animation https://www.hackerearth.com/practice/algorithms/sorting/merge-sort/visualize/ 25 | - [Sorting Algorithms GeeksForGeeks](https://www.geeksforgeeks.org/sorting-algorithms/) 26 | - [5 Sorting algorithms with Python](https://medium.com/@george.seif94/a-tour-of-the-top-5-sorting-algorithms-with-python-code-43ea9aa02889) 27 | 28 | 29 | ![Time Complexities](resources/1_ipkeWQ_Lb0lbkhB8rigxTA.png) 30 | 31 | 32 | #### Algorithms 33 | - Searching https://www.hackerearth.com/practice/algorithms/searching/linear-search/tutorial/ 34 | - Graph Algorithms (BFS, DFS, MST, etc) https://www.hackerearth.com/practice/algorithms/graphs/breadth-first-search/tutorial/ 35 | - Selection Algorithm 36 | - Recursion 37 | - Longest increasing subsequence 38 | - Dynamic Programming https://www.hackerearth.com/practice/algorithms/dynamic-programming/introduction-to-dynamic-programming-1/tutorial/ 39 | - https://github.com/keon/algorithms 40 | - Algorithms implemented in Python: https://github.com/TheAlgorithms/Python 41 | - LRU cache working https://www.interviewcake.com/concept/java/lru-cache 42 | 43 | 44 | #### Must Read Java 45 | - Garbage collection https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html 46 | - Multi-Threading https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html 47 | - Collections https://dzone.com/articles/an-introduction-to-the-java-collections-framework 48 | - New in Java 8 https://www.journaldev.com/2389/java-8-features-with-examples 49 | - Lambdas https://www.oreilly.com/learning/whats-new-in-java-8-lambdas 50 | - Official Documentation https://docs.oracle.com/javase/tutorial/index.html 51 | - Syncronized 52 | 53 | 54 | #### Python 55 | - Time complexities of operations in Python https://wiki.python.org/moin/TimeComplexity 56 | - Performance tips https://wiki.python.org/moin/PythonSpeed/PerformanceTips 57 | - Python Tips https://book.pythontips.com/en/latest/index.html 58 | - Design and History FAQ https://docs.python.org/3.7/faq/design.html 59 | - List implementation http://www.laurentluce.com/posts/python-list-implementation/ 60 | - Concurrency in Python - Superfast Python - https://superfastpython.com/learning-paths/ 61 | 62 | #### Books 63 | - [Cracking the coding interview](https://amzn.to/34wxaxM) 64 | - [Elements of programming interviews](https://amzn.to/2HVPIxU) 65 | - [Algorithms](https://amzn.to/34xiE96) 66 | - Online resource - Handbook - https://techinterviewhandbook.org/introduction/ 67 | - Staff engineers path - [Buy on Amazon](https://amzn.to/4bwEMCF) 68 | - Software reliability engineers by Google - https://sre.google/books/ 69 | - Software engineering at Google - [Buy on Amazon](https://amzn.to/3UDJbfH) 70 | - Designing Data-intensive applications [PDF](https://github.com/G33kzD3n/Catalogue), [Buy on Amazon](https://amzn.to/4aavv1r) 71 | - Code Simplicity [PDF](https://github.com/G33kzD3n/Catalogue), [Buy on Amazon](https://amzn.to/44wPru9) 72 | - System Design Interview by Alex Hu [PDF](https://github.com/G33kzD3n/Catalogue), [Buy on Amazon](https://amzn.to/3Uw0lLZ) 73 | 74 | 75 | #### Coding Questions 76 | - https://leetcode.com/list/xi4ci4ig/ (Blind 75 leetcode - must do) 77 | - https://techinterviewhandbook.org/best-practice-questions/ (Only top 50 of Blind 75) 78 | - https://www.toptal.com/java/interview-questions 79 | - https://www.interviewcake.com/ 80 | - https://leetcode.com/explore/ 81 | - https://hackernoon.com/50-data-structure-and-algorithms-interview-questions-for-programmers-b4b1ac61f5b0 82 | - https://www.java67.com/2013/07/15-advanced-core-java-interview-questions-answers-senior-experienced-5-6-years-programmers-developers.html 83 | ------------------------------------- 84 | 85 | ### System Design 86 | - https://sourcemaking.com/design-patterns-and-tips 87 | - https://github.com/binhnguyennus/awesome-scalability (Best) 88 | - https://github.com/checkcheckzz/system-design-interview 89 | - http://highscalability.com/all-time-favorites/ 90 | - https://github.com/donnemartin/system-design-primer 91 | - [System Design Questions LeetCode](https://leetcode.com/discuss/interview-question/system-design/?currentPage=1&orderBy=recent_activity&query=) 92 | - CAP Theorem illustrated https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/ 93 | - Distributed Consensus http://thesecretlivesofdata.com/raft/ 94 | - Raft https://codeburst.io/making-sense-of-the-raft-distributed-consensus-algorithm-part-1-3ecf90b0b361 95 | - Design Patterns Catalog (Good) https://refactoring.guru/design-patterns/catalog 96 | - Low level designs https://github.com/InterviewReady/Low-Level-Design/tree/main?tab=readme-ov-file 97 | - https://vutr.substack.com/ 98 | - https://github.com/systemdesign42/system-design/ 99 | 100 | 101 | ### Database: 102 | - SQL vs NoSQL 103 | - https://www.xplenty.com/blog/the-sql-vs-nosql-difference/ 104 | - https://www.mongodb.com/nosql-explained/nosql-vs-sql 105 | - https://towardsdatascience.com/datastore-choices-sql-vs-nosql-database-ebec24d56106 106 | - ACID properties https://www.geeksforgeeks.org/acid-properties-in-dbms/ 107 | - Normal Forms https://www.guru99.com/database-normalization.html 108 | - Database Index https://www.freecodecamp.org/news/database-indexing-at-a-glance-bb50809d48bd/ 109 | - Interview Questions https://www.interviewbit.com/sql-interview-questions/ 110 | - Interview Questions https://www.interviewcake.com/article/java/sql 111 | - Database indexes and query slowness https://use-the-index-luke.com/ (best) 112 | - Database Internals [Free PDF](https://github.com/G33kzD3n/Catalogue/tree/master), [Amazon](https://amzn.to/4a66fJI) 113 | 114 | ### Data Engineering 115 | - https://github.com/DataExpert-io/data-engineer-handbook?tab=readme-ov-file 116 | - 117 | 118 | 119 | ### Example System Architectures 120 | - Pastebin service https://nlogn.in/designing-pastebin-service-system-design-nlogn/ 121 | - Twitter Timeline 122 | - https://www.geeksforgeeks.org/design-twitter-a-system-design-interview-question/ 123 | - https://github.com/donnemartin/system-design-primer/blob/master/solutions/system_design/twitter/README.md 124 | - https://medium.com/@narengowda/system-design-for-twitter-e737284afc95 125 | - https://www.interviewbit.com/old/problems/design-twitter/ 126 | - News Feed https://medium.com/@bansal_ankur/design-a-news-feed-system-6bf42e9f03fb 127 | - URL shortener https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 128 | - Instagram https://www.educative.io/courses/grokking-the-system-design-interview/m2yDVZnQ8lG 129 | - Chat System https://bytebytego.com/courses/system-design-interview/design-a-chat-system 130 | 131 | 132 | ### Coding practice 133 | - https://www.hackerearth.com/practice/ 134 | - https://www.hackerrank.com/dashboard 135 | - https://leetcode.com/problemset/algorithms/?page=1 136 | 137 | 138 | ### Others: 139 | - Company coding tests https://www.hackerearth.com/practice/interviews/ 140 | - Brush up the concepts https://www.interviewcake.com/ go to Glossary 141 | - 142 | 143 | 144 | ### Blogs 145 | - [Engineering Organizations tech blogs](https://github.com/anuragrana/Engineering-Tech-Blogs/blob/main/README.md) 146 | 147 | 148 | ------------ 149 | ### Contribution 150 | You can contribute by expanding the list or by updating any broken link. 151 | Please create a [pull request](https://github.com/anuragrana/technical-interview-prep/pulls) or [issue](https://github.com/anuragrana/technical-interview-prep/issues). 152 | 153 | -------------------------------------------------------------------------------- /resources/1_ipkeWQ_Lb0lbkhB8rigxTA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anuragrana/technical-interview-prep/068589c2f7dd3c8ea88029dccb9ed9db9808460c/resources/1_ipkeWQ_Lb0lbkhB8rigxTA.png -------------------------------------------------------------------------------- /resources/a.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/javacollections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anuragrana/technical-interview-prep/068589c2f7dd3c8ea88029dccb9ed9db9808460c/resources/javacollections.png -------------------------------------------------------------------------------- /system-design-topics.md: -------------------------------------------------------------------------------- 1 | ### System Design Topics 2 | 3 | #### HLD 4 | - Network Protocols (Client Server, UDP, TCP, P2P) 5 | - CAP Theorem 6 | - Microservices Design Patterns Part-1 | Introduction and Decomposition Pattern 7 | - Microservices Design Patterns Part-2 || SAGA Pattern, Strangler Pattern, CQRS 8 | - Scale from zero to million users 9 | - Consistent Hashing 10 | - Design URL shortening service like tinyurl 11 | - Back-Of-The-Envelope Estimation for System Design Interview 12 | - Design a Key-Value Store || Dynamo DB 13 | - SQL vs NoSQL 14 | - Whatsapp System Design 15 | - Design Rate Limiter 16 | - Design Idempotent POST API || Handle Duplicate Request by Idempotency Handler 17 | - Design High Availability System || Active Passive & Active Active Architecture 18 | - Distributed Messaging Queue | Design Messaging Queue like Kafka, RabbitMQ 19 | - Proxy vs Reverse Proxy 20 | - Load Balancer and Different Algorithms 21 | - Distributed Cache and Caching Strategies - Part1 | Cache-Aside, Read-Through 22 | - Distributed Cache and Caching Strategies - Part2 | Write-Around, Write-Through 23 | - Handling Distributed Transactions - Part1 | 2PC (Two Phase Commit) 24 | - Handling Distributed Transactions - Part2 | 3PC (Three Phase Commit) and SAGA 25 | - Database Indexing - Part1 | B+ Tree and Data Page Understanding 26 | - Database Indexing - Part2 | Clustered and Non Clustered Indexing 27 | - Distributed Concurrency Control - Part1 | Isolation Level 28 | - Distributed Concurrency Control - Part2 | Optimistic & Pessimistic Concurrency 29 | - Two Phase Locking (2PL) - Part1 | Basic 2PL 30 | - Two Phase Locking (2PL) - Part2 | Deadlock Prevention Strategies 31 | - Two Phase Locking (2PL) - Part3 | Cascading Abort and its prevention 32 | - OAuth 2.0 expalined 33 | - Symmetric & Asymmetric Encryption (Part1) with Example of AES, Diffie-Hellman 34 | - Symmetric & Asymmetric Encryption (Part2) 35 | - JWT (Part1) - JSON Web Token 36 | - JWT (Part2) - JSON Web Token 37 | 38 | 39 | 40 | #### LLD 41 | ##### Basics: 42 | - Solid Principals 43 | - Liskov Substitution Principle with Example 44 | 45 | ##### Behavioural design patterns 46 | - Strategy Design Pattern 47 | - Observer Design Pattern 48 | - State design pattern using vending machine example 49 | - Chain Of Responsibility Design Pattern With Logging Example 50 | - Command Design Pattern with Undo/Redo Functionality Example 51 | - Template Method Design Pattern 52 | - Memento Design Pattern 53 | - Interpreter Design Pattern 54 | - Mediator Design Pattern with Online Auction Example 55 | - Iterator Design Pattern 56 | - Null Object Design Pattern 57 | 58 | ##### Structural design patterns: 59 | - Decorator Design Pattern 60 | - Composite design pattern 61 | - Adapter Design Pattern 62 | - Facade Design Pattern 63 | - Proxy Design Pattern 64 | - Bridge Design Pattern 65 | - Flyweight Design Pattern 66 | 67 | ##### Creational Design Pattern: 68 | - Factory and Abstract Factory Design pattern 69 | - Builder Design Pattern 70 | 71 | 72 | #### INTERVIEW QUESTIONS 73 | - LLD of Splitwise 74 | - LLD of BookMyShow 75 | - Design Parking Lot - LLD 76 | - LLD of Cricbuzz app 77 | - Design ATM - LLD 78 | - LLD of Elevator System 79 | - Design Tic Tac Toe 80 | - LLD of Snake n Ladder 81 | - LLD of Inventory Management System 82 | - LLD of Apply Coupons on Shopping Cart 83 | - LLD of Car Rental System 84 | - MVC Architecture Pattern 85 | - LLD of Payment Gateway (Part1) | Sequence Diagram 86 | - LLD of Payment Gateway (Part2) | Class Diagram and Java Code 87 | 88 | 89 | --------------------------------------------------------------------------------