Interview Experience @ Google: Machine Learning SWE III [2024]

Working at Google is a dream. When the opportunity to interview for the ML Software Engineer role came my way, I knew it was a chance I couldn’t let pass. It’s important to note that this isn’t a traditional Data Science (DS) position. Depending on the team you’re matched with during the Team Match Round, the role could involve varying proportions of Software Engineering (SWE) and Data Science/ML work.
Getting Started
The process began when an HR reached out to me on LinkedIn. I responded, and we scheduled a telephone call where I shared my resume. My first round was expected about a month later, giving me time to polish my skills.
Overview of the Process
Here’s a snapshot of what to expect:
- Screening Round (1 round)
- DSA Rounds (3–4 rounds, depending on the hiring committee’s feedback)
- Domain-Based Rounds (1–2 rounds, tailored to your area of expertise, e.g., ML, AI, embedded systems, compilers, etc.)
- Googlyness Round (1 round, focused on cultural fit)
- Team Match Rounds (Direct discussions with hiring managers post-clearance of technical rounds)
My Detailed Interview Experience
Screening Round (DSA and Coding, 45 mins)
- Topic: Strings
- Difficulty: Hard
- The problem started with a small coding task, which evolved into a much harder follow-up question requiring a sub-linear time complexity solution.
- Takeaway: Focus on algorithmic thinking and modular coding.
Round 1: DSA (Graphs, 45 mins)
- Topic: Multi-Source BFS
- Difficulty: Medium to Hard
- I initially missed the optimal solution and began with Dijkstra’s algorithm. Midway, I realized that multi-source BFS was a more efficient approach. Managed to complete the problem just in time.
Round 2: DSA (2D Dynamic Programming, 45 mins)
- Topic: 2D DP
- Difficulty: Hard
- I started with a brute-force solution, transitioned to memoization, and finally implemented a bottom-up approach. I completed the problem successfully, including calculating the time complexity.
Round 3: ML (Domain-Based, 45 mins)
This round was intriguing because it wasn’t directly related to the domain topics I had shared with the recruiter. It tested both my linear algebra and ML implementation skills.
While I cannot share the exact questions, the discussion revolved around:
Mathematical Reasoning:
Solving a problem involving probabilities on similar lines as deriving P(+∣”No!”) from given conditional probabilities P(+), P(+∣”!”), and P(+∣”No”).
Implementation Task:
Given the description of a mathematical model for sentiment analysis, I was asked to:
- Implement the functions
fit(texts, labels)
andpredict(text)
. - Follow-up: What optimizations or alternative approaches could improve the model? Including TF-IDF, BPE tokenizers, and potential deep-learning solutions.
This round required a theoretical understanding and the ability to translate concepts into practical implementations.
Round 4: DSA (Heaps, 45 mins)
- Topic: LeetCode Hard Problem on Heaps
- Difficulty: Hard
- Solved using an O(nlogn) solution.
Round 5: Googlyness Round (45 mins)
- Focus: Cultural fit and handling scenarios.
- The interviewer assessed how I approached challenges, collaborated with teams, and checked my alignment with Google’s values.
Team Match Rounds
After clearing the technical rounds, the recruiter asked me to fill out details, such as:
- People at Google who could vouch for me.
- My reasons for switching roles.
- Impactful work I had done in the past.
I also specified my preferred location. While I was open to opportunities in Bangalore, I declined Hyderabad without a particular reason, as Bangalore was my preferred choice then.
The Team Match Rounds were directly with hiring managers and focused on my resume. Each discussion revolved around my past experiences, skills, and potential contributions to their teams.
Key Takeaways
Start the Process: Many hesitate due to fear of rejection. I followed the roadmap on NeetCode.io to build confidence, completing at least 50% of each section before my screening round.
Problem-Solving Framework:
- Understand the problem.
- Explain the brute-force approach and its time complexity.
- Present and code the optimized solution.
- Walk through your code and the time complexity of the optimized approach.
- Completing this within 30 minutes demonstrates readiness.
Google’s Interview Focus: It’s more about the approach than solving the problem. Treat the problem like a development task rather than competitive programming. Expect follow-up questions that might require changes to sub-modules or enhancements to your solution.
Own Your Resume: Know every detail on your resume and prepare follow-up questions for topics listed there.
Final Thoughts
Interviewing at Google is an intense yet rewarding process. It challenges your technical expertise, problem-solving skills, and cultural fit. If you’re preparing for Google, focus on modular thinking, domain knowledge, and building confidence through structured preparation.
Remember, every rejection is a stepping stone to success. Start the process, learn from it, and you’ll get closer to your dream role!