Monday, December 23, 2024

Google Engineer’s Guide for Cracking Software Engineering Interviews

Must read

1. Single Responsibility: Each class should have only one job.
2. Open/Closed: Classes should be extendable without being modified.
3. Liskov Substitution: Subclasses should be replaceable with their parent classes.
4. Interface Segregation: Prefer small, specific interfaces over general ones.
5. Dependency Inversion: Rely on abstractions rather than specific implementations.

1. Backtracking Patterns: https://leetcode.com/problems/permutations/solutions/18239/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partioning)/
2. Bit Manipulation Patterns:
https://leetcode.com/discuss/study-guide/4282051/all-types-of-patterns-for-bits-manipulations-and-how-to-use-it
3. Dynamic Programming Patterns 1:
https://leetcode.com/discuss/study-guide/458695/Dynamic-Programming-Patterns
4. DFS + BFS Patterns (2):
https://medium.com/leetcode-patterns/leetcode-pattern-2-dfs-bfs-25-of-the-problems-part-2-a5b269597f52
5. Tree Patterns:
https://leetcode.com/discuss/study-guide/937307/Iterative-or-Recursive-or-DFS-and-BFS-Tree-Traversal-or-In-Pre-Post-and-LevelOrder-or-Views
6. Sliding Window Patterns:
https://leetcode.com/problems/frequency-of-the-most-frequent-element/solutions/1175088/C++-Maximum-Sliding-Window-Cheatsheet-Template/
7. Two Pointers Patterns:
https://leetcode.com/discuss/study-guide/1688903/Solved-all-two-pointers-problems-in-100-days
8. DFS + BFS Patterns (1):
https://medium.com/leetcode-patterns/leetcode-pattern-1-bfs-dfs-25-of-the-problems-part-1-519450a84353
9. Graph Patterns:
https://leetcode.com/discuss/study-guide/655708/Graph-For-Beginners-Problems-or-Pattern-or-Sample-Solutions
10. Monotonic Stack Patterns:
https://leetcode.com/discuss/study-guide/2347639/A-comprehensive-guide-and-template-for-monotonic-stack-based-problems
11. Substring Problem Patterns:
https://leetcode.com/problems/minimum-window-substring/solutions/26808/Here-is-a-10-line-template-that-can-solve-most-‘substring’-problems/
12. Backtracking Patterns:
https://medium.com/leetcode-patterns/leetcode-pattern-3-backtracking-5d9e5a03dc26
13. Dynamic Programming Patterns 2:
https://leetcode.com/discuss/study-guide/1437879/Dynamic-Programming-Patterns
14. Binary Search Patterns:
https://leetcode.com/discuss/study-guide/786126/Python-Powerful-Ultimate-Binary-Search-Template.-Solved-many-problems
15. String Question Patterns:
https://leetcode.com/discuss/study-guide/2001789/Collections-of-Important-String-questions-Pattern
16. 14 Coding Interview Patterns:
https://hackernoon.com/14-patterns-to-ace-any-coding-interview-question-c5bb3357f6ed

1. Scalability: https://blog.algomaster.io/p/scalability
2. Latency vs Throughput:
https://aws.amazon.com/compare/the-difference-between-throughput-and-latency/
3. CAP Theorem:
https://www.bmc.com/blogs/cap-theorem/
4. ACID Transactions:
https://redis.io/glossary/acid-transactions/
5. Rate Limiting:
https://www.imperva.com/learn/application-security/rate-limiting/
6. API Design:
https://blog.wahab2.com/api-architecture-best-practices-for-designing-rest-apis-bf907025f5f?gi=d6ec53528d6c
7. Strong vs Eventual Consistency:
https://hackernoon.com/eventual-vs-strong-consistency-in-distributed-databases-282fdad37cf7
8. Distributed Tracing:
https://www.dynatrace.com/news/blog/what-is-distributed-tracing/
9. Synchronous vs Asynchronous Communications:
https://www.techtarget.com/searchapparchitecture/tip/Synchronous-vs-asynchronous-communication-The-differences
10. Batch Processing vs Stream Processing:
https://atlan.com/batch-processing-vs-stream-processing/
11. Fault Tolerance:
https://www.cockroachlabs.com/blog/what-is-fault-tolerance/

1. Atomicity: Transactions are indivisible units; they either fully succeed or completely fail.
2. Consistency: Each transaction must maintain the database’s consistency.
3. Isolation: Transactions should execute independently without affecting each other.
4. Durability: Once a transaction is finalized, it must persist even through system failures.

Latest article