I hear this question asked over and over again. Are there company specific ways to study for software engineer interviews at the big 4? Well big 5 now. Whether you are looking to interview at any of the FAANG companies (Facebook, Apple, Amazon, Netflix, or Google) you are probably searching for the proper way to study for each specifically. But you know what? That’s actually not the right approach. You are asking the wrong question and I’ll explain what I mean.
Most of the time the biggest issue behind this question is that most people are not nearly at the point where they actually need to be worrying about whether they are doing company specific prep or not.
What I mean by that is that most people just have so much of the fundamentals that they still need to work on, that working on the FAANG coding interview specific prep is just the icing on the cake.
So if you use the cake analogy you can't frost a cake that doesn't exist right? And so why are we worrying about the frosting before we actually have the cake.
And this is the problem that I see a lot of people run into because most people have not focused enough on the core technical skills and the core interview skills to be able to even think about what are these specifics of these different companies. You can’t just go straight to Google interview questions or Facebook interview questions specifically, until you have mastered the basics.
So, what should you do?
The first thing you should do is focus on the fundamentals. This is something that people really tend to skip a lot and it's even more important if you did a bootcamp or you didn't study computer science as an undergrad.
What does this look like?
This looks like going through all of those common data structures and algorithms and reviewing them. It looks like going through a linked list and understanding not only what a linked list is and how to implement it, but what are all of those common algorithms that go along with linked list?
So for example how do I reverse a linked list? How do I insert a node into a linked list? How do I delete a node? How do I swap two nodes? All of these questions are core to that fundamental understanding of what a linked list is. And most people have not gone through this nearly enough.
There are a lot of pretty tricky questions out there just within this realm of fundamentals.
For example deleting a node from a binary tree, do you actually know how to do that right now? Because if you don't you probably need to go back and review. These should all be things that you can just pull out of a hat because you already know exactly how to do them. And so if you don't know how to do them that's the place that you need to start. Coding interviews are just a matter of combining all of these different patterns from different places, and those patterns start with the fundamentals. So if you don't know your fundamentals you won't have the patterns to draw on.You can’t just go straight to Google interview questions or Facebook interview questions specifically, until you have mastered the basics. Click To Tweet
The next thing that you should do once you understand those fully, all of those patterns, and all of those different fundamental data structures, is to understand how to solve these problems. The problems that you might see in your interview and learn how to get unstuck when you see them. This is one of the biggest problems that I see people have. It's not that they actually don't know the stuff they need to know to solve the problem. As long as they’ve done their fundamentals they know everything they need to know to solve the problem. But the issue is that they are getting stuck somewhere and don't know how to get unstuck.
So the next most important thing is to really understand and practice of getting unstuck in a problem when you see it. I wrote a blog post about this if you want to check it out. There are ten different techniques that I use to get unstuck when I'm working on an interview question and I don't know what to do.
I highly recommend that you check that out, because that's a super important thing to cover. And now only once you've done all of these things and only once you feel really confident on answering interview questions in general, this is when you can start to look at company specific prep. This is when you're just tweaking around the edges where you're basically good and you know everything you need to know, it's just that little bit of refinement that's gonna put you over the edge for your FAANG coding interview. And really give you that leg up when you go to the company.
The key thing here if you're looking for that information is go to GlassDoor.com. GlassDoor is hands down the best place for this information. What you’ll find at GlassDoor:
- Interview questions that people were asked at the company
- What sort of experiences people had
- What you can expect when you go into the interview
You only want to do this at the very end when you're trying to refine everything. This is the point where I like to work with people who really have everything nailed down and then we can get into that FAANG company specific stuff and really research and figure out what they need to know for that company.
If you're worried about preparing for a specific company, focus on overall prep first. Then you can come back to worrying about that company later, once you've got that really nailed down.