Meta | SDE (E5) | Remote | December 2021 [Offer]
Anonymous User
6353

Just got an offer from Meta. Although I will not disclose details regarding the interview - signed an NDA and want to honor it - I still wanted to give back to the community by sharing how I prepared.

As with any FAANG company, being fluent with algorithms and data structures is key to success. Focusing on quality is, in my opinion, more important than focusing on quantity: it is not about solving x problems, it is more about being able to identify patterns in a problem, talk about it in a manner that is understandable to other engineers and associating those patterns with an algorithm. Quantity can help you with achieving a certain degree of confidence and fluency in coding, but without quality passing a technical interview will be hard if not impossible - a seasoned interviewer will be able to detect right away whether you just memorized the solution to a problem or not.

So, how did I prepare? I focused first on theory - books like CLRS (Introduction to algorithms) go a long way - and then practiced on different platforms. When practicing, I worked on writing efficient and elegant solutions, using the standard libraries of my language of choice when appropriate and trying to write idiomatic code whenever possible. Looking at the most voted solutions for each question is invaluable as it gives you a window into other's minds: you can learn a lot just by looking at how top coders think and write code.

Regarding the dreaded system design interview, I read lots of blog posts on the engineering blogs of tech companies. I also watched a lot of videos from conferences focused on scalable systems (e.g. InfoQ) - these can be found on YouTube - as well as online course lectures on distributed systems. I know many users on this platform watches system design interview videos from various sources, but I did not find these very useful: they are often shallow and the solution proposed are not always robust; besides, the goal of a system design interview is to design a system that is able to work according to the requirements that are negotiated with the interviewer: this often requires subtle adaptions and a deeper understanding of the system that cannot be achieved by watching solution videos alone. In my journey, I also focused on reading the relevant literature when appropriate: one thing is knowing that there is a NoSQL technology named Cassandra, another is reading the Cassandra, BigTable and Dynamo papers and understand why these databases were designed in a certain way rather than another.

In terms of preparation, it took me a few years, and I had some failures and near misses along the way, like everybody. The interview process is very competitive and optimized for avoiding false positive, and so failure is part of the game. To all of you dreaming of joining a FAANG, I'd suggest not to give up on your dreams, but also to focus on your current job: apart from the fancy company name and the perks that come with joining a FAANG company, there are plenty of great company outside of FAANG where you can stil do excellent work and grow both as an individual and as an engineer.

Good luck to everybody!

Comments (11)