I have created the answer for this question by taking my own experience and also asking it to my friends and formulating the points.
I am not saying that if you follow this you will get a job, but this will provide you a way you prepare better for interview.
3 months is a reasonable time to prepare for interviews. I recommend to spend around 3 to 4 hours daily for preparing. Weekends spend more time.
In 3 months you will learn:
1. Basics of programming.
2. Data structures and algorithm.
3. System Design concepts.
4. Commonly asked coding questions.
5. OS Concepts.
Below I have given the link from where you need to prepare for first 4 points. For OS concepts you can refer YouTube videos.
3 months will have 12 weeks. I have structured in such a way that they will help you to prepare better for interviews.
Week 1:
Choose a programming language and get your fundamentals right. Write basic programs and execute them.
Note: During the interview, stick to one programming language. Don’t switch the language during the interviews.
Week 2:
Start coding more complex problems.
For example:
1. Read from a file.
2. Working of pointers.
3. Function pointers.
4. String Operations.
5. Again lots of programs related to pointers.
Week 3 and Week 6:
Learn about data structure and algorithm. This book has exhaustive list of algorithms and data structures that can be asked in interview.
Understand the program that I have given you. Try it on your own and then compile the program that has been given to you.
Week 7:
In this week practice more complex coding problems related to:
1. Dynamic Programming
2. Backtracking
3. DFS
4. Strings
5. Matrix
6. Divide and conquer
7. Bit Manipulation
8. Linked List
9. Array
Try to solve at-least 50 to 60 questions from those links. All the questions that I have solved has been frequently been asked in interview.
Week 11:
Learn about System design. Below I have written a book on system design concepts.
Week 12: OS Concepts:
Go to YouTube or find a book on Linux System Programming and be prepared about below topics:
1. Process and Signals
2. Inter Process Communication
3. Semaphores
4. Sockets.
“Beginning Linux programming”, is a good book to start with.
So you have covered all the concepts in 3 months for your interview. All the best.