Google(L4) Interview Experience
Summary
I interviewed for an SWE L4 role at Google. After multiple coding, Googlyness, and team-fit rounds, despite positive feedback on coding, the position was ultimately filled internally, and I did not receive an offer.
Full Experience
Recently I interviewed for SWE(L4) role at Google, and I wanted to share the experience.
Recruiter initially reached out to me on LinkedIn and scheduled a phone call for 2 days later. The phone call went on for almost 35-40 mins. During this conversation he asked me to rate myself in Coding, discussed about different projects I have worked on, why do I want to join google, On which products I want to work in google etc. After this discussion he asked me, how much time I want to take in order to prepare well. I asked for 2 weeks. At last he told me that he'll share a form and interview schedule. I was waiting for the interview link but didn't get. After 1.5 weeks I received a mail from recruiter saying that he won't be in loop with my interview schedules and a different recruiter (name xyz) will be looking into my profile.
Current Recruiter(xyz) asked me for time to prepare and I asked for 2 weeks again, And xyz scheduled 3 onsite rounds (I was skipped phone screen round, lucky me). 5 days prior to interviews I asked for 1 more week and the recruiter agreed, and rescheduled the interviews.
Fast forward to interview date.
Onsite round 1: https://leetcode.com/problems/separate-squares-i/description/
Wording were different, stating array of cakes (sqare sized) are put on a table having x and y co-ordinates. A horizontal blade is swinging and you need to stop horizontal blade such that total area of cakes get divided into two equal parts. input : (x,y, size_of_cake)
Experience: Positive I started with follow-ups like, will the cakes be centrally placed, what if there are multiple positions at which blade can be stopped then what would be the answer in that case. About all the follow-ups he asked me to assume however I like. I came up with the binary search approach and Wrote the working code (written only required function).
Follow-up: What if Y is too large, On which I said in real world scenarios it will loop for 60-70 times, on which he said what if correctness is upto multiple decimal points. On which I talked about ternary search, to which he said, that's what I was expecting.
Onsite round 2:
crux of the question: There are multiple routers placed, having description (name:string,pos_x:double, pos_y:double). Each router can transmit to a distance of dis:double, I was asked to find whether router_A(could be any) can transmit message to router_B(could be any).
Experience: Not so good
Interviewer voice was not so clear, so I was having difficulty listening to him, I took a lot of time to understand the question and clarifying my doubts, and came up with bfs solution, after that he asked me to code.
On the footsteps of 1st round I tried to write the required function only (and here the things got complicated). He started asking multiple questions while writing code, like you are creating adjacency graph multiple times(that's how we do in leetcode, if questions are not about mutiple queries :)). Finally I started writing class based implementation.In the meantime he prompted that write code fast since he has follow-up questions. Anyway I was able to complete the code 3 mins prior. But interviewer didn't ask follow-ups stating time is almost complete and interviewer didn't seem so happy :(
Onsite round 3:
Given a list of key_value something like this: [{"x", "ab"}, {"kz", "kabl"}, {"xk", "bl"}] and a key (%kz%_p%xk%) what would be the answer. In the above case answer would be : "kabl_pbl"
basically keys would be wrapped b/w modulo operator.
Experience: Great I started with clarifying questions like, what if modulos are not even (won't be the case), what if keys b/w modulos are not present (if not present throw error) etc..
I iterated my solution with the test case, after iterating after my test case, he added on more test case: [{"x", "ab"}, {"kz", "kabl"}, {"xk", "%x%bl"}] and asked me to find the answer for this: (%kz%_p%xk%).
answer would be: "kabl_pabbl"
I came with a recursive solution, and he asked me to implement it.
Learnt from the previous round, I started with class based solution and written the helper method.
Follow up 1: After writing the code, he asked me what if certain keys are repeated multiple times inside a value, eg: %kz%_p%xk%%xk%%xk%%xk%%xk%%xk%%xk%%x%xk%%xk%%xk%
I added memoization in my recursive solution and he was happy.
Follow up 2: What if key_x depends on key_y and key_y depends on key_x, how would you handle that.
On which I replied, I will create an adjacency graph at the start, and apply cycle detection algorithms like DSU, and asked him if he wants me to write code, on which he replied not necessary, and said he just wanted to know the thinking process.
After 3rd round recruiter informed me that feedback is positive, and need to schedule googlyness round.
Googlyness round: basic HR questions like, how will you respond if someone steals your credit, how will you approach if you don't know something and you need to ask from senior or vice-a-versa etc..
After Googlyness, recruiter told that he'll schedule a Team-fit call round, and he got the buy-in from a manager in 2 days only.
Team fit (Director): Instead of manager, Director joined the call and we talked about 30 mins about the project i'm going to work on, and what have I worked on in previous companies, at last he told that, he is setting up a new team, and the manager under which I'll work is switching internally and will start officially in this team in 2 weeks, so my to-be manager will also talk to me.
Team fit(Reporting manager): To be manager, joined the call and we discussed for almost 45 min about the project i have worked on , and what i'll be working on this team, and I was pretty sure that I'm going to join this team, but that didn't happen.
I asked the recruiter, and he kept on saying that he didn't recieve the fit-call round feedback yet. After 2 weeks recruiter reached out to me on mail asking about some additional info like, legal name, promotion history, companies i worked for, expected salary etc, and it was mentioned in the mail that he'll let me know about the outcome in coming week. At this point of time I was sure that manager has given the positive feedback and maybe offer drafting is in progress that's why 1 week of time is required.
Meanwhile I kept on asking my recruiter whether my profile has passed the Hiring Committee round or not, which he ignored :(
After 1 week I ping the recruiter only to get my hopes shattered. Recruiter informed me that position has been filled internally, and the he'll try to map me with some other team.
Hoping to get matched with a team and get an offer soon :)
Interview Questions (4)
Given an array of cakes (square sized) on a table with x and y coordinates, and a horizontal blade is swinging. You need to stop the horizontal blade such that the total area of cakes gets divided into two equal parts. Input: (x,y, size_of_cake).
Follow-up: What if Y is too large, and correctness is required up to multiple decimal points?
Given multiple routers, each described by (name:string, pos_x:double, pos_y:double). Each router can transmit to a distance of dis:double. I was asked to find whether a given router_A can transmit a message to router_B (where A and B could be any routers).
Given a list of key-value pairs (e.g., [{"x", "ab"}, {"kz", "kabl"}, {"xk", "bl"}]) and a key pattern (e.g., "%kz%_p%xk%"), what would be the answer? Keys are wrapped between modulo operators. Example output for "%kz%_p%xk%" is "kabl_pbl".
An additional test case was provided: [{"x", "ab"}, {"kz", "kabl"}, {"xk", "%x%bl"}] and key pattern: "%kz%_p%xk%". The expected answer: "kabl_pabbl".
Follow-up 1: What if certain keys are repeated multiple times inside a value, e.g., "%kz%_p%xk%%xk%%xk%%xk%%xk%%xk%%xk%%x%xk%%xk%%xk%"?
Follow-up 2: What if key_x depends on key_y and key_y depends on key_x (cyclic dependency)? How would you handle that?
Basic HR questions were asked, such as: How will you respond if someone steals your credit? How will you approach it if you don't know something and you need to ask from a senior or vice-a-versa?
Preparation Tips
I asked for two weeks to prepare initially for the coding rounds, and later requested an additional week for the onsite interviews.