Google | L4 | Rejected
Summary
I recently completed an L4 onsite interview at Google, which unfortunately resulted in a rejection. My performance highlighted areas for improvement, particularly in coding speed and optimizing solutions efficiently during the rounds.
Full Experience
I recently completed an L4 onsite interview at Google, and unfortunately, it ended in a rejection. This experience taught me valuable lessons, especially about time management and coding efficiency. I realized I took too much time initially trying to understand and optimize problems on the whiteboard before even writing any code. I also struggled with the speed required to write correct, bug-free code quickly, a skill I now recognize as a distinct 'muscle' that needs dedicated practice. Knowing basic algorithms by heart for quick implementation, like recursions, DFS, BFS, quicksort, and mergesort, would have been a huge time saver. I also understood DP quickly but couldn't write the solution fast enough. Despite acing the SDI and Googlyness aspects, my performance on the coding problems was not up to par due to these issues.
Interview Questions (2)
You are given an infinite number of dice and you want to represent numbers with them. A represented number is lining up dice faces to make up the number, so 11 is 2 dies of faces 1 and 1, 15 is one '1' facing die and one '5' facing die. A number can only be represented fully or be a sum of fully represented numbers. For example:
- 66 can be represented fully
- 82 cannot as we don't have a die face for '8' so we have to find a number that sums to 82 and is made up of representable number, so 82 can be 66 + 16 and that would be the correct representation
You need to find the path with the largest sum in a matrix, but you cannot go back or diagonally. There are barriers of 0s along the way. The matrix also has no cycles, so you cannot go back to a number from another number.
Example:<br/>[1,2,3,4,5]<br/>[0,2,0,0,9]<br/>[1,6,7,0,0]<br/>[0,8,0,0,10]<br/>
This is a DP problem.
Preparation Tips
My preparation involved solving 127 LeetCode problems over three months. I focused on understanding basic algorithms like recursion, DFS, BFS, quick sort, and merge sort, aiming to implement them quickly and flawlessly. I also worked on dynamic programming concepts. However, I realized I needed more practice in writing bug-free code at speed, which I believe is a different skill set than just understanding the algorithms. I now plan to practice writing correct and bugless code as quickly as possible, either by re-solving familiar problems or tackling very easy ones, to build this crucial muscle.