I feel sharing as much relevant detail about my journey will help others so this ended up being a long post.
Status
I am currently working full time as a software engineer and have good industry experience.
I haven't heard of LeetCode until Amazon recruiter reached out to me. I was hesitant to take the OA but the recruiter sent me an invitation anyway and gave me couple of weeks to complete it if I wanted to take it. This is when I started researching the interview process at FAANG companies and eventually found LeetCode and subscribed to LC premium for a month.
OA
The recruiter did comeback and said that they would like to schedule a phone screen before the virtual onsite as they were not completely satisfied with OA results. I wanted to see how far I can go so I agreed to do a phone interview. At this point I started taking things little seriously and spent 2-3 hours almost everyday practicing LC problems, specifically the ones listed in 'Explore' section.
Phone Screen
This time as well I was convinced that it would end here, but recruiter reached out immediately and scheduled virtual onsite. I was really excited at this point and started preparing for virtual onsite. At this point I extended LC premium to a year and tried to solve as many problems. Because of the limited time I mostly concentrated on Amazon problems in 'Explore' section. I was solving problems at a good phase but after a few days I realized that I wasn't able to recollect the solution/approach. This is when I started to really understand the algorithms and I made sure that I completely understood the problem even if the solution was only a few lines of code.
Sometimes I felt like I couldn't understand the problem or the solution no matter how many times I read it and felt really bad. However I found that there are many people on youtube who do a good job of explaining these problems and solutions and all I need to do was to keep an open mind and spend some time trying to understand it. I used this strategy whenever I got stuck, I gave it some time, looked at other sources and came back with a fresh mind to solve it.
At this point I made sure that I spent at least 3 hours almost everyday preparing for virtual OS. I tried to stick to the same schedule (9 pm - 12 am). Having a consistent scheduled everyday simplified a lot of things and it forced me to do some preparation even when I didn't want to do it.
Virtual OS
Bar Raiser - The interviewer was a nice, Started right away with LC Medium and I was able to solve it using intuition/brute force. I wanted to do some optimizations to improve the performance but the interviewer seemed happy and moved onto LP questions. Even though I prepared for LP in nSTAR(Nugget-STAR) format, I drew blank when I tried to quantify the result in numbers. I think this might be one of the reason for reject. Last 5 minutes I asked some reverse interview questions.
SD Again the interviewer was a nice and started with LP questions. I was able to rectify my mistakes from first round and made sure that I gave results in concrete number even if it was small. The interviewer seemed satisfied and moved on to SD question, nothing unusual just standard SD question. I drew some diagrams on virtual whiteboard and we talked about scaling and performance. He seemed happy, I asked some reverse interview questions at the end.
Coding - Started with LP and at this point I was in my third straight hour of interview, so I don't remember much about how it went. Then we moved on to coding, it was LC Medium with a twist. The twist got me a little bit but I was able to figure out and convince the interviewer that my solution will work, I heard an okay. Again I asked some reverse interview questions.
Coding - Started with LP Questions and moved on to coding. It was a Variation of LC Medium. I was very familiar with the LC medium question and was pretty confident about solving it using BFS instead of DFS(this was a mistake) so I jumped in to coding after asking some clarifying questions. My lack of experience practicing BFS showed as there were some flaws in the algorithm I wrote. The interviewer helped me and we fixed it, but I got stuck again on the variation part and eventually with help from interviewer I was able to solve it. Again I asked some reverse interview questions.
Result
Within few hours I got call from recruiter that they are not moving forward. I was disappointed as I felt I did good in all rounds except the last round. What I felt didn't matter, they thought that I was not up to the mark.
I wanted to write this post on the same night but I was pretty exhausted and I didn't feel like opening LC at all. I felt the same way for more than a week, but here I am today to share my experience and hopefully continue preparing for future interviews.
TakeAways
I needed to do well in all rounds
I practiced really hard and consistently for over a month and went from not knowing about LC to completing interview. So I plan to continue doing this and try again.
Having a whiteboard to write out your solution while practicing(no matter how small it is) helps. I wrote on a notebook for a long time and switched to whiteboard only towards the end of my preparation. I think the ability to quickly write and erase along with the real estate in whiteboard makes a difference.
I am not taking it hard and willing to try again even though there is a possibility of failure.