June 2020
I received emails from both Google and Facebook with in a span of around two weeks and I was delighted to see both these big companies' reach-outs in my inbox.
I received Facebook email first and I was like "No, this is some other league. I ain't there yet". But later after some days I received Google reach out also. I got three rejections from Google before. It was always hurting my ego and I wanted to give it a big try this time. So I decided to give both these companies a sincere try this time.
Hard work way #1 : As soon as I got the Google reach out I started preparing. I have observed Leetcode.com as a prominent practicing platform in multiple blogs and I decided to try it out this time.
Smart Way #1 : I knew as soon as I reply back, they are going to schedule a phone screen. So I delayed replying to them for around two weeks and I already started preparing. So this extra two weeks + the time I can bargain for preparing should give me good enough time to prepare for the phone screens.
July 2020
I replied back to both the emails and as expected both the phone screens got scheduled to August time frame. I was able to manage to get one more month from them saying, "I need time to prepare","I am out of touch", "if I give interview now it will be suicidal" etc etc. But I am sure they have some max time limit that could be allowed from the initial point of contact and phone screen. I was determined to bargain maximum time from them. So a month is what I got.
I kept on practising easy problem on Leet code. I knew a dear friend of mine also gave FB interview at that time and I called him up. He gave me a very good information. "It is most likely a Leet code easy, if you are unlucky, you will get a leet code medium". This brought in a lot of confidence.
Hard work way #2 : I set a personal target to finish the Leet code easy and Medium cards first. Post that I will cover the Google and FB interview cards. I decided to just go with the cards we can see in the Leet code explore page.
Smart Way #2 : I didn't go take the Leetcode premium version. There were many questions locked and it was tempting to see them. So I thought, if I ran out of questions by solving all the open questions, I will but the premium version.
Hard work way #3 : No matter what, how much hectic was the day, every day at night I started spending some time, at least 15 mins, solving a question, thinking about a question, learning something I don't know. I sticked to it. I can proudly say perseverance was the key difference this time. I had bad days which I spent only 5 minutes to great days which I could spent up to 2 hours. But I spent at least a minute every day preparing.
Smart Way #3 : From my experience, I had kind of a feeling Indian interviewers are tough to crack. They ask out of the world questions. So I told the recruiter that I am very busy during day time and I can attend interviews only at night. So as I planned, I got US interviewers in my night time here in India and I should say I got some very nice interviewers who really wanted to test my skills rather than showing off their skills.
August 2020
I ran out of questions in the beginning of August itself and I bought a Premium plan of leet code. By this time I started enjoying solving the problems. I solved around 70-80 easy-medium problem if I remember correctly before the Phone interview.
Smart Way #4 : I did a review of my past failed interviews and I understood one thing. I over complicated things before. So I purposefully didn't go through problems like Fenwick tree, HLD, Segment trees, square root decomposition, Max flow, Min cut etc etc. I kept myself to the fundamentals and I trusted leetcode. I paid extra attention to DP and Graph algorithms though. Also I emphasised on Binary search problems, Most of the times, I wont even recognise them as Binary search problems. So I drew a fine line on what I should cover and what I should not. Rather than going on BFS on all the areas, I decided to the do DFS on most of the popular areas from an interview point of view.
Hard work way #4 : Before two days of my both phone screens, I paused where I am and in those two days I revised all the 70 problems I solved so far just to boost my confidence.
Smart Way #5 : Before an hour before the interviews, I started hearing some relaxing music which I always used to hear while solving the problems and I kept on doing the problems. When the interview started, my brain was already warmed up and it was like just another problem on that solving session. I should say, this trick really helped me. it helped me to ease up the tension.
Smart Way #6 : I have found some blog on how to set up a google doc for google interviews. I did the same on the google doc i received.
Hard work way #5: A friend of mine advised me to practice coding out problems in a notepad/google doc and then pasting into Leetcode editor. Initially I was facing lot of compile errors and later the code started to compile on my first try itself. This was really good as I practiced writing code without compilation errors. I always wanted my code to compile on the first cop/paste itself
Hard work way #6: Once I started getting the code compiled in the first try, my next focus was on to get the coding get accepted in the first try itself. This is where I made my looking for corner cases skill sharp. I obsessively started thinking for corner cases before hitting the first submit. This was hard, but I got trained.
Phone interview days came - Google interviewer asked a nice question on queues and I solved it. It was a new question, but with a little bit of thinking I was able to come up with a solution. I aced the coding part. Facebook interviewer asked two questions. One of them I have solved in Leetcode medium and One was a variant of another Leetcode problem. I could solve them both easily.
I cleared both phone screens and I started negotiating for more time for the main rounds. I asked them openly what is the maximum time they can provide and whatever maximum they suggested, I went with that. Google recruiter scheduled three problem solving rounds on October Mid(HR told me that 4th and 5th rounds will be there only if I can clear these three rounds) and Facebook recruiter scheduled all the four rounds (2 coding + 1 system design + 1 team fit) to November.
September - October 2020
I cruised through another 60 problem in this time frame. This time I concentrated mainly on Medium problems and Hard problems. Also in Leetcode I Started sorting the FB and Google questions based on recency and started solving them. I never dropped the ball. I some how showed good perseverance.
During mid October the three problem solving rounds of Google happened over two days. In both days, I used the warming up trick I mentioned in Smart Way #5 and also stick to my night time routine so that I can get US interviewers. I faced questions based on Binary search, Arrays and Queues, and Hash Maps and a Graph problem. I was able to solve them all. I coded them nicely and also analysed time complexities correctly.
I received a call from Google and I got the good news that I did well in those three rounds and they also scheduled the final rounds to November. They give me a choice of fourth round to be a system design or problem solving. I selected system design as it was my strong area and also the uncertainties are less compared to a problem solving round.
At this point, I purchased "Grokking the System design interview"from eductative.io and it had 20 questions. I started going through them one question per day along with Problem solving.
Smart Way #7 : Every system design question I started making my own notes in a Google Doc. Also I made the diagrams myself in Google draw rather than copy pasting what was there in Grokking the System design interview web page. This helped me in getting familiar with Google draw tool. I was hands on during the interviews. Even in FB interview, I did a screen share and drew my diagrams in Google draw.
November 2020
I solved around 180 problems in Leetcode so far.
I started getting comfortable in System design interview as well. I had a set pattern for attacking a design problem. Starting with the functionals requirements, then estimations, high level design, low level details, etc etc. I had previously seen the system design material from InterviewBit also. That also helped me at this point. Also I read and understood all the theory in Grokking System design course also. Like CAP theorem etc.
At this point only missing piece was the team fit interview. So I spent around 4 days behind that also. I gathered a variety of questions asked in Googliness interviews and FB team fit interviews. I thought about them and wrote actual scenarios that happened in my career in a notebook. After a point I found that for any question, I have a situation handy. One nice thing I did at this point was I called up a dear friend who was already aware of all these things and I explained all the questions and situations I have prepared for. He gave me some nice feedback like, "Don't say this, this wont be nice", "you can say this situation like this", etc etc. That was a good exercise. We did clean up all the scenario and I was ready.
The interview days came. Had my two Google Interviews over two days back to back. I did very well in the System design interview and also did well the next day in the Googliness round.
Facebook had scheduled all four interviews back to back. Started with the team fit round. It went well as I was well prepared. Then two problem solving and programming rounds. They also went nice. Got problems from Arrays, Queues etc again. I will say Leetcode Medium complexity. I was very much exhausted after this three rounds. One more round was pending for system design. I was not feeling good as I was feeling mentally exhausted. But I was determined and I could feel everything went so perfect so far. So I was gearing up myself for the final kill.
The Luck factor #1 The interviewer had some emergency and he didn't turn up for the system design round. The recruiter came and apologised and she rescheduled the interviews after two days
I slept well. In the next two days, I visited every system design question I could find on the internet. The day of the interview, I revised all the 20 Grokking problems. The interview happened. I aced it.
Facebook came back within a week saying I cleared it. Google took some time as they need to prepare the hiring packet and send it across a hiring committee and al. Eventually I received the good news that I cleared both. After so much of thinking and consultation, I decided to accept the Facebook offer. Peace.
Amazing 🔥❤
ReplyDelete