Company: Google
Level: L5
Position: Data Applications Engineer
Details:
After discussion with the recruiter about the role, following were the details of the Interview Loop
- 3 Coding Rounds
- 2 System Design Rounds
- 1 Googliness
Coding Round 1
This happened in the month of September at around 10 PM India Time. I requested for an interviewer during normal time but their were no interviewers available so I opted for this time. Here are the details:
- After introduction, we jumped straight to the coding part
- It was a matrix question based on chess game where it asked me to find paths between 2 points based on certain conditions. It was similar to https://leetcode.com/problems/unique-paths/
- I was able to solve it using DFS and ran 2 test cases successfully
- However, the interviewer said that the approach was not scalable enough and I should optimize it. I tried to use set instead of a list to speed the program up but the interviewer said that the approach can be improved without any change in data structure. I tried but the time was over
Coding Round 2
This should have happened on the same day but the interviewer didn't show up. My recruiter rescheduled it two days later
- I was given a list of numbers and was asked to generate combinations that would sum up to the highest odd number value between the least and the max number on that list. This is very similar to combination sum: https://leetcode.com/problems/combination-sum-ii/
- I solved that using backtracking algorithm and again was able to run a few cases
- I even asked conditions like if the list can be empty or if a number in the list can be repeated. The interviewer answered No and Yes respectively. However for the second, he said that each number can be used only as many times they are present in the list
- After I solved it, he asked me if I can optimize it further. But, we ran out of time
Coding Round 3
This happened after 3 weeks because of a conflict at interviewer's end and then because my recruiter went on vacation for a two weeks.
- This time I was presented with a problem regarding a wedding and if I could prevent fight at the wedding by inviting guests based on relevant conditions. This was a graph problem very similar to course schedules: https://leetcode.com/problems/course-schedule-ii/
- I was doing well with this and even created an algorithm using DFS by creating adjacency list. I ran a few cases and it seemed to work
- However, the interviewer asked me its time complexity which I was not able to figure out
- Then the interviewer gave a special case for which my code failed. I added a few conditions and then it worked
- After that the time was over and we didn't get time to optimize the code
After about two weeks, I got an email from my recruiter saying that the hiring team has decided not to proceed with my application. There was no specific feedback and the recruiter asked me reach out in ten months. To be honest, I was heartbroken for a day or two as Google is my dream company. I wasn't sure what went wrong but after some review, here are a few things I understood:
- Compared to other FAANG companies, Google sets a very high standard. They want correct, well optimized code within 45 minutes so speed is the key
- I practiced a lot of SQL questions as well as my recruiter said there might be a few. It was a waste of time. There was none. Note to self: Google doesn't care about SQL for data engineering positions
- It is not just enough to know the algorithms. Google expects non-bookish knowledge. The key here is practice and nothing else.
- Interviewer behaviour matters a bit. My first and third interviewer were comparitively rude and non-responsive. They sat on mute with no response while I discussed my approach with them. I think that made me nervous. While Google says their interviews are more of a discussion, that is not the case.
The positive I take from this is that I practised a lot of coding questions and it improved my skills exponentially. While the results are not in my favour, may be it will be the next time I get an opportunity.
Cheers!