# Sunil Notebook

## Notebook

- [Notebook](https://blog.sunilgudivada.dev/notebook/readme.md): The Evolving Notebook: Daily Knowledge on Data Structures, Algorithms, and System Design
- [What is this about ?](https://blog.sunilgudivada.dev/notebook/readme/what-is-this-about.md)
- [Key Concepts](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts.md)
- [Scalability](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/scalability.md)
- [Latency Vs Throughput](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/latency-vs-throughput.md)
- [Databases](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/databases.md)
- [CAP Theorem](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/cap-theorem.md)
- [ACID Transactions](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/acid-transactions.md)
- [Rate limiting](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/rate-limiting.md)
- [API Design](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/api-design.md)
- [Strong Vs eventual consistency](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/strong-vs-eventual-consistency.md)
- [Distributed tracing](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/distributed-tracing.md)
- [Synchronous Vs asynchronous Communication](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/synchronous-vs-asynchronous-communication.md)
- [Batch Processing Vs Stream Processing](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/batch-processing-vs-stream-processing.md)
- [Fault Tolerance](https://blog.sunilgudivada.dev/notebook/system-design/key-concepts/fault-tolerance.md)
- [Building Blocks](https://blog.sunilgudivada.dev/notebook/system-design/building-blocks.md)
- [Message](https://blog.sunilgudivada.dev/notebook/system-design/building-blocks/message.md)
- [Cache](https://blog.sunilgudivada.dev/notebook/system-design/building-blocks/cache.md)
- [Load Balancer Vs API Gateway](https://blog.sunilgudivada.dev/notebook/system-design/building-blocks/load-balancer-vs-api-gateway.md)
- [Introduction to system design](https://blog.sunilgudivada.dev/notebook/system-design/introduction-to-system-design.md)
- [Step By Step Guide](https://blog.sunilgudivada.dev/notebook/system-design/step-by-step-guide.md)
- [Emerging Technologies in System Design](https://blog.sunilgudivada.dev/notebook/system-design/emerging-technologies-in-system-design.md)
- [System design component checklist](https://blog.sunilgudivada.dev/notebook/system-design/system-design-component-checklist.md)
- [Azure](https://blog.sunilgudivada.dev/notebook/system-design/system-design-component-checklist/azure.md)
- [AWS](https://blog.sunilgudivada.dev/notebook/system-design/system-design-component-checklist/aws.md)
- [Google Cloud](https://blog.sunilgudivada.dev/notebook/system-design/system-design-component-checklist/google-cloud.md)
- [LinkedIn feed Design](https://blog.sunilgudivada.dev/notebook/system-design/linkedin-feed-design.md)
- [Scalable Emoji Broadcasting System - Hotstar](https://blog.sunilgudivada.dev/notebook/system-design/scalable-emoji-broadcasting-system-hotstar.md): Hotstar first introduced Sports Bar in 2019. In the world cup 2019, 5 Billion Emojis from 55.83 Million users during the ICC Cricket World Cup 2019.
- [UPI Payment System Design](https://blog.sunilgudivada.dev/notebook/system-design/upi-payment-system-design.md): As per the recent data from the economic times, In 2023 number of UPI transactions are around 117.6 Billion transactions with total value of 182 lakh crore.
- [Stock Broker System Design - Groww](https://blog.sunilgudivada.dev/notebook/system-design/stock-broker-system-design-groww.md)
- [Designing Instagram's Collaborative Content Creation - Close Friends Only](https://blog.sunilgudivada.dev/notebook/system-design/designing-instagrams-collaborative-content-creation-close-friends-only.md)
- [Vending Machines - Over the air Systems](https://blog.sunilgudivada.dev/notebook/system-design/vending-machines-over-the-air-systems.md)
- [Reference Links](https://blog.sunilgudivada.dev/notebook/system-design/reference-links.md)
- [Topics](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics.md)
- [Introduction](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/introduction.md)
- [Algorithm analysis](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/algorithm-analysis.md)
- [Asymptotic Notation](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/algorithm-analysis/time-complexity.md)
- [Memory](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/algorithm-analysis/memory.md)
- [Sorting](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting.md)
- [Selection Sort](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/selection-sort.md)
- [Insertion Sort](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/insertion-sort.md)
- [Merge Sort](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/merge-sort.md)
- [Quick Sort](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/quick-sort.md)
- [Quick'3 Sort](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/quick3-sort.md)
- [Shell Sort](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/shell-sort.md)
- [Shuffle sort](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/shuffle-sort.md)
- [Heap Sort](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/heap-sort.md)
- [Arrays.sort()](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/arrays.sort.md)
- [Key Points](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/key-points.md)
- [Problems](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/problems.md)
- [Reorder Log files](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/sorting/problems/reorder-log-files.md): https://leetcode.com/problems/reorder-data-in-log-files/
- [Stacks and Queues](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/stacks-and-queues.md)
- [Stack Implementations](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/stacks-and-queues/stack-implementations.md)
- [Queue Implementations](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/stacks-and-queues/queue-implementations.md)
- [Priority Queues](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/stacks-and-queues/priority-queues.md)
- [Problems](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/stacks-and-queues/problems.md)
- [Dijkstra's two-stack algorithm](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/stacks-and-queues/problems/dijkstras-two-stack-algorithm.md)
- [Binary Search Tree](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/binary-search-tree.md)
- [Left Leaning Red Black Tree](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/binary-search-tree/red-black-tree.md)
- [Java Implementations](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/binary-search-tree/red-black-tree/java-implementations.md)
- [2-3 Tree](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/binary-search-tree/2-3-tree.md)
- [Search Operation - 2-3 Tree](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/binary-search-tree/2-3-tree/search-operation-2-3-tree.md)
- [Insert Operation - 2-3 Tree](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/binary-search-tree/2-3-tree/insert-operation-2-3-tree.md)
- [Geometric Applications of BST](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/binary-search-tree/geometric-applications-of-bst.md)
- [B-Tree](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/b-tree.md)
- [Graphs](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/graphs.md)
- [Undirected Graphs](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/graphs/undirected-graphs.md)
- [Directed Graphs](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/graphs/directed-graphs.md)
- [Topological Sort](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/graphs/topological-sort.md)
- [Union Find](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/union-find-data-structure.md)
- [Dynamic Connectivity](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/union-find-data-structure/dynamic-connectivity.md)
- [Quick Find - Eager Approach](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/union-find-data-structure/quick-find-eager-approach.md)
- [Quick Find - Lazy Approach](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/union-find-data-structure/quick-find-lazy-approach.md)
- [Defects](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/union-find-data-structure/defects.md)
- [Weighted Quick Union](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/union-find-data-structure/weighted-quick-union.md)
- [Quick Union + path comparison](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/union-find-data-structure/quick-union-+-path-comparison.md)
- [Amortized Analysis](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/union-find-data-structure/amortized-analysis.md)
- [Convex Hull](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/convex-hull.md)
- [Binary Heaps and Priority Queue](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/binary-heaps-and-priority-queue.md)
- [Hash Table vs Binary Search Trees](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/hash-table-vs-binary-search-trees.md)
- [Introduction](https://blog.sunilgudivada.dev/notebook/concurrency-and-multithreading/multi-threading.md)
- [Visibility Problem](https://blog.sunilgudivada.dev/notebook/concurrency-and-multithreading/visibility-problem.md)
- [Interview Questions](https://blog.sunilgudivada.dev/notebook/concurrency-and-multithreading/interview-questions.md)
- [References](https://blog.sunilgudivada.dev/notebook/concurrency-and-multithreading/references.md)
- [System design](https://blog.sunilgudivada.dev/notebook/concurrency-and-multithreading/references/system-design.md)
- [Introduction](https://blog.sunilgudivada.dev/notebook/design-patterns/introduction.md)
- [Classification of patterns](https://blog.sunilgudivada.dev/notebook/design-patterns/classification-of-patterns.md)
- [Structural Design Patterns](https://blog.sunilgudivada.dev/notebook/design-patterns/structural-design-patterns.md)
- [Adapter Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/structural-design-patterns/adapter-design-pattern.md)
- [Bridge Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/structural-design-patterns/bridge-design-pattern.md)
- [Composite Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/structural-design-patterns/composite-design-pattern.md)
- [Decorator Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/structural-design-patterns/decorator-design-pattern.md)
- [Facade Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/structural-design-patterns/facade-design-pattern.md)
- [Flyweight Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/structural-design-patterns/flyweight-design-pattern.md)
- [Private Class Data Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/structural-design-patterns/private-class-data-design-pattern.md)
- [Proxy Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/structural-design-patterns/proxy-design-pattern.md)
- [Behavioral Design Patterns](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns.md)
- [Chain Of Responsibility](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns/chain-of-responsibility.md)
- [Command Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns/command-design-pattern.md)
- [Interpreter Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns/interpreter-design-pattern.md)
- [Iterator Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns/iterator-design-pattern.md)
- [Mediator Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns/mediator-design-pattern.md)
- [Memento Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns/memento-design-pattern.md)
- [Null Object Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns/null-object-design-pattern.md)
- [Observer Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns/observer-design-pattern.md): Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
- [State Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns/state-design-pattern.md)
- [Strategy Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns/strategy-design-pattern.md): lets the algorithm vary independently from clients that use it
- [Template Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/behavioral-design-patterns/template-design-pattern.md)
- [Creational Design Patterns](https://blog.sunilgudivada.dev/notebook/design-patterns/creational-design-patterns.md)
- [Abstract Factory Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/creational-design-patterns/abstract-factory-design-pattern.md)
- [Builder Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/creational-design-patterns/builder-design-pattern.md)
- [Factory Method Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/creational-design-patterns/factory-method-design-pattern.md): Design pattern that provides an interface for creating objects in a superclass, but allows subclasses to alter the type of objects that will be created.
- [Object Pool Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/creational-design-patterns/object-pool-design-pattern.md)
- [Prototype Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/creational-design-patterns/prototype-design-pattern.md)
- [Singleton Design Pattern](https://blog.sunilgudivada.dev/notebook/design-patterns/creational-design-patterns/singleton-design-pattern.md)
- [Java Pass by Value or Pass by Reference](https://blog.sunilgudivada.dev/notebook/design-patterns/java-pass-by-value-or-pass-by-reference.md)
- [Read Me](https://blog.sunilgudivada.dev/notebook/designing-data-intensive-applications-oreilly/designing-data-intensive-applications-oreilly.md)
- [Reliable, Scalable, and Maintainable Applications](https://blog.sunilgudivada.dev/notebook/designing-data-intensive-applications-oreilly/1.-reliable-scalable-and-maintainable-applications.md)
- [Reliability](https://blog.sunilgudivada.dev/notebook/designing-data-intensive-applications-oreilly/1.-reliable-scalable-and-maintainable-applications/reliability.md): Tolerating hardware & software faults human error
- [Scalability](https://blog.sunilgudivada.dev/notebook/designing-data-intensive-applications-oreilly/1.-reliable-scalable-and-maintainable-applications/scalability.md): Measuring load & Performance latency, percentiles throughput
- [Maintainability](https://blog.sunilgudivada.dev/notebook/designing-data-intensive-applications-oreilly/1.-reliable-scalable-and-maintainable-applications/maintainability.md): Operability simplicity & evolvability
- [References](https://blog.sunilgudivada.dev/notebook/designing-data-intensive-applications-oreilly/1.-reliable-scalable-and-maintainable-applications/references.md)
- [Data Models and Query Languages](https://blog.sunilgudivada.dev/notebook/designing-data-intensive-applications-oreilly/data-models-and-query-languages.md)
- [Read me](https://blog.sunilgudivada.dev/notebook/designing-data-intensive-applications-oreilly/data-models-and-query-languages/read-me.md)
- [References](https://blog.sunilgudivada.dev/notebook/designing-data-intensive-applications-oreilly/data-models-and-query-languages/references.md)
- [Miscellaneous](https://blog.sunilgudivada.dev/notebook/designing-data-intensive-applications-oreilly/miscellaneous.md)
- [Disclaimer](https://blog.sunilgudivada.dev/notebook/preparation-manual/disclaimer.md)
- [What is it all about?](https://blog.sunilgudivada.dev/notebook/preparation-manual/what-is-it-all-about.md): Systematic plan for cracking any coding interview
- [About a bunch of links](https://blog.sunilgudivada.dev/notebook/preparation-manual/about-a-bunch-of-links.md)
- [Before you start preparing](https://blog.sunilgudivada.dev/notebook/preparation-manual/before-you-start-preparing.md)
- [Algorithms and Coding](https://blog.sunilgudivada.dev/notebook/preparation-manual/algorithms-and-coding.md): Priority: P0
- [Concurrency and Multithreading](https://blog.sunilgudivada.dev/notebook/preparation-manual/concurrency-and-multithreading.md): Priority: P1
- [Programming Language and Fundementals](https://blog.sunilgudivada.dev/notebook/preparation-manual/programming-language-and-fundementals.md)
- [Best Practices and Experience](https://blog.sunilgudivada.dev/notebook/preparation-manual/best-practices-and-experience.md): Best practices, seniority, philosophy of professional growth.
- [NLP Tasks](https://blog.sunilgudivada.dev/notebook/transformers-and-llms/nlp-tasks.md)
- [Tokenization](https://blog.sunilgudivada.dev/notebook/transformers-and-llms/tokenization.md)
- [Token Represenation](https://blog.sunilgudivada.dev/notebook/transformers-and-llms/token-represenation.md)
- [RNNs](https://blog.sunilgudivada.dev/notebook/transformers-and-llms/rnns.md)
- [Transformers](https://blog.sunilgudivada.dev/notebook/transformers-and-llms/transformers.md)
- [Typescript Guidelines](https://blog.sunilgudivada.dev/notebook/web-applications/typescript-guidelines.md)
- [Research Papers](https://blog.sunilgudivada.dev/notebook/paper/research-papers.md)
- [Real-Time Data Infrastructure at Uber](https://blog.sunilgudivada.dev/notebook/paper/research-papers/real-time-data-infrastructure-at-uber.md)
- [Scaling Memcache at Facebook](https://blog.sunilgudivada.dev/notebook/paper/research-papers/scaling-memcache-at-facebook.md)
- [Important links for preparation](https://blog.sunilgudivada.dev/notebook/interview-questions/important-links-for-preparation.md)
- [Google Interview Questions](https://blog.sunilgudivada.dev/notebook/interview-questions/google-interview-questions.md)
- [L4](https://blog.sunilgudivada.dev/notebook/interview-questions/google-interview-questions/l4.md)
- [Phone Interview Questions](https://blog.sunilgudivada.dev/notebook/interview-questions/google-interview-questions/l4/phone-interview-questions.md)
- [L3](https://blog.sunilgudivada.dev/notebook/interview-questions/google-interview-questions/l3.md)
- [Interview Questions](https://blog.sunilgudivada.dev/notebook/interview-questions/google-interview-questions/l3/interview-questions.md)
- [Phone Screen Questions](https://blog.sunilgudivada.dev/notebook/interview-questions/google-interview-questions/phone-screen-questions.md)
- [90 Days Preparation Schedule](https://blog.sunilgudivada.dev/notebook/miscellaneous/90-days-preparation-schedule.md): This is the preparation schedule for the people preparing for SDE 2 or more. This will cover wide range of topics from Data Structures and algorithms, System design
- [My Preparation for Tech Giants](https://blog.sunilgudivada.dev/notebook/miscellaneous/my-preparation-for-tech-giants.md)
- [Top Product Based Companies](https://blog.sunilgudivada.dev/notebook/miscellaneous/top-product-based-companies.md)
