Master plan to crack your next software interview

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 -

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.

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

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

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

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store