Google (Seattle) on-site Interview experience. I do not want to disclose the questions but I can say that it's all out there in Leetcode. Google Interviewers made sure they framed their questions in a completely different form which might not at all be in Leetcode but if you are able to identify the pattern, then it boils down to one of the problems avaialble here in Leetcode.
Here's my exerience. Interview was scheduled from 10 AM to 3 PM. I had 5 different interviews plus lunch with a google software engineer. Lunch was just informal and that engineer does not submit any feedback. He showed me around the google office after lunch which was fun.
Round 1
This was a technical method/function design round (not a system deisgn) which did not particularly involve using any algorithms. He gave me an API that I could use for the design. After the interviewer explained the problem statement, I asked some clarifying questions to make sure if I understood it correct and then talked through my approach that I started thinking of. I then used the white board to write down the steps to solve it in plain english. I figured that the API provided had some issues and I fixed them. Here, I think he intentially gave me a faulty API to test if I am able to identify the flaw. I was glad that I did. By then it was 30 mintues and I started coding the solution in the remaining 10 minutes which I think maybe went well. In the end, he identified a bug in my code, and I fixed it. He did ask some follow up questions on what I missed thinking about while designing the solution. Overall, I think this round went okay and I didn't have any regrets that I could have done any better. After the interview day, I obviously had more ideas that came up but in that 45 minutes I think I gave my best shot.
Round 2
I totally bombed this one. I understood the problem statement very clearly. I ran through a sample scenario and also came up with a few nice edge cases and the interviewer also mentioned that it indeed was a good edge case to consider. But I messed up while talking through the solution, I got so confused even when I was explaining the brute force approach, my time complexity analysis was incorrect and by the end of 35 minutes, the interviewer suggested that I write code for whatever I have and I couldn't do much in the code as well. After the interview day, I looked this question up in Leetcode and the solution was to use a stack. But I never mentioned or even thought about using it during the interview.
Round 3
This was a technical round as well and the problem statement was something I never heard of, so I was asking a lot of questions to understand what he was asking me to do. It looked like I was not able to understand and I think he also ran out of ways to explain it. I thought maybe this round is also going to be bad but then he gave me a very small hint using which I was able to identify the optimal solution right away. It was a graph problem. I started explaining the approach in the whiteboard and he was digging deeper in every point that I was saying. I gave a rough upper bound (big-oh) time complexity but he wanted an exact (theta) time complexity which I couldn't figure out but I explained how I can derive it. Maybe If I had a little more time I could have. By this time, it was already 35 minutes and I asked if I should write the code for this solution but he said let's not write code (I don't know why). He then chnaged the problem statement a little bit that made it more complicated. Initially I was struggling a bit but then I figured how to solve that as well. He asked follow up questions based on my new approach, I couldn't answer all of them and we ran out of time.
Lunch
I met with a google software engineer and he took me to the cafeteria and they had all the standard options (salad, pizza, fruits, a noodle bar, a chipotle like menu, soda). We were just talking about Seattle and a little bit about his experience at Google and his pervious jobs. I was talking about my university and my previous jobs. After lunch, we still have some time before the next interview and he showed me around the building.
Round 4
This in my opinion should have been the most easiest technical round of all. (I felt this after figuring out the solution). This was a very simple graph problem but he put the problem statement in such a way that I couldn't figure it out at all. I was again running through some sample scenarios to make sure I understood it correct and started talking through my thought process. For every idea that I mentioned, he was saying that I was complicating the solution. He kept giving hints in every step and by this time it was 35 minutes already. I lost track of time in this round and didn't realise that. I came back to the problem statement and while we were discussing it again, in that moment I instantly figured out the optimal solution. I felt very silly that why did not think about this earlier. I explained the approach and he accepted the solution but he said we are almost out of time and the next interviewer was waiting outside. I couldn't give the time/space complexity and also did not have time to write the code.
Round 5
This was not a technical interview and was the famous "Googlyness" interview. Nothing intense, I had prepared for some "tell me about a time when.." type questions and I was able to use some of the responses that I had prepared. In addition to that they also gave scenarios and asked how I would react or what I would do in those situations. I think this went very well but you never know.
I think google on-site interview was not as hard as I thought it would be but I can't say I did very well or very bad. Maybe somehwere in-between. Also, I wrote code only in the first round, so that's a major drawback for me. It'll be very difficult for them to judge my programming skills based on just that one code. Let's see if I make past the interviwers feedback and get to the hiring committe review. I'll update the post once I know something.
Update I got a call from the recruiter and unfortunately it was bad news. It was for the reason I suspected, they didn't see good coding skills in my interviews. At least, they told me the behavioural round was good! They also said they'll contact me again in a year to re-interview.