Preparing for the interviews takes a lot of time, so you need to plan accordingly.
How much time do you need? In How to Prepare we learned that solving 200 to 400 practice interview problems on Leetcode is probably the most important part of the preparation. This alone will take you 200 to 400 hours – we can approximate that you will spend on average an hour on the problem. Let's take the value in the middle, and say 300 hours.
On top of that, you will spend a lot of time on mock interviews, preparation for system design and behavioural interviews, and on many small things like adjusting your resume once more. Let's say this will take another 100 hours, so the new total will be about 400 hours.
If you are not very comfortable with algorithms yet (simple test: do you know how to write DFS, BFS, and binary search?), you will also need a lot of extra time to learn the common algorithms and to practice using them. It can easily take as much time as solving problems, so we can add another 300 hours here.
As a result, you may easily need 400-700+ hours to prepare for the interviews, depending on your current situation and background. If you work on this for 3-4 hours every day (it's hard to stay focused longer than that, and many people may also have a fulltime job or other responsibilities at the same time), you will need about 3-6 months just to prepare for the interviews.
In my experience, 3-6 months is a pretty good estimate. Right before my onsite rounds, I intensively prepared for about three months, around 300 hours total – but it's worth mentioning that I already knew most of the needed algorithms before that.
Of course, luck and your personal working style play a role, and there are people who pass interviews after just a little bit of preparation, and people who drag preparation for years.
If you decide to prepare, it's best to intensively focus on it for several months right before your interviews – this way you will be in a good shape at the right time, and will still clearly remember everything you have learned.
Be also aware that applying to the companies, talking to the recruiters, scheduling and passing interviews, and waiting for the results will take a lot of time – easily up to 2-3 months.
It may realistically go something like this:
- Month 1. Applying to all the companies you want, waiting for the responses, talking with the recruiters, and scheduling interviews.
- Month 2. Passing phone interviews, waiting for the results, scheduling onsite interviews.
- Month 3. Passing onsite interviews, waiting for the results, receiving offers, negotiating, signing the papers.
It's best to start doing this earlier, in parallel to your preparation. If you are starting to feel comfortable with the interview problems, and think that you need just one or two more months, it may be a good time to start applying! Recruiters are also often pretty flexible, and once your get in contact with them (sometimes not an easy task!), they may even schedule your interviews in a month or two if you ask for some extra preparation time.
After you accept a new job offer, you may also need some time to wrap everything up in your current work place. And if you are moving to the new city or country, waiting for the visa and other documents and actually moving can also easily take several more months.
In total, it often takes 6-12 months to prepare for the interviews, pass them, and start working in a new place. So you may want to start your preparation as early as possible, plan accordingly, and reach out to the companies earlier so that the process doesn't take too long.
- Did you prepare or solved problems before?
- How well do you know algorithms? (Test question: do you know DFS, BFS, binary search, dynamic programming, and linked lists?)
- What is your software engineering background?
- How much free time do you have?
- Now: start preparing.
- In 3 months: start applying.
- In 4 months: pass interviews.
- In 8-12 months, if everything goes well: move abroad and start a new job.