Coding and systems design interviews are common and generally accepted at Big Tech companies and high-growth startups. Many people have contacted me seeking my preparation guidance for these Here are the preparation tools I used to ace my Uber and E5/E6 Facebook interviews, where I was hired as a senior software engineer (L5). It’s the same materials I suggest to people getting ready for interviews with Big Tech or high-growth tech companies.
Note that none of the links below are sponsored or affiliate links. See my ethics statement on the lack of such links.
While coding interviews (data structures, algorithms, and problem-solving) will be a type of interview you can expect at all levels, systems design interviews are more relevant for senior and above positions. You may also find my advice for senior and above people useful if you’re a senior engineer or engineering manager.
Be aware that system design varies depending on the situation. In comparison to staff positions or positions above, “entry-level” senior positions have very different expectations. The greater the position’s seniority, the more value real-world experience will have. This is comparable to how, in Big Tech, staff levels frequently overlap these in terms of scope and compensation, and how having “done the job” becomes more important for senior engineering manager and above positions.
I provided a book review summary of a framework for the systems design interview and will provide more details in my email notes.
Although there are plenty of online resources for systems design-related topics, I believe reading a book is a valuable resource that is often overlooked. Take notes, proceed cautiously, flip between pages, and give the ideas they teach plenty of time to sink in.
Books are the best study resource in terms of price and value because they contain much more information than video courses and are less expensive than any course subscriptions. Reading books takes time, just as learning about distributed systems does.
There are still relatively few courses specializing in systems design. Making a really good course on systems design is challenging because great systems design is based on practice, not watching videos.
Systems Design Interview: an Insiders Guide online course. The most diagrams and the best resource I’ve found so far Former senior engineer Alex Xu from Twitter, Apple, and Zynga put together this resource, which has the same information as the book.
The course is the most comprehensive, the cheapest, and the only one without monthly or yearly fees. Customers who purchase the full version of my book on software engineering resumes will receive a $10 discount on this course as a result of my collaboration with the author, Alex.
Grokking the Systems Design Interview from Educative. io was the first course of its kind. It’s more expensive and you can either pay monthly or annually, but it’s less detailed than Systems Design: an Insiders Guide.
The #1 systems design course, according to Systems Expert However, after purchasing it, I felt that it had made too many promises. It provides explanations of 25 systems design concepts over the course of hours-long videos that felt slow and were geared toward beginners. The 10 systems design videos with their emphasis on simulating interviews and covering systems design questions are the most valuable. They are useful to get a sense of how a potential interview might go, but, in my experience, the actual interviews will be quite different.
There is a systems design quiz with 50 questions that you can take to review some concepts, but I thought it was reasonably relevant to job interviews. Although the free Systems Design Interview YouTube channel has higher-quality but fewer videos if you like to learn through videos, this course might be the most beneficial for you if you do.
There are more and more Discord servers where people gather to discuss tech interviews, exchange tips and questions, and team up for mock interviews.
For some blog readers, these communities have made a significant difference, and they credit their success in large part to belonging to one of these communities. The most popular ones are these:.
Mock systems design interviews make an incredible difference. Joining a Discord server, looking for mock interview partners, and taking turns conducting the interviews is the most affordable way to go about them.
Paid mock interview services may be a better choice if you are short on time and/or willing to invest in having a vetted, experienced interviewer conduct your interview:
Even after spending a lot of time studying for systems design interviews at Big Tech, you might still not pass them.
Receiving offers at senior or above levels may be difficult if you lack practical experience developing large systems at work.
If there are no challenges involved in designing or running large systems in your current position, you might want to think about switching to a company where you would be doing this on a daily basis.
Many organizations with excellent software engineering cultures outside of the most well-known companies struggle to find enough qualified candidates. If you studied enough distributed systems theory, you would likely already rank in the top half of applicants at these companies. You’d be more likely to write and review engineering RFCs, manage difficult projects, have access to engineering mentors who aren’t normally available to the public, and have more freedom to develop your career at these companies.
I am aware of an engineer who turned down systems design interviews at companies like Facebook, Google, and others, one of which was their dream employer. They now work for a traditional finance company. Then, this person accepted a position at a tech firm that was perhaps a tier “lower,” but was still a great place to work. Many businesses have strong engineering cultures and significant challenges to address, but they are more willing to hire individuals without prior experience shipping systems to large populations of users.
This person received offers from all of their dream companies after working there for a few years because they had the practical experience they had been lacking up until that point.
Generic coding interviews are convenient in that you can prepare for them even if you haven’t encountered these kinds of issues before. They are also more or less standard between most companies.
Some more established tech firms have begun to conduct “nicer” coding interviews where the problems are more representative of real-world issues. Although I would like to see more change in this direction, I have discovered that these are still a minority within Big Tech.
I advise you to make your own study schedule for the subjects you want to cover, such as data structures, algorithms, and programming tasks you want to complete. I’ll include a study schedule in the preparation materials for the technical interview.
Cracking the Coding Interview is the book Id start with. It is the most mature and easy-to-understand read resource. I also suggest it because Gayle, the author, instructs both large and small tech companies on how to conduct effective coding interviews. She did this at Uber, where we made changes as a result of her assistance. No other book offers the level of preparation for interviews that Gayle assisted in creating.
I have several copies of this book, and they have all helped me tremendously when preparing for interviews. It is detailed, priceless, and used as a “baseline” for the majority of Big Tech interview preparation.
De-Coding The Technical Interview Process, written by Spotify software engineer Emma Bostian, offers frontend engineers a novel approach to navigating the technical interview process. After finding Cracking the Coding Interview to be overly Java/backend-focused, she wrote the book. Additionally, the book includes 1, 2, and 4-week learning plans. A great book to start with.
Programming challenges are abundant in Elements of Programming Interviews. The way exercises are organized by data structure and algorithm area is fantastic. It’s a good place to go for additional practice on particular problem areas.
The book I’d suggest to understand the most popular algorithms is Grokking Algorithms. I’m of the opinion that you won’t be asked about any additional algorithms during engineering interviews or at tech companies. I purchased and read most of the Fourth Edition of Algorithms and the Algorithm Design Manual. Both books go much further than any coding interview I’ve found to delve into. Unless youre really into algorithms, I would not recommend them.
You’ll want to practice coding exercises, and there are plenty of sandbox platforms available:
The number of articles, videos, and individuals offering guidance on how to get ready for coding interviews at tech companies is almost excessive. Here are my favorites:.
Interviewing at Facebook / META !? (What they don’t tell you..)
Ive studied so hard over the last months. I passed E6 with flying colors today after spending my Christmas break learning to code and taking mock exams with other blinders[1]. In the coming weeks, I’ll have the numbers. Maybe next week. Although I’m not sure if I’ll participate (I’ve already made another post about it), I’m still so ecstatic that I wanted to share with you blind strangers! I have so many questions but Ill make another post. EDIT: In response to a request, the following preparation strategy is being used: teamblind. System Design: I have absolutely no first-hand experience with distributed systems (although I do have some experience with system design, primarily embedded). I didnt know anything when I started my preparation. I read DDIA and System Design Interview ( http://bit. ly/2N4NaTe) book (much better than grokking) and I completed numerous mock interviews in the two months leading up to the interview (almost daily). I also did a couple of paid on interviewing. io which were very useful. InfoQ videos are extremely useful. I lost count of how many I watched. And of course, there are countless articles online to delve deeper in a particular subject. Everything was new to me. It was a lot of work. View a previous (bad) performance of mine here to at least get a sense of the format I used: https://bit Unfortunately, I didn’t think of recording my sessions until it was too late. And yes, this is also self-promoting. Coding: Because Facebook is so predictable, stay with LC-tagged questions and take lots of mock exams. Practice speed and manual debugging, as I did here: https://bit ly/2NB6vvz Some questions were not on LC but very similar. One interviewer asked me 5 questions, which I answered succinctly because I was stupidly honest about having seen 3 of them (all of which were difficult). I only started preparing and gathering stories toward the end, but for senior positions, this is probably the most crucial one, so DON’T UNDERESTIMATE IT. Luckily it went decent. UPDATE: Some people are asking how on earth you joined Facebook as E6 without having any experience with distributed system design. My CV does not lie, and I am confident that the recruiter can read it, so that is exactly what I asked myself and the recruiter numerous times. However, I have embedded system design experience, and if I decide to join Facebook, I’ll join a team that matches my area of expertise. I’m primarily considering FLR, where I’ve already seen some openings for system, kernel, and OS engineers. UPDATE2: Im getting a lot of request for mock interviews. Send me an email with timezones, availability, YoE at interview. me. mock@gmail. I’m looking for someone to interview because I want to make some videos. Expect delay in response. Please let me know if you have an interview coming up so that I can make it a priority. I want to repay the kindness that people on blind have shown me in the past. UPDATE3: People have been requesting a discord server, so I made one at https://discord.gg/. gg/6AAKTPv3jK join and find a match. Additionally, I can assist with mock exams over the weekend until COVID and lockdown arrive. UPDATE4: I gave 50 free mocks. None worth recording unfortunately. I will not give any more free mock interviews. Joining the Discord channel to find a spoof partner is free of charge. There are 1K users now. I only accept paid work if I have the time. Details of the preparation include that I began in May 2020 using only algorithms because I wanted to test Google in 2021. Watched: MIT 6006 – https://www. youtube. com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb Watched: Coursera part 1,2,3 of https://www. coursera. org/specializations/algorithms Watched: Graph course from Google enginer – https://www. udemy. Algorithms Illuminated 1, 2, 3, (I’m reading 4) Read books: Competitive Programming 4 part I https://cpbook.com/course/graph-theory-algorithms I started with system design in the middle of November (two months before the final; I wish I had started much earlier) Read the books System Design Interview by Alex Zu and Design-data intensive application by Klappman. Start mocking regularly. My first session barely resulted in the hiring of E4 (feedback from FB E6 during interviews). io). I spent 1400 Euro on mocks! Its a investment. Period. It worked. Dont care what you think. Watched: InfoQ video from Netflix/Twitter/Amazon https://www. youtube. com/user/MarakanaTechTV Watched: Some facebook video from their channel. This one multiple times! https://www. youtube. Read countless papers on Dynamo, Memcached, Redis, and other things I can’t recall at https://www.youtube.com/watch?v=5RfFhMwRAic. I guess there is a silver lining in every cloud because without COVID, none of this would have been possible. Since Google is a different game and I don’t think I stand a chance, I’m changing it as I continue to prepare for it. However, I am Reading: https://jeffe. cs. illinois. edu/teaching/algorithms/ Reading: Competitive programming 4 part 2 https://cpbook. net/ Watching: MIT 6046 – https://www. youtube. com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp Keep performing mock tests, but focus on complex problems with ambiguous problem descriptions rather than speed. The hiring process is broken. What a surprise. My answer? Suck it up and deal with it. We can change it by learning to code and improving our skills so that they can change it like Square or Stripe are doing (I would love to work for them!). Training is the most crucial step. I kept training regularly 4-5 times a week. Boxing until they opened, then powerlifting at home. My bench went from 130Kg to 145Kg during my preparation. Highest in my entire life. Squat is still 185Kg. Deadlift I stopped. Dont have time. But it is still around 210Kg. Body weight is 78Kg. YoE 10 Current TC 110k (current Europe) [1] https://youtu. be/S8AT0dgPPRo Ps. I failed Amazon right before FB.
Interview process and timeline
How long does the Facebook / Meta software engineering interview process take? The steps are as follows, and it typically takes four to eight weeks:
Let’s take a closer look at each of these steps below:
Recruiters will first review your resume to determine whether your experience is relevant to the open position. We’ve found that approximately 90% of candidates don’t advance past this stage, making it the most competitive step in the process.
Therefore, be extra careful to customize your resume for the particular position you’re applying for.
Get advice from our team of ex-FAANG recruiters if you want professional opinion. They will discuss which accomplishments to emphasize (or ignore), how to improve your bullet points, and more.
In most cases, youll start your interview process with Facebook by talking to an HR recruiter on the phone. They are looking to confirm that youve got a chance of getting the job at all, so be prepared to explain your background and why you’re a good fit at Facebook.
Expect standard interview questions about behavior and your resume, such as “Tell me about yourself,” “Why Facebook?” and “Describe your current day to day as a developer.” “.
The recruiter will assist in scheduling your initial technical screenings with a Facebook engineer if you pass this initial HR check.
Facebook’s recruitment process is very open and transparent, which is a great feature. As a result, your HR contact will guide you through the remaining steps of the hiring process and send you a helpful email with a list of tools you can use to get ready.
You’ll go through one or two initial 45-minute technical checks, which are typically conducted by phone. A few behavioral questions will be asked to start off your interview, but the majority of the time will be spent on standard coding questions (e g. data structures, algorithms, etc. ).
For these phone interviews, you’ll utilize a basic online code editor without syntax highlighting or auto-completion (e g. It’s a good idea to practice using one of them beforehand (such as CoderPad).
Finally, you can request to attend the initial screenings in person if you live close to a Facebook office and are extremely motivated to work for the company. Because it will be a better experience for both you and your interviewers, your recruiter will typically be happy to arrange this for you.
Onsite interviews are the real test. Youll typically spend a full day at a Facebook office and do four to six interviews in total. Each interview will last about 45 minutes and cover one of the following topics:
Three coding interviews, one design interview, and one behavioral interview are the norm. However, as we’ll cover in the section after this, the precise breakdown will vary based on the position, team, and level you’re applying for.
Along with these interviews, you’ll also have lunch on site with another engineer. You are expected to ask questions about what it’s like to work at Facebook during the lunch interview. Although the company won’t be evaluating you at this time, we advise that you conduct yourself as though they were
Additionally, it should be noted that the onsite interview step may occasionally be conducted virtually rather than in person. When you get to this point, your recruiter can provide you with more details.
2 Differences between levels and roles
Depending on the level and role you’re interviewing for, the procedure we’ve just described may change a little. Here are some of the most typical variations you can anticipate:
The expectations for junior and senior engineers are different.
You will be required to perform exceptionally well in your coding interviews if you are an entry-level or junior engineer. However, the performance bar will typically be lower for you than for more senior candidates in your one system design interview, and if it is not relevant to your role, you might not be given any design interviews.
Both of you will need to perform incredibly well in the interviews for coding and system design if you’re a senior engineer. You might also conduct two design interviews depending on the circumstances (e g. youre applying for the infrastructure team).
Facebook has two career tracks. Either pursue the management track, where you eventually manage teams of engineers. Alternately, you could continue to be highly technical and specialize as you advance in rank (individual contributor track).
You should anticipate primarily technical interviews during an individual contributor interview and typically only have one behavioral interview.
You should anticipate at least two behavioral interviews if you are being interviewed for a position as a manager, director, or higher. Be prepared to discuss how you lead teams across functional lines, carry out projects, expand an organization, etc.
Example questions
As previously mentioned, there are different types of interviews you may encounter for the job of Facebook engineering manager.
Now let’s take a look at what you can expect from each interview. To help you practice, we’ve provided example questions that we’ve found from our research on Glassdoor. Weve categorized the questions and weve changed the grammar and phrasing in some places to make the questions easier to understand.
Check out our list of 65 engineering manager interview questions if you’re looking for even more practice questions.
When preparing, keep in mind that the distinctions between the different interview types are arbitrary, so you should be prepared to answer any question in any interview. For instance, you might be asked a question of this nature regarding your cultural fit at the outset of a system design or coding interview. Likewise, you might be asked some management-related questions during a project retrospective interview. But it shouldn’t be a problem if you’re ready for all of them!
FAQ
What is E6 level at Facebook?
At Facebook, E6 SWEs also work as M1 Software Engineer Managers. To achieve objectives, they recruit and hire new Software Engineers and facilitate coordination between various teams.
How much does a Level 6 make at Facebook?
How do I prepare for a Facebook technical interview?
To help you get ready, practice some of the questions using a whiteboard or pen and paper. Practice under time pressure. It’s crucial to complete the coding question on time because you will only have a limited amount of time. To simulate the interview process, if at all possible, conduct a mock interview with a friend.
Is it hard to get a software engineering job at Facebook?
Facebook has a less than 3% acceptance rate for software engineering positions, making it extremely difficult to find employment there. But you can succeed in Facebook’s arduous technical rounds of interviews with a well-directed preparation strategy, planning, and execution.