Master plan to crack your next software interview

Akash Bhayekar
8 min readMay 9, 2021
Photo by Amy Hirschi on Unsplash

So, you are planning to start interviewing for your next job and you don’t know where to start. Here’s the quick guide on how to plan for the preparation.

Also, find all the resource you will need to read, revise and practice mainly focusing on following areas -

  • Data Structures
  • Problem Solving
  • Algorithms
  • System Design (If preparing for senior SDE role)

Timeline

Start planning backwards. When is your next important interview? Let's say you have 3 months for the interview, plan to invest half of the time (6 weeks) for revising and practicing questions on focused areas. For the second half you can focus on general problem solving on mixed concepts and solve past coding interview questions of the companies you are appearing for.

Schedule

Photo by Emma Matthews Digital Content Production on Unsplash

If you are a working professional, put aside at least 2–4 hours daily on weekdays and 4–6 hours on weekends. If you are student, you can plan your day around your class schedules and can put more hours into reading books and get in depth of each and every topic. Solve at least 15 problems on each topic (5 each in easy, medium and hard).

For me, reading first thing in the morning help, as I found this is the best time to absorb the concepts. Then practice few simple questions on those concepts (just get pseudo code or solutions in mind). You can put any time between you wake up and go to office. If you are not a morning person you can put this at the end of the day when its quiet outside, which will help you focus better.

Use another slot in a day of around 1–2 hours for coding those solutions on computer and test it.

For weekends, focus on coding marathons, challenges and timed competitive programming. book focus blocks of 3-4 hours to get the most out of it.

Strategy

Start with what you are most comfortable in and has some context on the concepts. Pickup your notes for reading summary of all those DS Algos or take help of books and YouTube videos. Examples to start with are Arrays, Linked Lists, Sorting and Searching Algos.

Then level up to the topics where you need more revisions. cover more difficult but important questions which are popular in interviews based on Trees, Graphs and Dynamic Programming.

Once you got good hold of concepts and some comfort with problem solving, you can start interviewing with the companies. Learn from each interview and ask for feedbacks. Find out your weakness from the experiences and practice more on those, if needed go deeper into the concepts, read more about it in books. You can also refer to question from the company’s past interview questions which will give you better idea about the of the level of the question.

Revision

If you have notes then you can revise from those, if you don’t have one this might be the great time to start so that you can use it for your next preparations. It's a onetime investment and will help tremendously in the future. You can either use OneNote/Evernote to write digitally or use a physical note book (old schools is the best :P).

Write very concisely all the concepts from your understanding. For taking notes don’t copy sentences and paras directly from the source, instead close the source and try to remember what you read and write it in your own words. This way you will retain it longer in the memory and have better clarity. It also helps in revising the concepts faster when those are written in your own words.

If you feel you have time to take notes then you can always use online articles and videos for quicker revisions.

Resources on data structures and algorithms

15 Data structures in 5–10 mins each by Gayle Laakmann McDowell

15 Algorithms in 7–8 mins each by Gayle Laakmann McDowell

15 Algorithms in 7–8 mins each by Gayle Laakmann McDowell

Learning path with topic wise concepts and problems

A book that cover all concepts and types problems for interviews

Practice

Photo by Ilya Pavlov on Unsplash

Once you have got good hold on basic concepts on DS and Algo after revising and solving questions on individual topics, its time start preparing problem solving. In this step you will practice problems in general which can be based on multiple areas at the same time and with varied complexities. More you practice the better and faster you get.

3 step method to solve any problem

After reading and understanding the question completely, start figuring out the solution in your head. Use notebook to write the assumptions and come up with most simple solution which might be brute force. Create 2–3 sample data to test through your solution.

  1. Think of solution, check if it works logically and write pseudo code quickly (language agnostic). Find out the complexity (space and time) and check if you can make it better in any way. Iterate this step until you come up with the best possible solution. Finally test your solution with some sample data.
  2. Write the actual code using pen and paper referring pseudo code from last step using any preferred language. Writing on paper is important as it makes you think of all edge cases and nuances of problem which you might have missed in solutioning phase. You won’t get help of IDEs and Intellisense, this emulates online coding interviews where you have to write code on word doc (like in google).
  3. Write the code on your computer and run it through all test cases you created. this is where you will find out if there are any build or run time issues. this will help in machine coding rounds, which are common in start-ups as qualifiers round.

Follow this method for every problem you solve. this way you can never forget the strategy you used to solve the question, which can also be applied to other similar problems.

Sources to practice

Practice paths

Great place to start problem solving with this as it covers all topics with gradual increases in difficulty.

Company wise Questions

If you have interview scheduled for a company you can then go through previous interview experiences and question of that company. this will help you gauge the level and gain confidence.

Coding hackathons and challenges

On weekends you can do timed problem solving to emulate interview experience. Pick up any live challenge or from the archives. Some of them also offer interviews/jobs if you clear the bench mark.

System design preparation

If you have 2+ years of experience and appearing for Senior positions like SDE 2/ SDE3 then you will also need to prepare for design rounds. It's necessary to have good understanding of design systems, patterns and scalability. If you have some experience of design in your current company then you might already know few things and it will help you in the interviews

Refer to below sources for more examples and concepts related to system design.

System design playlist by Gaurav Sen (29 videos, each 10–20 mins)

Tech dummies Narendra playlist (30 videos, each around 30–40 mins)

These video covers majorly used examples of system design. You will learn how each system is designed differently according to the needs of the system while applying same basic principles. If you are interested in more theory and concepts behind then please refer books in other references.

To practice for system design interviews, schedule time to have discussions with people with similar interests and brainstorm system design of any app or website you like or use.

Conclusion

  1. Start preparing 1–3 months before the major interview, plan in reverse from interview date to today.
  2. Create a daily schedule and stick to it as much as possible, put 2 slots in a day. On weekends do coding marathons/challenges of 3–4 hours each.
  3. Read and revise the basic concepts, use your notes or read online summaries.
  4. Practice as many as possible. Solve the problem using 3 step methods. Iterate till you get the best solution
  5. Prepare for design interviews using sample design videos on YouTube. Practice with your friends and brainstorm ideas.

Disclaimer: I have no association with any links or sources mentioned here and credit goes to the creator of those sources.

--

--

Akash Bhayekar

Software Engineer 2 at Microsoft with 6+ years of experience in Software Development | CSE Grad from VNIT Nagpur | Travel Enthusiast | Design Thinker