Considering the point of view of a CS fresher aiming for a job at a top tech company such as Google. In case you’re facing the interviews soon, feel free to jump towards the end of the answer.
This article is based on the interviews faced (Specifically Microsoft, Google and Uber). The plan provided here helps clear interviews. Here is how to prepare as a Software Engineer at Google. We can divide the preparation stage into roughly four stages.
How to prepare as a Software Engineer at Google
Building the Foundations
- The first step is getting familiar with a programming language. Most especially, Python due to its flexibility and library support making it much easier to get started with different projects. Here are a few links to get you started,
- The next step is focusing on your theoretical foundations. Be very attentive in the fundamental CS courses taught in your college. In case you do not have access to your college courses, try these equally beneficial alternatives.
- Pay extra attention to data structures and standard algorithms and focus on the standard algorithmic paradigms including Greedy algorithms, Dynamic Programming, Divide and Conquer, etc.
Explore multiple fields
After focusing on your fundamentals, you should now start diving into a few core topics. This stage would involve being a part of advanced courses and performing various projects.
- Start exploring different fields, a few must-do courses for a CS grad are given below.
- Keep working on side projects in the meantime, they give you experience which normal coursework cannot provide. If you’re short of project ideas, you can refer to my answer on possible side-projects.
Developing your Profile
A lot of students are confused regarding this stage due to its inherent vagueness. Should we focus on competitive programming or side-projects? The takeaway is to have concrete results. Results that prove your skills and competence for the job. They can be,
- An active GitHub handle with quality repositories
- Good performance in Competitive Programming Contests
- Diverse Projects demonstrating your prowess
- Research Papers: Their importance in tech interviews is debatable, but they surely demonstrate your ability to perform in long term projects.
Preparing for the Interviews
You have strengthened your foundations, now is the time to challenge the most critical part. This stage can be divided into the following,
- Kick Off: This is the initial stage where you mainly research about the interview process and familiarize yourself with it. Revision of Data structures and Algorithms should be your main focus right now. A few helpful resources,
- Google’s Official Site, Blogs
- Interview Help Books (e.g. Cracking the Coding Interview)
- Practice: This is where the actual preparation happens. You should choose a language and start coding in it. This is a good time to start white-board coding. You should also start practicing interview specific questions now. Here are a few resources to help you practice.
- Consolidation: We’re in the final stages before the actual interviews, now it’s the time to consolidate what we know. An important thing in the final weeks would be practicing solving questions ‘loudly’. Doing mock interviews can also help you perform much better in the real deal.
- The duration of this stage can vary from months to weeks.