This is my coding preparation plan that I hope to follow during the time frame. Many things were adopted from other interview prep guides, some were suggested by more experienced coders. Everything was then customised according to my knowledge and experience.
Time frame: ~5 months (mid May - October)
Goal: Hone my programming skills, improve Java knowledge, and solve complex problems to become a more proficient and confident coder ππ»
- Upcoming Projects π―
- My Timetable π
- Background π
- Overview π
- Plan π
- Show Your Support π€
- RR15: Unconfirmed Title (Work in Progress π§)
Week 1 beginning 21/05/23:
Week 2 beginning 28/05/23:
Week 3 beginning 04/06/23:
Week 4 beginning 11/06/23:
Week 5 beginning 18/06/23:
Week 6 beginning 25/06/23:
Week 7 beginning 02/07/23:
Week 8 beginning 23/07/23:
Week 9 beginning 30/07/23:
Week 10 beginning 06/08/23:
Week 11 beginning 13/08/23:
Week 12 beginning 20/08/23:
Week 13 beginning 03/09/23:
Week 14 beginning 10/09/23:
Week 15 beginning 17/09/23:
Week 16 beginning 01/10/23:
Plan is based on existing preparation guides:
- Interview preparation guide bible from Sergey Makagonov
- List of Udacity courses developed with Google
- Good guide on GitHub
- Coding Interview University - A complete computer science study plan to become a software engineer
- Build your own X - Master programming by recreating favorite technologies from scratch
- Developer Roadmap - Interactive roadmaps, guides and other educational content to help developers grow in their careers
- LeetCode Animation - Demonstrate LeetCode questions in the form of an animation
- LeetCode Patterns - Problems are grouped under their respective subtopic, in order to focus on repeatedly applying common patterns rather than randomly tackling questions
To stay motivated during preparation:
- Programeme Instagram
- Tushar Royβs YouTube Channel
- CS Dojo's YouTube Channel
- HackerRank's Youtube Channel
- Find someone who is also preparing for interviews and discuss problems together
- Mock interview each other
- Subway Surfers VS Code Extension - focus, focus, focus
The areas I know:
- Software Development - Back-end & Front-end
- SQL - Data Analysis
The areas I need to work on:
- Algorithms & Data Structures (Stacks, Queues, Graphs, Trees, etc.) - 80% of time
- Object-Oriented Programming (in Java)
- System Design (Scalability π)
- Dynamic Programming
- Computer Architecture (Cache, RAM, etc.) - review the course
- Operating Systems (Processes and Threads, Scheduling) - review the course
- Computer Networks (especially TCP/IP) - review the course
I have decided to split my plan into two phases (three months each): summer and autumn phases.
Time to dedicate:
- 10 hrs on weekdays, 2 hours on weekends
- 8 weeks
- Total: ( 10 + 4 ) x 8 = 112 hrs
Objective: solve > 200 problems on Leetcode! π
Programming language chosen: Java
Areas to work on:
- Algorithms (e.g. sorting)
- Data Structures (e.g. lists, stacks, queues, hash-map)
- Graphs (e.g. BFS, DFS)
- Trees (e.g. BST)
- Object-Oriented Programming (in C++)
- Dynamic Programming
- Mock Interviews - once a month
Where to study:
- Programming Challenges by Steven Skiena - first 3 chapters (theory only)
- LeetCode - start from easy Facebook, LinkedIn, Uber, AirBnb, then focus on middle and hard problems
- InterviewBit - go for another theory from video lectures and problems
- HackerRank, Codeforces - if time left for contests (to keep being interested in solving problems)
- Codefights
- Algorithm Design Canvas - general guides on how to solve algo problems
- Exercism - fun practice in own time
- FreeCodeCamp - open-source codebase and curriculum, learn to code for free.
- Programming Books - π freely available programming books
- Abdul Bari - π
- Bro Code - coding bootcamps hate him! See how he can teach you to code with this one weird trick...π
- Neetcode - Try the problem for 10-15 minutes, watch the first (theory) part of the video solution, try the problem again and either solve it or stop after 30 min, then watch the rest of the video for the implementation, then fix your implementation if needed. If you didnβt get it on your own revisit the problem in a few days. Rinse and repeat.
- Structy - Data Structures & Algorithms made simple
- takeuforward - Great place to learn data structures, algorithms, most asked coding interview questions, real interview experiences
Comments:
- Push solved problems to Github for later usage to refresh memory
Time to dedicate:
- TBD but less than previous phase due to other commitments
- 10 hrs on weekdays, 2 hours on weekends
- 8 weeks
- Total: ( 10 + 4 ) x 8 = 112 hrs, total: 224 hours (be realistic, 200 hrs will be good too π)
Objective: solve 100 more Leetcode problems! π
Areas to work on:
- Computer Architecture (Cache, RAM, etc.)
- Operating Systems (Processes and Threads, Scheduling)
- Computer Networks (especially TCP/IP)
- System Design (Scalability uuh, cool)
- Mock Interviews - once a week (on weekends)
- Keep solving LeetCode problems + Cracking the Coding Interview
Where to study:
- Computer Organization and Design by David Patterson
- Computer Networking: A Top-Down Approach by Jim Kurose
- GitHub repos mentioned above
- Everything listed in Sergeyβs post (MUST!!!)
- Pramp
- Gainlo - wanna pay?
- Distributed Systems - highly recommended
- Watch past interviews of people on Glassdoor, CareerCup
Everything listed here is optional. Even though it is not that realistic to dedicate time to all these, I will try doing it during rest time at leisure π
Read Books:
Develop own website/landing page:
Improve existing codes:
- Software Engineering course project
- Data Mining course project - building financial models
Complete started courses:
Open Source projects to contribute:
Physical:
- Buy a whiteboard/glassboard, put it in front of a mirror - good investment
Thank you for taking the time to drop by and check out this revised study plan
If you've liked or found this helpful, please consider giving it a star π and supporting me on my journey to improve my programming skills and chase my aspirations. I'd love to hear your feedback on this project, so feel free to leave your thoughts and suggestions π¬
Every contribution counts and is deeply appreciated as I pursue a path of lifelong learning and aim to share meaningful content that connects with as many people as possible π
Thank you again for your support! π