/DataStructures-Algorithms

This repo contains links of resources, theory subjects content and DSA questions & their solution for interview preparation from different websites like geeksforgeeks, leetcode, etc.

Primary LanguageC++MIT LicenseMIT

Contributors Forks Stargazers Issues MIT License LinkedIn Portfolio

DATA STRUCTURES & ALGORITHMS

Resources and Solutions ^_^

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

Table of Contents


🏆 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, 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
Language
  • 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
Data Structure and Algorithms
  • 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
Projects
  • You need some projects to showcase your skills to your interviewer
    • Choices:
      • Mobile Development
      • Web Development
      • Machine Learning
      • Some other stuff (like Blockchain, IoT, etc.)
    • Time Required: 3 months (doing on weekends 6-8 hours)
Subjectve Topics
  • Do a Subsequent reading, revision any day you get time
    • Operating System
    • OOPS, Object Oriented Skills
    • DBMS, Databse Management
    • Computer Networking
Competitive Programming
  • 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
System Design
  • 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:
Misc Stuff

🏆 DSA Practice Resources

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.

🔰Leetcode Study Plan

🔰DSA Crack Sheet

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

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

🔰Top Interview Preparation Questions

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

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

Download Full PDFs

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

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


🏆 Theory Subjects

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

MUST-DO Questions for Interviews (DBMS, CN and OS)

Operating System:
  • 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
DBMS:
  • What is DBMS ? Mention advantages..
  • What is Database?
  • What is a database system?
  • What is RDBMS ? Properties..
  • Types of database languages
  • ACID properties (VVVVV IMP)
  • Difference between vertical and horizontal scaling
  • What is sharding
  • Keys in DBMS
  • Types of relationship
  • Data abstraction in DBMS, three levels of it
  • Indexing in DBMS
  • What is DDL (Data Definition Language)
  • What is DML (Data Manipulation Language)
  • What is normalization ? Types of them ..
  • What is denormalization ?
  • What is a functional dependency ?
  • 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 ?
  • 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
Compute Networks:
  • 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

1️⃣ Operating System

Overview
Process Concept
Thread Concepts
Process Scheduling
  • 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?
Synchronisation
Deadlocks
  • What is Deadlock?
  • Effects of Deadlock?
  • Necessary Conditions
    • Mutual Exclusion
    • Hold & Wait
    • No Pre-emption
    • Circular Wait
  • Methods for Deadlock handling
    • Prevention or Avoidance
    • Detection or Recovery
      • Banker's Algo
      • Ostrich Algo
      • Resource Per-emption
    • Ignorance
Memory-Management
  • 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 time in swapping is very high
    • OS can't swap process that has pending input/output
  • Imp topics to cover
    • Follow youtube videos
    • 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?
  • Page vs Frame?
  • What is TLB miss?
Virtual Memory
  • Goal of mem. Mgmt
    • To keep multiple processes in memory to allow multi-programming
  • Virtual Memory
    • 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
    • paging + swapping
    • Lazy Swapper
    • pager
    • page fault
  • 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)
    • 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?
Storage Management (optional)
For College Exams

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, your familiarity level with those DBs, etc

Resources
Introduction
RDBMS
Relational Database Design
Storage and File Structure
Transaction Management
Deadlock
Must Do (for system Design Interview)

3️⃣ Object Oriented Programming

What to expect from these resources,

  • To the point for your Interview Preparation
  • Sufficient for Academics
Resources
Overview
Pillars of OOPS
Misc

4️⃣ Computer Networks

Overview
OSI Model
Misc & System Design
Security

🏆 Other Notes and Resources

🔖Best book for Coding Interviews - Cracking-The-Coding-Interview | Link 2

Some other helpful books

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

View Resources/Articles
Last Minute Notes
Notes/Question/Explanations

🏆 Sources

Other coding websites, hackerearth, gfg, leetcode, codechef, codeforces, CSES Problem Set
Youtube channels, love babbar, take you forward,

🏆 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

🤝 Our Contributors

Click to view!

🏆 License

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

🏆 Contact

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

Drop a ⭐ if you like my work😄