Context : Was Google L3 Approved (India). Wanted L4 as had those competing offers, asked for 2 more rounds for L4. But I got a no hire and want pointers if there is something I could have done better? Those 2 additional rounds were hell. It was as if they are meant to reject me. I took Indian interviewers this time intentionally, thinking that "OK, they will ask very hard problems, but if I answer them its a strong hire and L4 is in my hands." Worked hard for those. TLDR : One Lesson I learnt - avoid them like fucking fire. PS: Another quick Q : Will these 2 interviews affect my opportunities at Google in future? Given I passed for L3, will I have a hard time getting future interviews because of 2 no hires here? Blind Tax: TC : 26LPA YoE : 2. ---------------------------------------------------------------- Round 5: Interviewer was from GCP. Asked me my proficiency in C++ out of 10. I said I'd rate it 8 / 10. Its good , and I can deep dive better. He said he doesnt know C++. He then asked me following: - What are two ways to pass parameters in C++? - What is difference between them? How is pass by reference different from pass by pointer? At this point I also steered discussion towards design learnings wrt having raw pointers as parameter of API (eg - no way to detect dangling pointers) - What are smart pointers? - Difference between unique_ptr and shared_ptr. - How do you make an interface in C++ ? - I told that C++ has no explicit interface keyword like JAVA to which he cut me off saying lets discuss C++ only and he is not familiar with Java. (ouch...) - I say again that there is no interface keyword in C++ so we have various design patterns or tricks to circumvent that. - He disagrees and asks what an abstract class is? What is virtual? What is use of virtual? What if all methods of class is virtual? - Since I told in my answer that abstract class with all virtuals is one of the ways and has its own advantages and disadvantages, hes asks what are the disadvantages? (I tell diamond pattern) - What is diamond pattern? What is the issue here? What if the class is inherited twice? He remarked its no big deal. - Anti diamond pattern. Uses, examples. ~30 minutes passed and he gave a coding Q now. It was something like, given a string, you have make replacements according to given dictionary in certain subsections marked by "%" operator. Eg - %XYZ%abcd, Dict: {"XYZ" : "1234", "ABC" : "456"}. Output : "1234abcd" I asked Qs like if one key is prefix or substring of another, eg "X" and "XY", he answers it must be a strict match. He insists to discuss the approach first. I tell him what modules I am thinking to use. For data structure I would keep a map<string, string> of dictionary. And in case strings are too many and too long, we can optimize by hashing strings or giving them some integer IDs to optimize further. He objects. Asks few questions again (10 min left to code) - What is hashing? - How will you hash? I gave pseudo code of both, assigning IDs and using rolling hash. He didnt know what rolling hash was. - Do you know what are collisions? Discuss them in both approaches you gave? - For rolling hash, I told we can use 3-4 rolling hash functions to reduce probability of collisions to less than 10^(-20). He says "So collision is happening here and you are not doing anything to handle it." I replied that theoritically, yes, there is a non zero chance, but this chance is so small that it will practically not occur. I give example of quick sort having worst case complexity of O(N^2). He re-iterates that collisions are not handled, and I say but my first approach (assigning ID to string) does not suffer from it and lets move on. - He says this optimization makes no sense. If dictionary has only 2-3 such keys then its useless. I argue that in client side operations, this is true, but in server side operations where data scale is large, these optimizations give a speed boast. He repeats he is from GCP, I think I offended him here slightly...:( I code the entire thing quickly in 6 minutes WITH validations of input, error handling in Get and Put APIs and highlighting those as well. He watches it and points at one place I used getKey() where I was intending to use putKey(). I fix the typo and it he gives it a ok. He then says "What if there is a dependency in key value pairs?" I didnt understand, so he gives following example: USER : ABCD HOME : Hello %USER% Here, while substituting HOME, we also need to substitute USER in the value of HOME. 2 minutes left, I tell him we can easily handle this by making a graph and doing something similar to DFS, i.e. traversing graph from current string and recursively making substitutions. 45 minutes hit and he says now time is over. Feedback : No Hire , Poor coding skills : Did not complete code of second question. Had mistakes in code of first question. ----------------------------------------------------------------------------------- Round 6: The question was initially vague, but on discussion it boiled down to this: Given N objects, and M constraints, eg : 1 L 2 says 1 is to left of 2, 4 R 5 means 4 is to right of 5. Place these objects in an array such that these constraints are satisfied. I am like OK, toposort, I have done it soo many times. I outline the approach, this is a very silent interviewer who did not say anything. But I was confident of the approach, and went to write pseudocode. He finally gave a go ahead to code, quickly code it up as well. Follow up : New constraint added, 1 A 2 - 1 is above 2, 2 B 3 - 2 is below 3. How will you handle these? (Easy, LR and AB constraints are independent, make another graph and solve these independently.). I had expected this follow up and already wrote a modular code, so it was just 3-4 lines change. Follow up : Cycles, Invalid inputs ? I had already handled them and mention the same. Follow up : Test cases? : I outline how I will intend to test each module and go over black box, white box testing, unit and integration testing and give some 6-7 test cases. This is where interviewer made my hopes go to 0. He said, "Okay, lets move to question 2.". I am like, wtf? After coding 5 modules, discussing testing etc and overall having written 250+ lines in interview doc (approach, code, pseudocode), theres ANOTHER question?!! The above was already a LC hard when it became 2D. 35 minutes already went by, it was last 10 minutes. Q2 - Again a vague, but quickly clarified and got this: "Given N objects with M attributes, find one object which on removal, maximizes the size of intersection of attributes of remaining N - 1 objects. Eg - Cat : Legs, Tail, Mouth Mouse : Mouth, Legs Bird : Wings, Legs We can remove Bird and get intersection size of 2. I quickly outlined the brute force approach and the data structures I'd use, but it was N^2 * K (max number of attributes per object). He asked me to optimize it. I knew Bitsets can be used to find very quick intersections but I had no practical experience with them. Did not even code them ever. I said that Bitsets can be used to optimize as they are finetuned for these intersection operations and can give better performance. He asks me the time complexity with bitsets and closes the interview. Feedback : No hire. Poor efficacy, did not give optimal solution of second problem. Poor coding, did not code the second problem.
Bad luck mate.
Damn the rounds are brutal. How the hell so many people clearing L4 loops then?
Wait L3 also gone now?
Stop making google your god, pfff. I laugh at those problems and the hours people prepare for these interviews, only to never use any of this sh*t in real.
The problem you got in you second round I got the same problem for my L3 interview and was not asked the second problem still I was given hire. I am seriously surprised and now afraid to see the difficulty level for L4 interviews. Also now it makes sense why so many people are down leveled as the bar for L4 is just too fing high. Ngl you did really well certainly alot better than how I performed for my L3 interviews.
I feel its not the bar, they didnt want to hire me in first place. Because all of my friends n peers joining Google claimed their L4 loop was same difficulty as L3. I was pressued by recruiter to join L3 and got these interviews after a fight. Or, I messed up taking Indian interviewers, or am unlucky in general. I feel like that because No Hire is tooo brutal tbh Do NOT think that bar for L4 is high, with right luck peeps at 1.5YoE go as L4 solving 1 LC hard in interview.
Btw thanks. Certainly feeling better now since receiving those feedbacks :)
Hey! Would you be willing to share some questions the US guys asked in the earlier rounds! Have my rounds at a similar time slot, very very soon! Would be super helpful
Dm me, I will
So many follow ups. Congrats on other offer Btw
Whoa!! I had a L5 SWE (Bay Area) round and none of them had two separate questions. It looks like the interviewees had already made up their mind to reject you.
I rejected l3 to join Microsoft L62 78 lakhs, no hard feelings it's interview may or may not go in our favour
No one will read such a long message. Figure out bu yourself your issue