This repo contains links of resources, theory subjects content and DSA questions & their solution for interview preparation from different websites like geeksforgeeks, leetcode, etc.
[![Contributors][contributors-sachu]][contributors-url]
[![Forks][forks-sachu]][forks-url]
[![Stargazers][stars-sachu]][stars-url]
[![Issues][issues-sachu]][issues-url]
[![MIT License][license-sachu]][license-url]
[![LinkedIn][linkedin-sachu]][linkedin-url]
[![Portfolio][portfolio-sachu]][portfolio-url]

# DATA STRUCTURES & ALGORITHMS

`Resources and Solutions` `^_^`

<!-- I am _Sachin Verma_ a student of Netaji Subhas Institute of Technology, Delhi,
an aspiring **Web Developer** and **Competitive Programmer**. -->

I have compiled many useful links for **Data Structures and Algorithms** questions and their solutions.  
I have also listed the **Theory Subjects**, which are often **ignored** by students but one must have a vast knowledge of them to help them in their interviews.  
I have also included the **Placement Ready Roadmap**, from `beginner level -> interview-ready candidate`

<!-- My coding handles:
`codeforces` [specialist](https://codeforces.com/profile/sachuverma)
`leetcode` [2000+ | Knight](https://leetcode.com/anjali-mc)
`codechef` [4 star]()

My social media handles:
[LinkedIn](https://www.linkedin.com/in/sachuverma/)
[Instagram](https://www.instagram.com/sachuverma_/) -->

#### Table of Contents

- [DATA STRUCTURES & ALGORITHMS](#data-structures--algorithms) - [Table of Contents](#table-of-contents)
  - [🏆 Roadmap to Dream Placement](#-roadmap-to-dream-placement)
    - [1️⃣ 100+ Top Product Based Companies](#1%EF%B8%8F⃣-100-top-product-based-companies)
    - [2️⃣ Language, Data Structures, CP](#2%EF%B8%8F⃣-language-data-structures-cp)
  - [🏆 DSA Practice Resources](#-dsa-practice-resources)
    - [🔰 Code Studio | Data Structures & Algorithms](#code-studio--data-structures--algorithms)
    - [🔰 Leetcode Study Plan](#leetcode-study-plan)
    - [🔰 DSA Crack Sheet](#dsa-crack-sheet--solutions)
    - [🔰 Striver SDE Sheet](#striver-sde-sheet--solutions)
    - [🔰 FAANG Interview Preparation Questions (Coding Ninjas)](#faang-interview-preparation-questions-coding-ninjas)
    - [🔰 Top Interview Preparation Questions (Leetcode)](#top-interview-preparation-questions-leetcode)
    - [🔰 Companywise Interview Questions](#companywise-interview-questions)
    - [🔰 Leetcode Daily Challenges](#leetcode-daily-challenges)
  - [🏆 Theory Subjects](#-theory-subjects)
    - [1️⃣ Operating System](#1%EF%B8%8F⃣-operating-system)
    - [2️⃣ Database Management & Design](#2%EF%B8%8F⃣-database-management--design)
    - [3️⃣ Object Oriented Programming](#3%EF%B8%8F⃣-object-oriented-programming)
    - [4️⃣ Computer Networks](#4%EF%B8%8F⃣-computer-networks)
  - [🏆 Notes and Resources](#-other-notes-and-resources)
    - [🔖Best book for Coding Interviews](#best-book-for-coding-interviews---cracking-the-coding-interview)
  - [🏆 Sources](#-sources)
  - [🏆 Contributing](#-contributing)
  - [🏆 License](#-license)
  - [🏆 Contact](#-contact)

<br />

## 🏆 Roadmap to Dream Placement

### 1️⃣ 100+ Top Product Based Companies

People only chase after **FAANG**, because that's what is hyped up but now there are a lot of companies which:  
 - `Good opportunities to enhance oneself`
 - `Pay Exceptionally Well`  
 - `Good Work Life`  
 - `Great Projects/Learning`  
Check their names [here](https://drive.google.com/file/d/15rjcHqjDN7gPU5e6nxb_9NdApRf4TW1I/view?usp=sharing), and decide where you want to land.

### 2️⃣ Language, Data Structures, CP

- Guide to how to start coding if you have zero knowledge about this field
- Only way to become good at something is to practice, an expert was once a newbie too ;)
- Only consistency matters, coding once a week for 10 hours is not beneficial, rather coding 1 hour each day will benefit you more.
- Reading/Learning/Practice resources are also listed below

<details open>
  <summary style="font-size:1.15rem;">Language</summary>
  
  - Intent
    * Familiarity with Syntax
    * Familiarity with all keywords & Basic Concepts
    * main focus is on, that are you comfortable in writing code with your preferred language
  - Choices
     * C++
       * [C++ (basics) Free Resource](https://bit.ly/3FWk7dC)
       * References:     
         - [cppreferences](https://en.cppreference.com/w/cpp)   
         - [tutorialspoint](https://www.tutorialspoint.com/cplusplus/index.htm)   
         - [cplusplus](http://www.cplusplus.com/reference/)
         - [Scaler Topics](https://www.scaler.com/topics/cpp/)
       * Time Required:    
         - 1-2 weeks   
         - 1-2 hrs/day   
     * Java
       * [Java (basics) Free Resource](https://bit.ly/3FWXZ2G)
       * References:     
         - [Tutorialpoint](https://www.tutorialspoint.com/java/index.htm)   
         - [GFG](https://www.geeksforgeeks.org/java/)
         - [Scaler](https://www.scaler.com/topics/java/)
       * Time Required: same as above    
     * Python
       * [Python (basics) Free Resource](https://bit.ly/3W71Wb0)
       * References:    
         - [Tutorialspoint](https://www.tutorialspoint.com/python/index.htm)   
         - [w3schools](https://www.w3schools.com/python/)
         - [Scaler Topics](https://www.scaler.com/topics/python/)
       * Time Required: same as above
       * **Important Callout:** Some companies don't allow python as a choice in their online coding test, so prepare accordingly
</details>

<details>
  <summary style="font-size:1.15rem;">Data Structure and Algorithms</summary>

- Without this, No Software Engineering Interview, in a tech giant can be cracked
  - Follow the DSA Crack Sheet List given below
  - Time Required:
    - 2-3 months
    - 6-8 questions/day
    - 3-6 hrs/day

</details>

<details>
  <summary style="font-size:1.15rem;">Projects</summary>
  
  * You need some projects to showcase your skills to your interviewer
    * Choices:   
      - Mobile Development   
      - [Web Development](https://www.scaler.com/courses/web-development/)    
      - [Machine Learning](https://www.scaler.com/courses/machine-learning-course-training/)    
      - Some other stuff (like Blockchain, IoT, etc.)   
    * Time Required: 3 months (doing on weekends 6-8 hours)

</details>

<details>
  <summary style="font-size:1.15rem;">Subjectve Topics</summary>
  
  * Do a Subsequent reading, revision any day you get time    
    - Operating System   
    - OOPS, Object Oriented Skills   
    - DBMS, Databse Management    
    - Computer Networking    
  
</details>

<details>
  <summary style="font-size:1.15rem;">Competitive Programming</summary>

- CP needs time, it's not something that you can master in 2 months, We will get comfortable with online platforms and get a taste of competitive programming
- Leetcode questions nearly 150-200 questions
  - Category:
    - Easy: 30%
    - Medium: 50%
    - Hard: 20%
- If time allows then go for Codeforces div2 Level A, B and C question
- Time Required:
  - 150-200 Questions
  - 2 months
  - 3-4 Ques/day

</details>

<details>
  <summary style="font-size:1.15rem;">System Design</summary>

- Tech Level:
  - System's overview like we will use this queue with DynamoDB and a scheduler with a justification of why we are using this DB, SQS, SNS, multithreading, etc.
  - for SDE-1 equivalent positions, this level is somewhat rare
- Normal Understanding:
  - knowledge of dividing system & creating a rough DFD of system
  - knowledge of DB Schema creation
  - able to create problem-solving logic or not
  - Time Required: Just need some reading of articles/notes, can be pursued parallelly
- Great Resources:
  - [Grokking](https://github.com/lei-hsia/grokking-system-design/blob/master/README.md)
  - [Primer](https://github.com/donnemartin/system-design-primer/blob/master/README.md)
  </details>

<details>
  <summary style="font-size:1.15rem;">Misc Stuff</summary>

- [Aptitude/Reasoning](https://www.geeksforgeeks.org/quiz-corner-gq/)
  - Do some mock tests to gain confidence
- Basic Programming MCQ
  - [C/C++/Java/Python fundamentals](https://www.geeksforgeeks.org/quiz-corner-gq/)
  - Print output type questions
  - Time/space complexity Questions
  - [SQL Queries](https://www.geeksforgeeks.org/dbms-gq/sql-gq/)
- [Puzzles](https://www.geeksforgeeks.org/puzzles/)
- [Always go through 50-60 interview experiences before interview](https://www.geeksforgeeks.org/company-interview-corner/)
</details>

<br />

## 🏆 DSA Practice Resources

<p>
Remember: Deliberate practice does not mean looking for answers and memorizing them. You won't go very far with that approach. The more you are able to solve a problem yourself without any reference to answers, the more you will improve.
</p>

### [🔰Code Studio | Data Structures & Algorithms](https://bit.ly/3PvVE1Q)

This is a complete roadmap (by Coding Ninjas) to cover all the Data Structure Algorithm topics and make you comfortable with the most important Algorithms in Data Structure for your interviews.


### [🔰Leetcode Study Plan](./Leetcode%20Study%20Plan)

### [🔰DSA Crack Sheet](https://bit.ly/3PtPlfv) | [Solutions](./DSA%20Crack%20Sheet)

Data Structures and Algorithms Cracks Sheet (created by @lovebabbar) contains the most necessary questions to learn and grasp about most common and important DS and Algos

### [🔰Striver SDE Sheet](https://bit.ly/3j7zxD5) | [Solutions](./Striver%20Sheet)

Software Developer Engineer Sheet (created by @striver) contains asked during interviews by good product based companies.

The sheet is divided in 30 parts to be completed in a month to get ready for an interview at a good company

### [🔰FAANG Interview Preparation Questions (Coding Ninjas)](https://bit.ly/3uWtt2O)

Prepare yourself to be interview-ready for that coveted FAANG role or for an upcoming and buzzing product-based unicorn startup with CodeStudio’s problem lists – a curation of top interview problems hand-picked by experts.

### [🔰Top Interview Preparation Questions (Leetcode)](./Leetcode%20Top%20Interview%20Questions)

This is LeetCode's official curated list of Top classic interview questions to help you land your dream job. Our top interview questions are divided into the following series:

### [🔰Companywise Interview Questions](./Companywise%20Questions)

It is containing the list of most asked company wise questions available on Leetcode.

> [Download Full PDFs](https://mega.nz/folder/HkoglB7C#o2K_WMwTKFgdk_powwR9-g)

Every pdf file corresponds to a list of questions on leetcode for a specific company based on the leetcode company tags.
The list of questions within each pdf is further sorted by their frequency, so the most popular question for a specific company is at the top.

### [🔰Leetcode Daily Challenges](./Leetcode%20Daily%20Challenge)

This Challenge is beginner-friendly. It consists of daily problems given by Leetcode.  
A problem is added here each day.

### [🔰Technical Interview Questions](https://www.interviewbit.com/technical-interview-questions)

The Ultimate Guide to Acing Your Technical Interview(2022): Review these commonly asked technical job interview questions and prepare your answer. 
<br />

## 🏆 Theory Subjects

These must-do questions should be done after studying these subjects in detail.    
If you don't have much time left for interviews, then you can directly look at them

#### Resources (for quick revision): 
  - [Operating System](https://bit.ly/3YwP7Zc) 
  - [Database Management & Design](https://bit.ly/3Fx6yjl) 
  - [Object Oriented Programming](https://bit.ly/3HDuDHV) 
  - [Computer Networks](https://bit.ly/3HC13mh)

<h3>MUST-DO Questions for Interviews
(DBMS, CN and OS) </h3>

<details>
<summary style="font-size:1.15rem;">Operating System: </summary>

- What is the main purpose of an operating system? Discuss different types?
- What is a socket, kernel and monolithic kernel ?
- Difference between process and program and thread? Different types of process.
- Define virtual memory, thrashing, threads.
- What is RAID ? Different types.
- What is a deadlock ? Different conditions to achieve a deadlock.
- What is fragmentation? Types of fragmentation.
- What is spooling ?
- What is semaphore and mutex (Differences might be asked)? Define Binary semaphore.
- Belady’s Anomaly
- Starving and Aging in OS
- Why does trashing occur?
- What is paging and why do we need it?
- Demand Paging, Segmentation
- Real Time Operating System, types of RTOS.
- Difference between main memory and secondary memory.
- Dynamic Binding
- FCFS Scheduling
- SJF Scheduling
- SRTF Scheduling
- LRTF Scheduling
- Priority Scheduling
- Round Robin Scheduling
- Producer Consumer Problem
- Banker’s Algorithm
- Explain Cache
- Diff between direct mapping and associative mapping
- Diff between multitasking and multiprocessing

</details>

<details>
<summary style="font-size:1.15rem;">DBMS: </summary>

- What is DBMS ? Mention advantages..
- [What is Database?](https://www.scaler.com/topics/dbms/what-is-database/)
- What is a database system?
- What is RDBMS ? Properties..
- Types of database languages
- [ACID properties](https://www.scaler.com/topics/dbms/acid-properties-in-dbms/) (VVVVV IMP)
- Difference between vertical and horizontal scaling
- What is sharding
- [Keys in DBMS](https://www.scaler.com/topics/dbms/keys-in-dbms/)
- Types of relationship
- Data abstraction in DBMS, three levels of it
- [Indexing in DBMS](https://www.scaler.com/topics/dbms/indexing-in-dbms/)
- What is DDL (Data Definition Language)
- What is DML (Data Manipulation Language)
- [What is normalization](https://www.scaler.com/topics/dbms/normalization-in-dbms/) ? Types of them ..
- [What is denormalization](https://www.scaler.com/topics/denormalization-in-dbms/) ?
- [What is a functional dependency](https://www.scaler.com/topics/dbms/functional-dependency-in-dbms/) ?
- E-R Model ?
- Conflict Serializability in DBMS ..
- Explain Normal forms in DBMS
- What is CCP ? (Concurrency Control Protocols)
- Entity, Entity Type, Entity Set, Weak Entity Set..
- What are SQL commands ? Types of them..
- [Nested Queries in SQL ?](https://www.scaler.com/topics/nested-sql-query/)
- What is JOIN .. Explain types of JOINs
- Inner and Outer Join
- Practice SQL queries from LeetCode
- Diff between 2 tier and 3 tier architecture
- Diff between TRUNCATE and DELETE command
- Difference between Intension and Extension in a DataBase
- Difference between share lock and exclusive lock, definition of lock

</details>

<details>
<summary style="font-size:1.15rem;">Compute Networks: </summary>

- Define network
- What do you mean by network topology, and explain types of them
- Define bandwidth, node and link ?
- Explain TCP model ..
- Layers of OSI model
- Significance of Data Link Layer
- Define gateway, difference between gateway and router ..
- What does ping command do ?
- What is DNS, DNS forwarder, NIC, ?
- What is MAC address ?
- What is IP address, private IP address, public IP address, APIPA ?
- Difference between IPv4 and IPv6
- What is subnet ?
- Firewalls
- Different type of delays
- 3 way handshaking
- Server-side load balancer
- RSA Algorithm
- What is HTTP and HTTPS protocol ?
- What is SMTP protocol ?
- TCP and UDP protocol, prepare differences
- What happens when you enter “google.com” (very very famous question)
- Hub vs Switch
- VPN, advantages and disadvantages of it
- LAN

</details>

<br />

### 1️⃣ Operating System

<details>
  <summary style="font-size:1.15rem;">Overview</summary>

- [Quick Notes to Follow](https://mega.nz/file/pEpRUIQQ#ArZTGmmvMpygGuoOL6rokFesY7IJVTDJCPUQ_VsLR4U)
- [What is an Operating System](https://www.scaler.com/topics/operating-system/what-is-operating-system/)
- [Features of Operating System](https://www.interviewbit.com/blog/features-of-operating-system/)  
- Services provided by an Operating System
- [Types of Os](https://www.geeksforgeeks.org/types-of-operating-systems/)
  - Batched OS
  - Time Sharing OS
  - Distributed OS
  - Network OS
  - Real Time OS
- [RAM vs ROM](https://www.guru99.com/difference-between-rom-ram.html)
- [SRAM & DRAM](https://www.guru99.com/sram-vs-dram-difference.html)
- [PROM, EPROM & EEROM](https://pediaa.com/what-is-the-difference-between-prom-eprom-and-eeprom/)
- [Virtualisation vs Containerisation](https://www.tutorialspoint.com/difference-between-virtualization-and-containerization)
- [BIOS vs UEFI](https://www.howtogeek.com/56958/htg-explains-how-uefi-will-replace-the-bios/)
- [MBR vs GPT](https://www.howtogeek.com/193669/whats-the-difference-between-gpt-and-mbr-when-partitioning-a-drive/)
- Important Terms to Know
  - Compiler
  - Loader
  - Assembler
  - Interpreter
  - System Calls
  - Application Programming Interface
  - Kernel
  - Shell
  - JVM
  - [Booting](https://www.scaler.com/topics/operating-system/what-is-booting/)
- [Multi-programming, Multi-processing, Multi-tasking & Multi-threading](https://www.geeksforgeeks.org/difference-between-multitasking-multithreading-and-multiprocessing/)
- [Monolothic architecture vs MicroKernel arch](https://stackoverflow.com/questions/4537850/what-is-difference-between-monolithic-and-micro-kernel)
- [Why Windows kernel is more monolithic & not microkernel?](https://micksmix.wordpress.com/2011/02/20/does-windows-have-a-microkernel-or-monolithic-kernel/)
- [What happens when we turn on our computer?](https://www.geeksforgeeks.org/what-happens-when-we-turn-on-computer/)
</details>

<details>
  <summary style="font-size:1.15rem;">Process Concept</summary>

- [Process vs Program](https://www.geeksforgeeks.org/difference-between-program-and-process/)
- [Different State of process](https://www.geeksforgeeks.org/states-of-a-process-in-operating-systems/)
- Types of Process?
- [PCB structure in detail](https://www.geeksforgeeks.org/process-table-and-process-control-block-pcb/)
- [How does a process look like in memory?](https://www.tutorialspoint.com/how-does-a-process-look-like-in-memory)
- [Process vs Threads](https://www.geeksforgeeks.org/difference-between-process-and-thread/)
- Process Scheduling
  - [Introduction](https://www.tutorialspoint.com/operating_system/os_process_scheduling.htm)
  - [Inter Process Communication (IPS) in OS](https://www.scaler.com/topics/operating-system/inter-process-communication-in-os/)
  - Scheduling Queue
    - Job Queue
    - Ready Queue
    - Device Queue
  - Scheduler
    - Short-term Scheduler
    - Medium-term Scheduler
    - Long-term Scheduler
- [CPU Bound Process vs I/O Bound Process](https://stackoverflow.com/questions/868568/what-do-the-terms-cpu-bound-and-i-o-bound-mean)
  - Best Performance system is which have a combination of CPU bound and I/O bound process
- [What is Context Switch?](https://www.tutorialspoint.com/what-is-context-switching-in-operating-system)
- IPC
  - [Introduction](https://www.geeksforgeeks.org/inter-process-communication-ipc/)
  - by Shared Memory
  - by Message Passing
- [Define Pipe](https://www.tutorialspoint.com/inter_process_communication/inter_process_communication_pipes.htm)
- [Maximum number of Zombie process a system can handle?](https://www.geeksforgeeks.org/maximum-number-zombie-process-system-can-handle/)
</details>

<details>
  <summary style="font-size:1.15rem;">Thread Concepts</summary>
  
- [What is a Thread?](https://www.studytonight.com/operating-system/multithreading)
- [Benefits of Multi-threading?](https://www.geeksforgeeks.org/benefits-of-multithreading-in-operating-system/)
- [Example of Multi-threading](https://www.quora.com/What-are-some-best-examples-of-multithreaded-applications)
- [Models](https://www.studytonight.com/operating-system/multithreading)
  - Many to One
  - One to One
  - Many to Many
  - Best Model??
- [Optimal number of threads required for a process?](https://stackoverflow.com/questions/1718465/optimal-number-of-threads-per-core)
- [Effect of Multiple cores on Multi-threading](https://blogs.grammatech.com/multi-core-processors-headache-for-multithreaded-code)
- Thread vs Process
- [Why C++ static variables are dangerous in real life OS?](https://stackoverflow.com/questions/7026507/why-are-static-variables-considered-evil)
</details>

<details>
  <summary style="font-size:1.15rem;">Process Scheduling</summary>

- Why do we need it?
- CPU Burst Cycle
- CPU Scheduler
  - Pre-Emptive Scheduling
  - Non PreEmptive
  - Advantages/Disadvantages
- Dispatch
  - Role of Dispatcher
  - Dispatch Latency
- Scheduling Criteria
  - CPU Utilisation
  - Throughput
  - TAT [Turn around Time]
  - Waiting Time
  - Response Time
- Scheduling Algo
  - FCFS
  - SJFC
  - Priority-based
  - Round-Robin
  - MLQS
  - MLFQS
  - Which algo is used in real world OS
- IMP terms to know
  - Starvation
  - Ageing
- How to prevent Starvation?
</details>

<details>
  <summary style="font-size:1.15rem;">Synchronisation</summary>

- [Why Process Coordinatin/Sync is needed?](https://www.studytonight.com/operating-system/process-synchronization)
  - Data Inconsistency
  - Race Condition
- [Physical Address Space vs Logical Address Space](https://www.geeksforgeeks.org/logical-and-physical-address-in-operating-system/)
- Imp terms to know
  - [Mutual Exclusion](https://www.geeksforgeeks.org/mutual-exclusion-in-synchronization/)
  - [Critical Section](https://www.geeksforgeeks.org/g-fact-70/)
- Critical Section Problem, peterson Solution
  - [Follow youtube video (knowledge gate)](https://www.youtube.com/watch?v=YwqexcfbucE&list=PLmXKhU9FNesSFvj6gASuWmQd23Ul5omtD)
- Why pre-emptive kernel is better than non pre-emptive kernel?
- Semaphore
  - Binary Semaphore/Mutex Locks
  - Counting Semaphore
- Imp terms to know
  - Busy Waiting
  - Spin Lock
- Example of busy waiting & spin lock
- [How to implement Binary Semaphore in real world coding](https://www.geeksforgeeks.org/semaphores-in-process-synchronization/)
- What is Deadlock & Starvation?
- Bounded Buffer, Reader-Writer Problem & Dining Philosopher Problem
  - [Follow youtube video (knowledge gate)](https://www.youtube.com/watch?v=YwqexcfbucE&list=PLmXKhU9FNesSFvj6gASuWmQd23Ul5omtD)
  </details>

<details>
  <summary style="font-size:1.15rem;">Deadlocks</summary>

- [What is Deadlock?](https://www.cs.rpi.edu/academics/courses/fall04/os/c10/)
- [Effects of Deadlock?](https://stackoverflow.com/questions/41204406/what-is-effect-of-deadlock-on-other-processes-which-are-not-involve-in-deadlock/41713812)
- Necessary Conditions
  - Mutual Exclusion
  - Hold & Wait
  - No Pre-emption
  - Circular Wait
- [Methods for Deadlock handling](https://www.scaler.com/topics/dbms/deadlock-in-dbms/)
  - Prevention or Avoidance
  - Detection or Recovery
    - Banker's Algo
    - Ostrich Algo
    - Resource Per-emption
  - Ignorance
  </details>

<details>
  <summary style="font-size:1.15rem;">Memory-Management</summary>
  
  - Imp Points
    - CPU can direct access Registers and Main Memory
    - Protection of Memory space is handled by Hardware
    - OS loads Base and Limit registers
    - Mapping from Logical to Physical address is done by MMU[Memory Management Unit]
    - OS memory is categorised into
      - for the resident of OS
      - user processes
  - Logical vs Physical address space
  - What is Swapping
    - Ex-Priority based Scheduling
    - Done by Dispatcher
    - [Context Switch](https://www.scaler.com/topics/operating-system/context-switching-in-os/) time in swapping is very high
    - OS can't swap process that has pending input/output
  - Imp topics to cover
    - [Follow youtube videos](https://www.youtube.com/watch?v=YwqexcfbucE&list=PLmXKhU9FNesSFvj6gASuWmQd23Ul5omtD)
    - Memory Allocation
      - Contiguous Memory Allocation
        - Address Translation: Base and limit Register
        - Fixed Partitioning
        - Variable Partitioning
        - Variable Partitioning
        - dynamic storage allocation problem
          - Best Fit
          - Worst Fit
          - First Fit
        - Internal Fragmentation
        - External Fragmentation
          - Compaction
          - Non-Contiguous Allocation
            - Paging
            - Segmentation
      - Paging
        - Page table
        - Page no
        - Page offset
        - Page Table Limit Register (PTLR)
      - Segmentation
        - Segment Table
        - Base Register
        - Limit Register
  - [Why paging increases the context-switch time?](https://gateoverflow.in/178062/paging-os-galvin-book-page-no-332)
  - [Page vs Frame?](https://practice.geeksforgeeks.org/problems/page-and-frames)
  - [What is TLB miss?](https://stackoverflow.com/questions/37825859/cache-miss-a-tlb-miss-and-page-fault)
</details>

<details>
  <summary style="font-size:1.15rem;">Virtual Memory</summary>

- Goal of mem. Mgmt
  - To keep multiple processes in memory to allow multi-programming
- [Virtual Memory](https://www.tutorialspoint.com/operating_system/os_virtual_memory.htm)
  - What?
  - Why?
  - Where it is physically located?
  - How it is implemented?
    - Demand Paging
    - Strategy to only load pages when they are needed
    - Paging + Swapping
  - Advantages
    - user can write program for extremely large virtual address space
    - [CPU utilisation & throughput] increases & [Response Time, Turn aruond time, TAT] remains same
    - Less I/O would be needed to load or swap user programs into memory, so each user program would run faster
    - Degree of Multiprogramming increases
    - allows file and memory to be shared by 2 or more processes through page sharing
  - If it is used carelessely, it can decrease performance
- [Demand Paging](https://www.youtube.com/watch?v=Agi0u5Png_U)
  - paging + swapping
  - Lazy Swapper
  - pager
  - page fault
- [Pure Demand Paging](https://practice.geeksforgeeks.org/problems/what-is-pure-demand-paging)
- Swap Space
  - Section of hard disk used for implementing Virtual Mem. in swap
- What is Page Fault?
- Page Replacement Algo
  - FIFO
  - Optimal Page Replacement
  - LRU
- What is Frame Rate
- [Most Asked Questions (Thrashing)](https://practice.geeksforgeeks.org/problems/thrashing-in-os)
  - What?
    - Low CPU Utilisation->Degree of Multiprogramming increases->More Page Fault->Cycle Continues->Thrashing occurs->Page fault occurs tremendously->CPU utilisation decrease sharply
  - Cause of Thrashing?
  - Solution to Thrashing?
    - use priority based replacement algo
    - allocate the exact no. of frames that are actually required
- Can we replace physical memory i.e, RAM with virtual memory?
- Is performance of virtual memory and physical memory same?
</details>
<details>
  <summary style="font-size:1.15rem;">Storage Management</summary>
  (optional)
  
  - [Resource 1](https://www.slideshare.net/DeepikaT13/storage-management-in-operating-system) 
  - [Resource 2](https://www.slideshare.net/arjunk007/secondary-storage-structureoperating-system-concepts)

</details>

<details>
  <summary><span style="font-size:1.15rem;"> <a href="https://www.os-book.com/OS9/slide-dir/index.html">For College Exams</a></span></summary>
</details>

<br />

### 2️⃣ Database Management & Design

Tech Gaints: They usually ask only a bit about normalization, ACID properties(imp.) ans SQP queries & interview is done

Start Ups: They do focus on system design a lot ans in between questions on DBMS are frequently asked
So, we need to be 100% prepared for it & best way is to follow the System Design Primer (resource given below)
Questions always revolves around the type of DB, why this DB, why not that DB, how to scale, [SQL vs NoSQL](https://www.interviewbit.com/blog/sql-vs-mysql/), your familiarity level with those DBs, etc

<details>
  <summary style="font-size:1.15rem;">Resources</summary>

- [System Design Primer (Database Section)](https://github.com/donnemartin/system-design-primer#database)

</details>

<details>
  <summary style="font-size:1.15rem;">Introduction</summary>

- [What is Database?](https://www.javatpoint.com/what-is-database)
- [What is DBMS?](https://www.guru99.com/what-is-dbms.html)
- [Why do we need DBMS?](https://www.geeksforgeeks.org/need-for-dbms/)
- [File management system vs DBMS](https://www.javatpoint.com/dbms-vs-files-system)
- [What is Database Admin & it's functions?](https://practice.geeksforgeeks.org/problems/what-are-the-functions-of-a-dba)
- [Database Tier-2/Tier-3 Architecture](https://www.geeksforgeeks.org/difference-between-two-tier-and-three-tier-database-architecture/)
- [Database Language](https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/)
  - DCL
  - DDL
  - DML
  - TCL
- [Important Terms](https://whatisdbms.com/instances-schema-and-sub-schema-in-dbms-with-examples/)
  - Instance
  - Schema
  - Sub-Schema
- How DBMS is implemented?)
- [What is Data abstraction in DBMS?](https://afteracademy.com/blog/what-is-data-abstraction-in-dbms-and-what-are-its-three-levels)
- [3 level of Data Abstraction](https://afteracademy.com/blog/what-is-data-abstraction-in-dbms-and-what-are-its-three-levels)
- [What is Referectial Integrity](https://www.tutorialspoint.com/Referential-Integrity-Rule-in-RDBMS)

</details>

<details>
  <summary style="font-size:1.15rem;">RDBMS</summary>

- [What is RDBMS & how it is stored in memory?](https://www.quora.com/How-does-a-relational-DBMS-internally-store-its-data-In-what-type-of-data-structure-How-does-it-offer-the-rapid-retrieval-without-loading-the-entire-database-into-the-main-memory-I-have-heard-many-DBMS-use-B-trees)
- What is meaning of word "Relational" in RDBMS?
- [Degree of Relation](https://www.relationaldbdesign.com/database-design/module6/three-relationship-types.php)
  - 1:1
  - 1:M
  - M:M
- [Keys](https://www.geeksforgeeks.org/types-of-keys-in-relational-model-candidate-super-primary-alternate-and-foreign/)
  - Primary Key
  - Foreign Key
  - Candidate Key
  - Alternate Key
  - [Super Key](https://www.scaler.com/topics/super-key-in-dbms/)
  - Secondary Key
- [Databse Schema](https://www.tutorialspoint.com/dbms/dbms_data_schemas.htm)
  - Physical Databse Schema
  - Logical Databse Schema
- [Schema Diagrams](https://www.geeksforgeeks.org/mapping-from-er-model-to-relational-model/)
  - [Relational Model](https://www.scaler.com/topics/dbms/relational-model-in-dbms/)
  - ER Diagram
- [Relational Operations](https://www.guru99.com/relational-algebra-dbms.html)
  - Select
  - Project
  - Union
  - Set Different
  - Cartesian Product
  - Rename
- SQL
  - [What is SQL](https://www.w3schools.com/sql/sql_intro.asp)
  - [SQL vs MySQL](https://www.upgrad.com/blog/sql-vs-mysql/)
  - [Important Keywords](https://www.educba.com/sql-keywords/)
  - [CheatSheet: SQL](https://www.educba.com/cheat-sheet-sql/?source=leftnav)
  - [Composite key in SQL](https://www.educba.com/composite-key-in-sql/?source=leftnav)
  - [Join & it's types](https://www.geeksforgeeks.org/sql-join-set-1-inner-left-right-and-full-joins/)
    - Inner Join
    - Left Join
    - Right Join
    - Full Join
    - Self Join
  - [What is View](https://www.geeksforgeeks.org/sql-views/)
    - [Updating a View](https://www.scaler.com/topics/sql/views-in-sql/)
  - [What is trigger](https://www.geeksforgeeks.org/sql-trigger-student-database/)
  - [Unique & Primary key in SQL](https://www.geeksforgeeks.org/difference-between-primary-key-and-unique-key/)
  - [What is SQL Injection?](https://www.w3schools.com/sql/sql_injection.asp)
  - [Delete vs Truncate](https://www.geeksforgeeks.org/difference-between-delete-and-truncate/)
  - [SQL Privileges](https://www.geeksforgeeks.org/mysql-grant-revoke-privileges/)
  - [What do you mean by Subquery](https://www.tutorialspoint.com/sql/sql-sub-queries.htm)
  - [What is difference between clustered and non-clustered indexes?](https://www.guru99.com/clustered-vs-non-clustered-index.html)
  - [What is a Cursor?](https://www.geeksforgeeks.org/what-is-cursor-in-sql/)
  - Query Emaples
    - Write an SQL query to get third maximum salary of an employee from a table named employee_table
    - Write a SQL query to find names of employee start with 'A'
    - How can you create an empty table from an existing table?
    - How to fetch common records from two tables?
    - How to fetch alternate records from a table?
    - What is command used to fetch first 5 characters of the string?
    - Which operator is used in query pattern matching?
- [What is Index in DBMS & it's types](https://www.guru99.com/indexing-in-database.html)

</details>

<details>
  <summary style="font-size:1.15rem;">Relational Database Design</summary>

- [Features of Good Relationsl Design](https://www.microfocus.com/documentation/xdbc/win20/GUID-82D58958-278F-482C-B76F-AAF94A28DCCF.html)
- [What is Functional Dependency?](https://www.guru99.com/dbms-functional-dependency.html)
  - Trivial
  - Non-Trivial
  - Fully-Functional Dependency
  - Partial
  - Transitive
- [What is Normalisation?](https://www.guru99.com/database-normalization.html)
- [Purpose of Normalisation?](https://medium.com/@bbrumm/what-is-the-purpose-of-database-normalisation-8070b2948d70)
- [What are 3 anomalies resolved by normalisation?](https://dba.stackexchange.com/questions/194631/how-does-normalization-fix-the-three-types-of-update-anomalies)
- Types of Normalisation? (Purpose and Steps to Convert?)
  - [1NF](https://www.geeksforgeeks.org/first-normal-form-1nf/)
  - [2NF](https://www.geeksforgeeks.org/second-normal-form-2nf/)
  - [3NF](https://www.geeksforgeeks.org/third-normal-form-3nf/)
  - [BCNF](https://www.geeksforgeeks.org/boyce-codd-normal-form-bcnf/)

</details>

<details>
  <summary style="font-size:1.15rem;">Storage and File Structure</summary>

- [Storage System](https://www.tutorialspoint.com/dbms/dbms_storage_system.htm)
- [File Structure](https://www.tutorialspoint.com/dbms/dbms_file_structure.htm)

</details>

<details>
  <summary style="font-size:1.15rem;">Transaction Management</summary>

- [What is a transaction?](https://www.tutorialspoint.com/dbms/dbms_transaction.htm)
  - [State of Transaction](https://www.gatevidyalay.com/transaction-states-in-dbms/)
- [IMP Terms](https://www.studytonight.com/dbms/tcl-command.php)
  - Commit
  - Rollback
  - Savepoint
- [ACID Properties](https://www.geeksforgeeks.org/acid-properties-in-dbms/)
- [How to Implement Atomicity in Trsactions?](https://ashutoshtripathi.com/2017/11/27/implementation-of-atomicity-and-durability-using-shadow-copy/)
  - Problem of Concurrent Transaction?
    - Lost Update
    - Dirty Read
    - Unpredictable Read
    - Incorrect Summary
  - Advantages
    - Reduced Wai Time
    - High Throughput
    - High resource utilisation
- [Concurrent Trnsaction?](https://www.geeksforgeeks.org/concurrency-problems-in-dbms-transactions/)
- Schedule
  - [Type](https://www.geeksforgeeks.org/types-of-schedules-in-dbms/)
    - Serial
    - Complete
    - Recoverable
    - Cascadeless
    - Strict
  - [What is Conflict Operation?](https://www.javatpoint.com/dbms-conflict-serializable-schedule)
  - How to find wether Schedules are conflicting or not
- [Concurrency Control](https://www.tutorialspoint.com/dbms/dbms_concurrency_control.htm)
  - Purpose?
    - Shared Lock
    - Exclusive Lock
  - 2-Phase Locking PRotocal (important)

</details>

<details>
  <summary style="font-size:1.15rem;">Deadlock</summary>

- [What is Deadlock?](https://www.geeksforgeeks.org/deadlock-in-dbms/)
  - Examples?
- Deadlock Detection
- [How to prevent Deadlock](https://www.scaler.com/topics/operating-system/deadlock-prevention-in-operating-system/) (already in OS Topics)
  - Mutual Exclusion
  - Hold and Wait
  - No PreEmption
  - Circular Wait
- [Other Techniques to prevent Deadlock](https://www.geeksforgeeks.org/introduction-to-timestamp-and-deadlock-prevention-schemes-in-dbms/)
  - use Timestamp
  - Wait-Die Scheme
  - Wound-Wait Scheme
  - Timeout Based Scheme
- [What is Starvation and it's reasons?](https://www.geeksforgeeks.org/starvation-in-dbms/)
- [Deadlock recovery](https://www.geeksforgeeks.org/recovery-from-deadlock-in-operating-system/)
  - Selection of Victim
  - Roll Back
  - Starvation

</details>

<details>
  <summary style="font-size:1.15rem;">Must Do (for system Design Interview)</summary>

- SQL vs NoSQL
  - [Resources to Follow](https://www.mongodb.com/nosql-explained/nosql-vs-sql)
  - [Which Modern Databse is Right for your use case?](https://www.xplenty.com/blog/which-database/)
- [Scaling Patterns](https://www.freecodecamp.org/news/understanding-database-scaling-patterns/)
- [CAP Theorem](https://www.analyticsvidhya.com/blog/2020/08/a-beginners-guide-to-cap-theorem-for-data-engineering/)
- [Scaling RDBMS and NoSQL](https://betterprogramming.pub/scaling-sql-nosql-databases-1121b24506df)
- [What DB to use](http://jlamere.github.io/databases/)
- [In-memory Database](https://medium.com/@denisanikin/what-an-in-memory-database-is-and-how-it-persists-data-efficiently-f43868cff4c1)
- [Graph Database](https://neo4j.com/developer/graph-database/)
- [In-depth Indexing (optional)](https://www.freecodecamp.org/news/database-indexing-at-a-glance-bb50809d48bd/)
- [Master Slave](https://www.datadriveninvestor.com/2020/05/28/the-master-slave-database-concept-for-beginners/)
- [Master Slave vs Master Master](https://intellipaat.com/community/6605/master-master-vs-master-slave-database-architecture)
- [ACID vs BASE](https://www.dataversity.net/acid-vs-base-the-shifting-ph-of-database-transaction-processing/)

</details>

<br />

### 3️⃣ Object Oriented Programming

What to expect from these resources,

- To the point for your Interview Preparation
- Sufficient for Academics

<details>
  <summary style="font-size:1.15rem;">Resources</summary>

- [C++](https://www.javatpoint.com/cpp-oops-concepts)
- [Java](https://www.javatpoint.com/java-oops-concepts)
- [Python](https://www.scaler.com/topics/oops-concepts-in-python/)
- [OOPs Concepts](https://www.scaler.com/topics/what-is-object-oriented-programming-oop/)

</details>

<details>
  <summary style="font-size:1.15rem;">Overview</summary>

- [What is Object Oriented Programming?](https://www.w3schools.com/cpp/cpp_oop.asp)
  - Object oriented programming is about creating objects that contain both data and functions
- [How Object Oriented Programming is related to the real world?](https://fdhgjhjhukj.medium.com/object-oriented-programming-with-real-world-example-63f69f917d62)
  - Example
- [Why to study OOPS?](https://www.c-sharpcorner.com/forums/why-we-need-oops-in-programming-language)
- [Limitation of OOPS](https://resources.saylor.org/wwwresources/archived/site/wp-content/uploads/2013/02/CS101-2.1.2-AdvantagesDisadvantagesOfOOP-FINAL.pdf)
- When we say that 'X' language is object oriented programming language, then what does we mean by that ?
  - Your Homework

</details>

<details>
  <summary style="font-size:1.15rem;">Pillars of OOPS</summary>

- [What is a Class?](https://www.guru99.com/java-oops-class-objects.html)
  - [Difference between Structure & Class](https://www.geeksforgeeks.org/structure-vs-class-in-cpp/)
  - [Similarity between Structure & Class](https://practice.geeksforgeeks.org/problems/what-are-similarities-between-a-class-and-a-structure)
    - When to use Structure over class?
  - [Access Modifiers](https://www.javatpoint.com/access-modifiers)
    - Public
    - Private
    - Protected
    - Friend
      - Protected Friend
  - [Member Function](https://www.studytonight.com/cpp/types-of-member-function.php)
    - Inside Class Function
    - Outside Class Function
  - [What is Constructor?](https://www.geeksforgeeks.org/constructors-c/)
    - Default Constructor
    - Parameterised Constructor
    - Copy Constructor
      - [What is Deep/Shallow Copy?](https://www.geeksforgeeks.org/difference-between-shallow-and-deep-copy-of-a-class/)
      - [Copy Constructor vs Assignment Operator](https://www.geeksforgeeks.org/copy-constructor-vs-assignment-operator-in-c/)
    - [Virtual Constructor](https://www.tutorialspoint.com/virtual-constructor-in-cplusplus)
    - [Virtual Copy Constructor](https://www.tutorialspoint.com/virtual-copy-constructor-in-cplusplus)
    - [How constructors are different from a normal member function?](https://iq.opengenus.org/constructor-cpp/)
    - [Can we have more than one constructor in a class?](https://stackoverflow.com/questions/37517522/why-would-you-need-to-use-more-than-one-constructor)
      - [Constructor Overloading](https://www.scaler.com/topics/constructor-overloading-in-java/)
  - [Destructor](https://www.geeksforgeeks.org/destructors-c/)
    - [Private Destructor](https://www.geeksforgeeks.org/private-destructor/)
    - [Virtual Destructor](https://www.geeksforgeeks.org/virtual-destructor/)
    - [Pure Virtual Destructor](https://www.geeksforgeeks.org/pure-virtual-destructor-c/)
    - [How destructors are different from a normal member function?](https://www.tutorialspoint.com/destructors-in-cplusplus)
    - [Can there be more than one destructor in a class?](https://stackoverflow.com/questions/21934810/why-a-class-has-only-one-destructor/21934951)
    - [When do we need to write a user-defined destructor?](https://stackoverflow.com/questions/22491174/when-do-we-need-to-define-destructors)
    - Can a destructor be virtual?
      - [When to use it?](https://stackoverflow.com/questions/461203/when-to-use-virtual-destructors)
- What is an Object?
  - [Class vs Object](https://www.javatpoint.com/difference-between-object-and-class)
- [Real world analogy of Class and Object?](https://www.c-sharpcorner.com/blogs/real-life-examples-of-object-oriented-programming1)
- Important Keywords
  - [Static](https://www.youth4work.com/Talent/Core-Java/Forum/119567-wat-is-the-use-of-a-static-keyword?yFast=On)
  - [Virtual](https://www.codeproject.com/Questions/270054/why-virtual-keyword-is-used)
  - [Abstract](https://www.tutorialspoint.com/abstract-keyword-in-Java)
  - [Final](https://www.javatpoint.com/final-keyword)
  - [Explicit](https://www.geeksforgeeks.org/g-fact-93/)
  - [this](https://www.javatpoint.com/this-keyword)
  - [new](https://www.javatpoint.com/new-keyword-in-java)
  - [const](https://stackoverflow.com/questions/7428358/why-const-keyword-is-not-used-in-java)
  - [super](https://www.javatpoint.com/super-keyword)
- Features of OOPS
  - [Polymorphism](https://www.scaler.com/topics/java/polymorphism-in-java/)
    - [What?](https://www.javatpoint.com/runtime-polymorphism-in-java)
    - [Need?](https://stackoverflow.com/questions/11064409/why-to-use-polymorphism)
    - Categorisation
      - [Function/Operator Overloading](https://www.javatpoint.com/cpp-overloading)
        - [Compiletime Polymorphism](https://www.dineshonjava.com/compile-time-polymorphism-in-java/)
        - [What function can't be overloaded in C++?](https://www.geeksforgeeks.org/function-overloading-in-c/)
        - [What are all operators that can't be overloaded?](https://www.tutorialspoint.com/operators-that-cannot-be-overloaded-in-cplusplus)
      - [Function Overriding](https://www.javatpoint.com/runtime-polymorphism-in-java)
        - Runtime Polymorphism
    - [Virtual Function](https://www.javatpoint.com/cpp-virtual-function)
    - [Virtual Class](https://www.geeksforgeeks.org/virtual-base-class-in-c/)
    - [Derived Class](https://www.techopedia.com/definition/3780/derived-class)
    - [Can virtual function be set private?](https://www.geeksforgeeks.org/can-virtual-functions-be-private-in-c/)
    - [Inline Virtual Function](https://stackoverflow.com/questions/733737/are-inline-virtual-functions-really-a-non-sense)
    - [Abstract Class](https://www.javatpoint.com/abstract-class-in-java)
    - [Pure Virtual Function](https://www.geeksforgeeks.org/pure-virtual-functions-and-abstract-classes/)
    - [Pure Virtual Destructor](https://stackoverflow.com/questions/1219607/why-do-we-need-a-pure-virtual-destructor-in-c)
  - [Inheritance](https://www.scaler.com/topics/java/inheritance-in-java/)
    - [What is Inheritance?](https://www.javatpoint.com/inheritance-in-java)
      - Sub Class
      - Super Class
      - Reusability
    - [Why/Need of Inheritance?](https://www.youth4work.com/Talent/Core-Java/Forum/121637-what-is-the-need-of-inheritance?yFast=On)
    - [Can Object Oriented Programming exist without Inheritance?](https://yourbasic.org/golang/inheritance-object-oriented/)
    - [Types of Inheritance](https://www.studytonight.com/cpp/types-of-inheritance.php)
      - Single Inheritance
      - Multiple Inheritance
      - Hierarchical Inheritance
      - Multilevel Inheritance
      - Hybrid/Virtual Inheritance
    - [Real Life Example of Multiple Inheritance](https://www.quora.com/What-are-the-real-world-examples-of-multiple-inheritance-in-C++)
    - [What are the limitations of Inheritance?](https://practice.geeksforgeeks.org/problems/what-are-advantages-and-disadvantages-of-using-inheritance)
    - [What is Sealed Modifier?](https://www.c-sharpcorner.com/interview-question/what-is-sealed-modifiers)
    - [How can we call the base method without creating an instance?](https://stackoverflow.com/questions/10173827/how-to-invoke-parent-class-method-without-creating-object-of-it)
    - [What is the difference between new and override?](https://stackoverflow.com/questions/6576206/what-is-the-difference-between-the-override-and-new-keywords-in-c)
    - [Why Java does not support Multiple Inheritance?](https://stackoverflow.com/questions/2515477/why-is-there-no-multiple-inheritance-in-java-but-implementing-multiple-interfac)
    - [What is diamond problem in case of multiple inheritance in Java?](https://www.tutorialspoint.com/what-is-diamond-problem-in-case-of-multiple-inheritance-in-java)
    - If a class A inherits from class B, then what all is inherited from Parent class?
      - Explore Every Combination
    - [Object Slicing](https://stackoverflow.com/questions/274626/what-is-object-slicing)
    - [How to hide base class methods/functions?](https://stackoverflow.com/questions/2589146/overload-and-hide-methods-in-java)
    - Friend Function/Class.Inline Function
    - Local Class/Nested Class.Simulating Final Class
    - [Does Overloading works with Inheritance?](https://www.geeksforgeeks.org/does-overloading-work-with-inheritance/)
    - [Difference between polymorphism and inheritance?](https://www.geeksforgeeks.org/difference-between-inheritance-and-polymorphism/)
    - [Generalisation vs Aggregation vs Composition](https://javapapers.com/oops/association-aggregation-composition-abstraction-generalization-realization-dependency/)
  - [Encapsulation](https://www.scaler.com/topics/java/encapsulation-in-java/)
    - [What?](https://www.javatpoint.com/encapsulation)
      - Combo of Data-hiding & Abstraction
    - [Advantages/Needs?](https://www.javatpoint.com/q/7216/use-of-encapsulation-in-java)
    - [How to achieve?](https://www.quora.com/How-do-we-achieve-encapsulation-in-java)
    - [Code/implementation Example](https://beginnersbook.com/2013/05/encapsulation-in-java/)
    - [Real World Example](https://www.sitesbay.com/java/java-encapsulation)
    - [Difference Between Abstraction and Encapsulation](https://www.scaler.com/topics/difference-between-encapsulation-and-abstraction/)
  - Abstraction
    - [What?](https://www.scaler.com/topics/java/abstraction-in-java/)
      - Implementation hiding
    - When to use?
    - [How to achieve?](https://www.javatpoint.com/how-to-achieve-abstraction-in-java)
      - C++
        - Access Specifiers
        - [header Files](https://www.scaler.com/topics/cpp/cpp-header-files/)
      - Java
        - [Interfaces](https://www.scaler.com/topics/java/interface-in-java/)
        - [Abstract Classes](https://www.scaler.com/topics/java/abstract-class-in-java/)
    - [Encapsulation vs Abstraction](https://stackoverflow.com/questions/12072980/encapsulation-vs-abstraction-real-world-example)
      - Example
    - [What are the differences between interfaces and abstract classes?](https://www.javatpoint.com/difference-between-abstract-class-and-interface)
- [Dynamic Binding](https://www.javatpoint.com/static-binding-and-dynamic-binding)
- [Message Passing](https://www.panonit.com/blog/overview-message-passing-object-oriented-programming)
- Object-oriented design interview questions
  - [Design a hash map](https://github.com/donnemartin/system-design-primer/blob/master/solutions/object_oriented_design/hash_table/hash_map.ipynb)
  - [Design a LRU cache](https://github.com/donnemartin/system-design-primer/blob/master/solutions/object_oriented_design/lru_cache/lru_cache.ipynb)
  - [Design a call center](https://github.com/donnemartin/system-design-primer/blob/master/solutions/object_oriented_design/call_center/call_center.ipynb)
  - [Design a deck of cards](https://github.com/donnemartin/system-design-primer/blob/master/solutions/object_oriented_design/deck_of_cards/deck_of_cards.ipynb)
  - [Design a parking lot](https://github.com/donnemartin/system-design-primer/blob/master/solutions/object_oriented_design/parking_lot/parking_lot.ipynb)
  - [Design an online chat](https://github.com/donnemartin/system-design-primer/blob/master/solutions/object_oriented_design/online_chat/online_chat.ipynb)

</details>

<details>
  <summary style="font-size:1.15rem;">Misc</summary>

- [C vs C++ vs Java](https://www.edureka.co/blog/difference-between-c-c-and-java)
- [Difference between procedural programming and OOPs?](https://www.geeksforgeeks.org/differences-between-procedural-and-object-oriented-programming/)
- [Why Java is not a Purely Object Oriented Language?](https://www.geeksforgeeks.org/java-not-purely-object-oriented-language/)
- [Is an array a primitive type or an object in Java?](https://www.geeksforgeeks.org/array-primitive-type-object-java/)
- [What is early and late binding?](https://stackoverflow.com/questions/10580/what-is-the-difference-between-early-and-late-binding)
- [What is the default access modifier in a calss?](https://stackoverflow.com/questions/3499572/what-is-the-default-access-modifier-of-a-class)
- [How many instances can be created for an abstract class?](https://www.quora.com/Can-we-create-instance-to-abstract-class)
- [Define Garbage collection? How does it works](https://stackify.com/what-is-java-garbage-collection/)
- [Define manipulators](https://www.geeksforgeeks.org/manipulators-in-c-with-examples/)
- [What fo you mean by finally block?](https://www.javatpoint.com/finally-block-in-exception-handling)
- [What is a final variable?](https://www.educative.io/edpresso/what-is-the-final-keyword-in-java)
- [What is meant by an exception?](http://www.iitk.ac.in/esc101/05Aug/tutorial/essential/exceptions/definition.html)
- [Is an error basically the same as an exception?](https://www.quora.com/What-is-the-difference-between-error-and-an-exception)
- [Exception handling?](https://www.scaler.com/topics/java/exception-handling-in-java/)
  - [try catch](https://beginnersbook.com/2013/04/try-catch-in-java/)
- [What is the method 'finalize' used for?](https://www.javatpoint.com/java-object-finalize-method)
- [What is a token?](https://www.geeksforgeeks.org/cc-tokens/)
- [What are the three arguments of a ternary operator?](https://www.freecodecamp.org/news/c-ternary-operator/)
- [Describe the concept of enum](https://www.geeksforgeeks.org/enumeration-enum-c/)
- [Basic understanding of Design Patterns](https://www.javatpoint.com/singleton-design-pattern-in-java)
- Is it possible for a class to inherit the constructor of it's base class?
- [When should I use a struct instead of a class?](https://stackoverflow.com/questions/85553/when-should-i-use-a-struct-instead-of-a-class)
- [Cohesion vs Coupling](https://stackoverflow.com/questions/3085285/difference-between-cohesion-and-coupling)

</details>

<br />

### 4️⃣ Computer Networks

<details>
  <summary style="font-size:1.15rem;">Overview</summary>

- Basics
  - [What is Computer Networking](https://www.cisco.com/c/en_in/solutions/enterprise-networks/what-is-computer-networking.html)
  - Basic Terms
    - [Client](https://learntomato.flashrouters.com/what-is-a-client-what-is-a-server-what-is-a-host/)
    - [Server](https://learntomato.flashrouters.com/what-is-a-client-what-is-a-server-what-is-a-host/)
    - [Peer](https://softwareengineering.stackexchange.com/questions/274116/what-is-a-peer-in-computer-network)
    - [Host](https://learntomato.flashrouters.com/what-is-a-client-what-is-a-server-what-is-a-host/)
    - [Bandwidth](https://searchnetworking.techtarget.com/definition/bandwidth)
    - [Jitter](https://www.ringcentral.com/us/en/blog/what-is-jitter/)
    - [Packet](https://www.cloudflare.com/en-in/learning/network-layer/what-is-a-packet/)
    - [Frame](https://www.techopedia.com/definition/27175/frame-networking)
    - [Local Host](https://www.geeksforgeeks.org/what-is-local-host/)
    - [Bit Rate](https://www.khanacademy.org/computing/computers-and-internet/xcae6f4a7ff015e7d:the-internet/xcae6f4a7ff015e7d:connecting-networks/a/bit-rate-bandwidth-and-latency)
    - [Noise](https://tutsmaster.org/what-is-noise-types-of-noises-in-network/)
    - [Attenuation](https://www.comptia.org/content/guides/what-is-attenuation#:~:text=Definition%20of%20Attenuation%20in%20Networking,to%20become%20distorted%20or%20indiscernible.&text=Radio%20signals)
    - [Distortion](https://www.computerhope.com/jargon/d/distorti.htm#:~:text=Updated%3A%2010%2F04%2F2017,cables%20such%20as%20network%20cables.)
  - What is Web?
    - [Difference between Web vs Internet](https://www.geeksforgeeks.org/whats-difference-internet-web/#:~:text=The%20Internet%20is%20a%20global,on%20top%20of%20that%20infrastructure.)
  - [Type of transmission Media](https://www.geeksforgeeks.org/types-transmission-media/)
  - [Computer Network Devices](https://www.certiology.com/computing/computer-networking/network-devices.html)
  - [Unicast, BroadCast and MultiCast](https://www.geeksforgeeks.org/difference-between-unicast-broadcast-and-multicast-in-computer-network/)
  - [Networking Topology](https://www.guru99.com/type-of-network-topology.html)
    - Mesh
    - Star
    - Bus
    - Ring
    - Tree
  - [LAN vs MAN vs WAN](https://www.geeksforgeeks.org/difference-between-lan-man-and-wan/)

</details>

<details>
  <summary style="font-size:1.15rem;">OSI Model</summary>

- [What](https://www.forcepoint.com/cyber-edu/osi-model)
- Different Layers
  - PDNTSPA
    - Physicsl
    - Data Link
      - [What is Ethernet?](https://www.linksys.com/us/r/resource-center/basics/whats-ethernet/)
      - [Extranet vs Intranet vs Internet](https://www.geeksforgeeks.org/difference-between-internet-intranet-and-extranet/)
      - [Virtual ckt vs Datagram Network](https://www.geeksforgeeks.org/differences-between-virtual-circuits-and-datagram-networks/)
      - [Switch & it's types](https://www.geeksforgeeks.org/types-of-switches-in-computer-network/)
      - [What is Virtual LAN?](https://www.guru99.com/vlan-definition-types-advantages.html)
      - [Basics of Wifi](https://www.geeksforgeeks.org/basics-of-wi-fi/)
    - Network
      - [IP Addressing?](https://www.kaspersky.com/resource-center/definitions/what-is-an-ip-address)
      - [IPv4 vs IPv6](https://www.guru99.com/difference-ipv4-vs-ipv6.html)
      - [Supernet](https://www.geeksforgeeks.org/supernetting-in-network-layer/)
      - [Types of Routing](https://www.geeksforgeeks.org/types-of-routing/)
        - Static
        - Default
        - Dynamic
      - [Network Address Translation](https://www.geeksforgeeks.org/network-address-translation-nat/)
      - [WPA vs WPS](https://www.quora.com/What-is-the-difference-between-WPS-and-WPA-in-WiFi)
      - [LiFi vs WiFi](https://www.geeksforgeeks.org/difference-between-lifi-and-wifi/)
      - [What is ACL[AccessList]?](https://www.geeksforgeeks.org/access-lists-acl/)
      - [AAA in networking (imp)](https://www.geeksforgeeks.org/computer-network-aaa-authentication-authorization-and-accounting/)
      - [SONET](https://www.geeksforgeeks.org/synchronous-optical-network-sonet/)
    - Transport
      - [TCP Connection Setup](https://www.geeksforgeeks.org/tcp-connection-establishment/)
      - [3-way Handshake](https://www.geeksforgeeks.org/tcp-3-way-handshake-process/)
      - [UDP](https://www.geeksforgeeks.org/user-datagram-protocol-udp/)
      - [Peer2Peer Sharing](https://www.geeksforgeeks.org/p2ppeer-to-peer-file-sharing/)
      - [Congestion in Computer Networks](https://www.geeksforgeeks.org/congestion-control-in-computer-networks/)
      - [Error Control](https://www.geeksforgeeks.org/error-control-in-tcp/)
    - Session
    - Presentation
    - Application
      - [Protocols in Application Layer](https://www.geeksforgeeks.org/protocols-application-layer/)
      - [DNS](https://www.geeksforgeeks.org/domain-name-system-dns-in-application-layer/)
      - [Why does DNS uses UDP and not TCP?](https://www.geeksforgeeks.org/why-does-dns-use-udp-and-not-tcp/)
      - [Address Resolution in DNS](https://www.geeksforgeeks.org/address-resolution-in-dns-domain-name-server/)
      - [DNS Spoofing or DNS Cache poisoning](https://www.geeksforgeeks.org/dns-spoofing-or-dns-cache-poisoning/)
      - [Types of DNS Attacks](https://www.geeksforgeeks.org/types-of-dns-attacks-and-tactics-for-security/)
      - [Difference in http and https](https://www.geeksforgeeks.org/difference-between-http-and-https/)
      - [How DHCP server dynamically assigns IP addresses to a host](https://www.geeksforgeeks.org/how-dhcp-server-dynamically-assigns-ip-address-to-a-host/)
- [How a Packet travels? (V.V.V.Imp)](https://www.practicalnetworking.net/series/packet-traveling/packet-traveling/)
</details>

<details>
  <summary style="font-size:1.15rem;">Misc & System Design</summary>

- [Common Networking Commands:](https://www.educba.com/networking-commands/)
  - ping
  - netstat
  - tracert
  - ipconfig
  - nslookup
  - route
  - pathping
  - netDiag
  - hostname
  - arp
- [Difference in http and https](https://www.geeksforgeeks.org/difference-between-http-and-https/)
- [What is API Gateway?](https://www.youtube.com/watch?v=hYgP0cBORVg)
- [SSL/TLS](https://www.ssl.com/faqs/faq-what-is-ssl/)
- [Reverse Proxy?](https://www.cloudflare.com/en-gb/learning/cdn/glossary/reverse-proxy/)
- [Load Balancer](https://www.nginx.com/resources/glossary/load-balancing/)
- [ARP, Address Resolution Protocol](https://www.practicalnetworking.net/series/arp/traditional-arp/)
- [Horizontal vs Vertical Scaling](https://www.redswitches.com/blog/difference-between-horizontal-vertical-scaling/)
- [Caching & How does a website is cached](https://www.cloudflare.com/en-in/learning/cdn/what-is-caching/)
- [What is VIP in Computer Networks](https://learningnetwork.cisco.com/s/question/0D53i00000KsxEZ/what-is-a-vip-virtual-ip)
- [REST API vs HTTP API](https://www.baeldung.com/cs/rest-vs-http)
- [What is a container in computer networks](https://www.vmware.com/topics/glossary/content/container-networking#:~:text=Container%20Networking%20is%20an%20emerging,concept%20to%20a%20virtual%20machine.&text=All%20applications%20inside%20the%20container,available%20inside%20the%20container%20only.)
- [Containerisation vs Virtualisation](https://www.burwood.com/blog-archive/containerization-vs-virtualization#:~:text=Virtualization%20enables%20you%20to%20run,single%20virtual%20machine%20or%20server.)
- [Performance vs Scalability](https://www.dynatrace.com/news/blog/performance-vs-scalability/#:~:text=Performance%20refers%20to%20the%20capability,a%20certain%20amount%20of%20data.&text=Scalability%20referes%20to%20the%20characteristic,performance%20by%20adding%20additional%20ressources.)
- [Latency vs Throughput](https://www.comparitech.com/net-admin/latency-vs-throughput/#:~:text=Latency%20indicates%20how%20long%20it,a%20specific%20period%20of%20time.)
- [2G vs 3G vs 4G vs 5G](http://net-informations.com/q/diff/generations.html)
- [How a VPN works?](https://www.kaspersky.com/resource-center/definitions/what-is-a-vpn)
- [Gateway vs Router](https://www.geeksforgeeks.org/difference-between-router-and-gateway/)
- [NIC and MAC Address](https://securityxploded.com/basics-nic-mac-and-arp-tutorial.php)
- [Public vs Private IP Address](https://www.geeksforgeeks.org/difference-between-private-and-public-ip-addresses/)
- [What is Multiplexing](https://www.javatpoint.com/multiplexing-in-computer-network)
- [Modem vs Router](https://www.youtube.com/watch?v=1-gDIlH8-fs)
- [How Bluetooth Works](https://www.tutorialspoint.com/wireless_communication/wireless_communication_bluetooth.htm)
- [How Hotspot Works](https://www.netspotapp.com/hardware/wifi-hotspot/)
- [How Email Works](https://www.tutorialspoint.com/internet_technologies/e_mail_working.htm#:~:text=Email%20working%20follows%20the%20client%20server%20approach.&text=Person%20A%20composes%20the%20messages,area%20designated%20for%20person%20B.)
- [How file transfer works](https://www.geeksforgeeks.org/file-transfer-protocol-ftp-in-application-layer/)
- [How ATM works](https://www.geeksforgeeks.org/asynchronous-transfer-mode-atm-in-computer-network/)
</details>

<details>
  <summary style="font-size:1.15rem;">Security</summary>

- [What is Firewall?](https://www.checkpoint.com/cyber-hub/network-security/what-is-firewall/)
- [Types of Firewall](https://www.javatpoint.com/types-of-firewall)
- [Possible attacks on Firewall](https://www.geeksforgeeks.org/types-of-firewall-and-possible-attacks/)
- [Basic Network Attacks](https://www.geeksforgeeks.org/basic-network-attacks-in-computer-network/)
- [Denial of Service and Prevention](https://www.geeksforgeeks.org/deniel-service-prevention/)
- [Digital Signature & Certificates](https://www.geeksforgeeks.org/digital-signatures-certificates/)
- Terms to know:
  - [Cryptography](https://www.csoonline.com/article/3583976/what-is-cryptography-how-algorithms-keep-information-secret-and-safe.html)
  - [Symmetrics Key](https://www.cryptomathic.com/news-events/blog/symmetric-key-encryption-why-where-and-how-its-used-in-banking#:~:text=Symmetric%20encryption%20is%20a%20type,used%20in%20the%20decryption%20process.)
  - [Assymetrics Key](https://cheapsslsecurity.com/blog/what-is-asymmetric-encryption-understand-with-simple-examples/)
  - [Hashing](https://www.thesslstore.com/blog/difference-encryption-hashing-salting/)
  - [Cryptanalysis](https://www.geeksforgeeks.org/cryptanalysis-and-types-of-attacks/)
  - AES/DES/RSA/MD5 hashing
- [Active & Passive attack in Infosec](https://www.geeksforgeeks.org/active-and-passive-attacks-in-information-security/)
- [Types of Email Attacks](https://www.geeksforgeeks.org/types-of-email-attacks/)
</details>

<br/>

## 🏆 Other Notes and Resources

#### 🔖Best book for Coding Interviews - [Cracking-The-Coding-Interview](https://bit.ly/3WpR6wy)      
[Alternate Link 1](https://mega.nz/file/JJQRXQYR#b0EeBTHvGcPnvD-j8kuItzmgCnh1kZj32DDGIVQpFv0) [Alternate Link 2](https://mega.nz/folder/KhpUBLLR#cKmpMsctk9hV_p0hUaZG_Q)

##### Some other helpful books

- [CSES Competitive Programming Handbook](https://mega.nz/file/ZQIX1IjY#6S8FY39nLdRScbEL9uL0J_2wGWkvmYCQeibC5UrU81k)
- [Problem Solving Strategies](https://mega.nz/file/sER3mQoI#eCsgS89O3voBhcSAFmZNdZTvQREZ3o5cQrWQNyFZuNY)
- [Programming Challenges](https://mega.nz/file/lAJnxaqD#srD7jyEPzm9X0LlvlDtkFzzfoid_dpeeYXFFCeTEU-0)
- [Concrete Maths](https://mega.nz/file/NAYTAAhA#Kow_caWhfOdb3R-P1YrY6j3Ap7mckktfNLKBZWcpxh4)
- [Algorithms Design Strategies](https://mega.nz/file/9EQFmIgR#h-fZvrDN2bJN7Br-13m9NnlkfEhxzMxz0yzLAGqsfLY)
- [The Algorithms Design Manual](https://mega.nz/file/pJpHjKoK#LpZe3G-NnoEBKjBgjYXhH2nRCWpsaLKJfkpNy5EqGX0)

Urls for other Notes, and Reading Resources picked from different editorials.

<details open>
  <summary>View Resources/Articles</summary>

- [📘 CPP Data Structures, Algorithms, and STL Sheet](./Resources/Articles/CPP-STL.md)
- [📘 CPP Syntax Cheet Sheet](./Resources/Articles/CPP-SYNTAX.md)
- [📘 GitHub Sheet](./Resources/Articles/GitCheatsheet.md)
- [📘 Data Structures and Algorithms](https://www.scaler.com/topics/data-structures/)
</details>

<details>
  <summary>Last Minute Notes</summary>

- [📙 Operating System (apni kaksha notes)](https://drive.google.com/file/d/1B_kmekdghu-sO8-eXZ1kc4Xx_YtB8BPM/view)
- [📙 Last Minute Notes – Operating Systems](https://www.geeksforgeeks.org/last-minute-notes-operating-systems/)
- [📙 Last Minute Notes – Computer Networks](https://www.geeksforgeeks.org/last-minute-notes-computer-network/)
- [📙 Last Minute Notes – DBMS](https://www.geeksforgeeks.org/last-minute-notes-dbms/)
- [📙 Last Minute Notes – Algorithms](https://www.geeksforgeeks.org/lmns-algorithms-gq/)
- [📙 Last Minute Notes – Data Structure](https://www.geeksforgeeks.org/lmns-gq/lmns-data-structure-gq/)
- [📙 Last Minute Notes – Git](https://towardsdatascience.com/a-git-cheatsheet-that-all-coders-need-bf8ad4d91576)
</details>

<details>
  <summary>Notes/Question/Explanations</summary>
  
- [📒 Segment Tree | HackerEarth](https://www.hackerearth.com/practice/data-structures/advanced-data-structures/segment-trees/tutorial/)
- [📕 Dynamic Programming | HackerEarth)](https://www.hackerearth.com/practice/algorithms/dynamic-programming/introduction-to-dynamic-programming-1/tutorial/)
- [📒 Disjoint Set Union (Union Find) | HackerEarth](https://www.hackerearth.com/practice/notes/disjoint-set-union-union-find/)
- [📕 Ternary Search | HackerEarth](https://www.hackerearth.com/practice/algorithms/searching/ternary-search/tutorial/)
- [📒 Binary Search for Beginners | Leetcode](https://leetcode.com/discuss/general-discussion/691825/Binary-Search-for-Beginners-Problems-or-Patterns-or-Sample-solutions)
</details>

<br />

## 🏆 Sources

Other coding websites, [hackerearth](https://www.hackerearth.com/), [interviewbit](https://www.interviewbit.com/),[gfg](https://www.geeksforgeeks.org/), [leetcode](https://leetcode.com/), [codechef](https://www.codechef.com/), [codeforces](https://codeforces.com/), [CSES Problem Set](https://cses.fi/problemset/), [Scaler](https://www.scaler.com/topics/)  
Youtube channels, [love babbar](https://www.youtube.com/channel/UCQHLxxBFrbfdrk1jF0moTpw), [take you forward](https://www.youtube.com/c/takeUforward),

<!-- CONTRIBUTING -->

## 🏆 Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

### :handshake: Our Contributors
<details>
  <summary>Click to view!</summary>
  <a href="https://github.com/sachuverma/DataStructures-Algorithms/graphs/contributors">
    <img src="https://contrib.rocks/image?repo=sachuverma/DataStructures-Algorithms" />
  </a>
</details>

<!-- LICENSE -->

## 🏆 License

Distributed under the MIT License. See `LICENSE` for more information.

<!-- CONTACT -->

## 🏆 Contact

Project Link: [https://github.com/sachuverma/DataStructures-Algorithms](https://github.com/sachuverma/DataStructures-Algorithms)  
Sachin Verma : [sachinverma53121@gmail.com](sachinverma53121.gmail.com)

Drop a ⭐ if you like my work😄

<!-- MARKDOWN LINKS & IMAGES -->

[contributors-sachu]: https://img.shields.io/github/contributors/sachuverma/DataStructures-Algorithms.svg?style=flat-square
[contributors-url]: https://github.com/sachuverma/DataStructures-Algorithms/graphs/contributors
[forks-sachu]: https://img.shields.io/github/forks/sachuverma/DataStructures-Algorithms.svg?style=flat-square
[forks-url]: https://github.com/sachuverma/DataStructures-Algorithms/network/members
[stars-sachu]: https://img.shields.io/github/stars/sachuverma/DataStructures-Algorithms.svg?style=flat-square
[stars-url]: https://github.com/sachuverma/DataStructures-Algorithms/stargazers
[issues-sachu]: https://img.shields.io/github/issues/sachuverma/DataStructures-Algorithms.svg?style=flat-square
[issues-url]: https://github.com/sachuverma/DataStructures-Algorithms/issues
[license-sachu]: https://img.shields.io/github/license/sachuverma/DataStructures-Algorithms.svg?style=flat-square
[license-url]: https://github.com/sachuverma/DataStructures-Algorithms/blob/master/LICENSE
[linkedin-sachu]: https://img.shields.io/badge/LinkedIn--yellow?style=flat-square&logo=linkedin
[linkedin-url]: https://www.linkedin.com/in/sachuverma/
[portfolio-sachu]: https://img.shields.io/badge/Portfolio--red?style=flat-square&logo=clickup
[portfolio-url]: https://sachin-verma.netlify.app/
