# 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)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information, you can query the documentation dynamically by asking a question.
Perform an HTTP GET request on a page URL with the `ask` query parameter:
```
GET https://blog.sunilgudivada.dev/notebook/readme.md?ask=<question>
```
The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.
Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
