Status: Close to 3 year Software Engineering experience in 2 companies before masters. 1.5 year Data Engineering experience in US after masters in average public University (I think it is in top 100 in US - but my university advertises itself as Number 1 in innovation which is very funny to me atleast).
At my current job I would only do development work that was new to me. And when the time came about repeating the work, I would switch projects/teams. Switching projects and teams gave me a ton of free time. Also pandemic made it look like the whole day was available at times. So thought would try for Google. After some preparation I thought aiming for one company is being little hard on myself, so applied for 5 to 6 companies (all FAANG except Netflix) and Uber. Got calls from Google, Amazon, Uber and Facebook (I was told that I did not match any team, and they would call me again when they find me a team - I did not get it yet). I had failed Google and Amazon priorly in the phone rounds.
Google phone round
Amazon online assessment
Uber online assessment
(did not take uber onsite)
- Design streaming service - I did my best. Interviewer was happy and gave very positive feedback.
- 2 LP questions in last 10 minutes (failure scenario and what did I do with the feedback)
I felt great after the system design, but I did stumble across the leadership principle especially the feedback question. But I expected myself to perform poor in LP even when I had preppared for a month averaging an half to one hour daily. I'm just not a story person.
- Easy-medium BFS/DFS question. Find all the items bought by your friends, and not by you. Follow up question was to find all the items bought by friends of friends. I checked back on number of levels, he asked me for 1 level, but it was easy to come up with n levels and n was taken as input.
- 2 LP questions in last 10 minutes (what did you do when you where stuck and did not know what to do and customer obsession)
I felt great with my solution as I had solved it in less than 10 minutes including coding portion for follow up. Again did not do great with LP.
- Medium OOD question. Very similar to linux find command question (https://leetcode.com/discuss/interview-question/369272/Amazon-or-Onsite-or-Linux-Find-Command) but for validation of purchases. If you are good at applying SOLID principles, this should be solvable. The question was in Java, I spent a couple of minutes to convert it to Python.
- 2 LP questions in last 10 minutes (customer obsessions again and one more I don't remember). I did better in LP than last 2 LP rounds
- Hard straight out of Leetcode question (https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/) Took full 40 minutes to come up with O(n) solution. I thought I was on the verge of bombing this question after first 20 minutes, but I just kept my calm and hung in there. Interviewer however was given his solution, which I thought was not optimal, so I request him that I am shooting for O(n).
- This was last interivew, so the interviewer gave me extra 10 minutes for LP (also he had messed up somewhere at the start of the interview in choosing the correct codepad for this interview - I was viewing one and he had pasted the question somewhere else) He again asked customer obsession, I requested him to change the question by telling him that I have been asked this couple of times and I do not have stories and I cannot just make a story out of the blue. But he asked me some other question which was again similar to customer obsession. I just told some other story and connected the dots somehow.
I felt great after solving LC hard. But I messed up with LP again I think
Post Amazon Interview
2 days after interview, got a call saying I was downleveled to SDE1. I was super disappointed. I asked recruiter if I could talk to Hiring manager, which she mentioned I could but they wouldn't however change the decision (I mean it makes sense now, but then I was in that mindset to atleast try my luck).
6 days later, recruiter called me saying they (the team that interviewed me - was a California team) have closed the postion for SDE1, so will have to look for other team. I asked her to take her own time - as I was concentrating (basically relaxing) for Google interview.
20 days later, they set up a team match call with Seattle team. They liked me and checked with me how my other interviews are coming along.
Phone virtual interview (I mean even the onsite are same, but here you don't have to see or show your face)
(Also I had taken this phone round before applying for any other companies whatsoever)
1 minute for the intro.
Then she pasted the question, was a easy text justification question. Straightforward solution, but I just took my own 25 minutes to not make any mistake and check all the edge cases. I had heard that Google doesn't allow any false positives. So I was fck scared. Follow up was a tricky Binary search problem I had to use the previous solution. I just communicated every thought that I had by asking questions and boiling the question down to a binary search problem. It was 40 minutes, and I started to make it modular to be able to use the prev solution and when I reached the binary search part, interviewer mentioned it is 45 minutes and she had gotten all the signals that she wanted to.
I felt good but at the same time, I kinda thought I have techinically solved only one easy question. So was doubtful.
Got a call the next day, saying I was through. This is when I applied for Amazon, Fb and all other companies mentioned above. Later I was thinking, it cannot be solved by binary search, but I was through, so did not break my head further.
I had set the onsite 2 months apart, had some travel plans for 15 days.
Direct top rated leetcode hard premium question (I had solved it a couple of days ago - thanks to my friend who was kind enough to share LC prem.. lol) But again focused on giving signals on how to solve, what questions to ask and how to make data driven decisions even though I knew the solution. Thing is, I was short of time to come up with full solution as I was busy acting that I did not know the solution. That freaked me out and I just couldn't complete the last part. It was already 40th minute, that's when I started to use my brain (instead of memory and stopped acting). I just knew that I had to do the re-orientation part, but it was too late to place that properly. Interviewer mentioned to me that he liked my enthusiasm.
I felt angry at myself and clearly I had bombed it. Basically I did not give a working solution and no working code.
Googliness interview. As I had prepped for Amazon, it was helpful here... lol.. I was like LP preparation however clearly did not help Amazon, let me use it at Google. Amazon LP bar is very high, but Google LP bar is very low. So you should be good here.
Asked about my prev project, he liked it as it was using GCP tools (he was from GCP team - so it worked out luckily). A easy-medium sys design question to count events and alert. I did not ask question until first 10 minutes into solution and gave him 3 to 4 solutions. He then stopped me and made me ask right questions. Which was a bummer. He mentioned that I gave him most efficient solution to do it.
I felt okayish. As recruiter in the prep call had told me if I do not ask questions - they will hold it against me. And the thing is, I had put a sticky note on my monitor saying "ASK QUESTIONS" - and I did not ask.. so dumb!
An easy-medium direct leetcode question. But I just put that thought aside and focused on giving signals on how to solve, what questions to ask and how to make data driven decisions even though I knew the solution. By 15th minute I was done implementing and testing. Then I also came up with test case where it would not be logN when elements are repeated. I told her, it cannot be done in O(log N). But interviewer was expecting to do something and prune. But I just wasted time for next 30 minutes as I was admant that no matter how much effort we put, the worst case is O(N). Not sure if I bombed this or not, I just did not prune or basically I did not do anything after first 15 minutes except ask random questions which would prove the point that it will be O(N)...
I felt okayish.
2 days later, recruiter gave me a call saying he saw enough positive signal to create a packet and push it to hiring committee - never expected that coming...
4 days later, recruiter called me to tell I was approved for L4. I tried my best to hear him give information necessary for next steps in next 25 minutes.
My resume was then criculated to Seattle teams. I had preferred Seattle (friends and fam. But I had planned on hikes, sking and going to Denali would be easier during summer). Got call from one team, but they passed on me. That's when I requested to even consider California.
Got calls for 4 more teams. 3 of them passed me over. 1 picked me up.
Team fit round is crazy, if you do not find a team, you basically cannot get the offer. And in 2 of the team fit calls, I was competing with an internal transfer candidates, beating them would be hard. So took about 20 days (including weekends) from onsite to the offer.
I would tell, if you not a good speaking person... take up mock interviews. I took a ton of them. Basically make interview look like a practiced speech.
I have solved around 300 to 400 unique problems. I looked up another 300 to 400 unique problems. As I have used multiple accounts, I am not able to give correct numbers. But this is a ball park. I started off with easy medium. Later, hard ones. Basically you should be able to formulated an easy medium question out of a hard question and solve that easy medium question and build a solution for hard question (50% of the times). Rest 50%, just go through the discussions page, lol.
For sys design, youtube and google search "system design". I recently stumbled upon this channel (https://www.youtube.com/channel/UC9vLsnF6QPYuH51njmIooCQ) - this guy is from AWS and is very good - I liked the content, very dense.. I wish I had known this channel a bit earlier. Hopefully you are early in your prep.