Preparation plan for placement interviews
Tags: codenewbie, productivity, linux
Published: 2020-09-16 10:54:51

### 3 Months interview preparation schedule

##### Week 0: Programming language
##### Week 1, 2 & 3: Data Structures
##### Week 4, 5 & 6: Algorithms 
##### Week 7 & 8: System Design
##### Week  9 : Operating System
##### Week 10: Object-Oriented Design
##### Week 11: Database management
##### Week 12: Revision.

----

**Programming language** - 

The best programming language for your #coding interviews is the language that 
you’re most comfortable with.  Prefer - #Java or CPP or #Python or #javascript 

Brush up all the concepts of the #programming  language of your choice.

---

**Data Structures**

Start by revising Computer Science Data Structures concepts.

1. Complexity Analysis (a.k.a BigO)
2. Arrays
3. Stacks
4. Queues
5. Linked List
6. Trees
7. Tries 
8. Graphs (BFS and DFS)
9. Hash Tables
10. Heaps

----

**Algorithms**

Next, start by revising the most asked algorithms and the problems based on them. 

1. Searching and Sorting
2. Greedy Algorithms
3. Dynamic Programming
4. Pattern Searching
5. Other String Algorithms
6. Backtracking
7. Divide and Conquer


----


**Searching Algorithms for an interview**

1. Linear Search
2. Binary Search
3. Jump Search

**Sorting Algorithms for an interview**

1. Selection Sort
2. Bubble Sort
3. Insertion Sort
4. Merge Sort
5. Quick Sort
6. Heap Sort
7. Counting Sort


-----

**System Design** - 

*System Design Basic Concepts*

1. Network Protocol
2. Horizontal & Vertical Scaling
3. Cache
4. Load Balancers
5. Content Delivery Network (CDN)
6. Reverse Proxy
7. Message Queue
8. Consistent Hashing
9. Database Sharding 


-----


**System Design** - 

*Large System Architecture*

1. Design Url Shortening Service (ex – bitly)
2. Design Pastebin Architecture
3. Desing Rate Limiter
4. Parking Lot System
5. WhatsApp
6. Uber design 
7. Instagram 
8. Tinder Service


----
**Operating Systems** - 

1. Threads
2. Locks
3. Synchronization
4. TLB
5. Interrupt vs System Call
6. Kernel
7. Round Robin Algorithm
8. Threads 
9. Concurrency
10. Paging
11. Page Replacement Algorithms
12. Interrupts 
13. Scheduling 

-----

**Database Management System:**
1. Introduction to DBMS
2. Database Architectures
3. ER Model, Relational Model
4.Keys in Relational Model
5. Database Normalization
6. Normal Forms
7. Concurrency Control
8. Indexing in Database
9. B+ Tree Introduction and SQL.


------

**Object-Oriented Design** - 

1. Class & Objects 
2. Polymorphism
3. Abstraction
4. Inheritance
5. Encapsulation
6. Practice Questions 
    - Design an ATM.
    - Design an elevator. 
    - Design a Parking System.

----

Resources to follow for Coding interview Preparation - 

1. [geeksforgeeks](http://geeksforgeeks.org)
2. [codechef](http://codechef.com)
3. [Hackerrank](http://hackerrank.com)
4. [leetcode](http://leetcode.com)
5. [interview bit](https://www.interviewbit.com)

...

```
Revise Core CS topics also

1. Compiler design
2. Theory of computation
3. Discrete Mathematics
4. Microcontrollers/Microprocessors
5. Computer Architecture
6. software engineering
7. Computer networks
8. DBMS
```

-----

Some useful links/resources 
1. [Interview-Questions](https://github.com/MaximAbramchuck/awesome-interview-questions)
2. [Interview](https://github.com/andreis/interview)
3. [Leetcode-java](https://github.com/gouthampradhan/leetcode)
4. [Tech-Interview HandBook](https://github.com/yangshun/tech-interview-handbook)
5. [Algorithms](https://github.com/TheAlgorithms)
6. [Data-Structures](http://btechsmartclass.com/data_structures/introduction-to-algorithms.html)
7. [Python](https://github.com/Asabeneh/30-Days-Of-Python)
8. [System Design](https://towardsdatascience.com/the-complete-guide-to-the-system-design-interview-ba118f48bdfc)