A quick note from the editor:
We recently got to join and moderate a live AMA call that Yihua Zhang did with our students in the Zero To Mastery virtual campus.
Students and I asked questions about the coding interview process, the different elements and stages in the hiring system, how to understand and prepare for each stage, and how to get ready for interviewing for more Senior positions.
You can check out some of Yihua’s answers to the questions from his AMA call below, but first, let me introduce him.
Who is Yihua Zhang and why should you listen to him?
Yihua was the 2nd Instructor to join ZTM after Andrei himself, and his courses have become some of our most taken and highly recommended by students, thanks in part to his ability to understand what students need, and how best to present it.
He believes that learning itself is a skill that needs to be practiced and improved upon, and he is dedicated to helping others improve and master that skill.
He understands the challenges and mindset of coming into this industry from various other backgrounds, having been both a student as well as an instructor. This helps him to empathize with the difficulty of learning something new and the challenges that it brings. (Although Yihua is a self-taught developer now, he actually used to be a personal trainer and own a gym, so talk about a wild career switch!)
Yihua is the creator of multiple courses on ZTM, but today, we’re going to focus on two in particular: Master the Coding Interview for Big Tech (FAANG)
And also his latest course that just dropped recently, Master the Coding Interview: System Design + Architecture.
It was a great interview so with the intro out of the way, let’s dive into his AMA answers 😀.
Psst…
Want to watch all the recorded AMA videos, ask questions in our Discord, or join in live on our next expert AMA?
Well, these are all exclusive access bonuses for members of Zero To Mastery. You can find out more details about every course, as well as all the other benefits of being a ZTM member here.
Anyways, let’s dive into these questions…
What is a coding interview?
A coding interview is a set process to be hired for a programming job.
It usually has a number of stages but can vary based on the company, and also the company size. Some companies will skip steps, while others will ask for more from you.
The basic elements can be:
- An online application
- A quiz
- A live technical test, where someone asks you how to solve specific problems or build certain applications using a chosen language or framework
- Possibly a small paid project to see how you work under a deadline
- An in-person meet and greet
- And finally, a behavioral interview assessment
This process and steps can vary but the biggest difference in this process usually comes down to where you’re applying for. A coding interview at a smaller company is almost always based around the work you will do day to day in that position, with the questions they ask being language and framework specific.
For example
If you’re applying for a Front-end role with React, they may send you a quick project and ask you to add a feature to it, or perhaps write some tests or find errors in existing code.
Whereas with FAANG and large FAANG-type companies (FAANG being Facebook, Amazon, Apple, Netflix, and Google), they will ask all this and then more of you.
What like?
Well, on top of the usual language and framework questions they will also get you to solve technical questions on specific topics that you might never cover in your daily job, primarily on the subjects of Data Structures and Algorithms, and how they affect certain problems or designs.
(Example below).
There has been some progress recently where certain FAANG companies are starting to hire for more specific roles such as a Front-end Engineer etc but for now, the majority of them want broader engineers who can adapt.
This means that even if you do apply for a specific front-end role, you’ll still get some questions about Data Structures and Algorithms, they might just be less complex, or more relevant to your role. Either way, for the time being you need to learn this if you want that FAANG job.
Why do FAANG companies want you to know Data Structures + Algorithms?
If we simplify it down, it’s really for 3 reasons:
Reason #1: Adaptability
They want to hire people who can move around departments as needed, and also understand larger topics.
Reason #2: Scalability
They’re also looking for people who can write scalable code that can work with their huge customer bases. To do this, it’s not just enough to know how to build something, as there are hundreds of potential solutions to any problem or design.
Instead, they want people who understand how to build it in a way that it doesn’t break at scale and works well with distributed systems, and you can't do that without a background knowledge of Data Structures + Algorithms.
Reason #3: Filtering
Finally, by making it well known that their hiring process is more complicated and requires specific knowledge, it helps them to filter down the candidates to the best that meet their needs.
What if I don't know this topic?
If you’re a self-taught developer and don’t have a Computer Science degree then you probably skipped a lot of the underlying theory on these topics and might be freaking out because you want that FAANG role. Don’t worry as we have courses on this to help.
Andrei’s course covers these concepts and what they all mean, and then my FAANG interview course shows you how to solve the most common questions in each area, and gives you a process to solve new problems so you don’t have to memorize the hundreds of potential coding questions!
This way you can learn to adapt and also apply these techniques to new problems in your job.
If FAANG companies are harder to get hired at, why work there?
FAANG companies represent perhaps only 5% of the hiring pool, but almost all developers want to end up working for them, simply because the pay and benefits are so large in comparison.
Editor’s note: I’m currently writing up a success story of someone who took Yihua’s FAANG interview course, and got hired at Google. They were already working as a Software Developer for a tech company, but the pay difference when they took the Google role was an increase of over 450%.
If you think that’s good, you can see the salary range below for different Software Engineer levels at Google, along with their specific benefits and stock options.
A starting rate of $144k plus bonus + stock is pretty damn good eh!?
Spoilers for further in the interview, but those who learn System Design and Architecture can get more Senior positions, and the benefits in those roles are quite simply insane.
$327k per year + stocks and $98k bonus for a whopping $1.14 Million PER YEAR!
So yeah… you can see why people find it very much worthwhile doing the extra work to get hired by these big companies 😉
Will the interviewer ask specific language questions (ex: how Python works?)
Generally no. Sometimes a non-technical person may ask you broad language questions like this in an initial interview just to see if you know the language.
As for the actual 'technical' interview and problem solving, most interviews will be language agnostic, meaning that you can choose from a selection of programming languages to use and solve the technical questions asked by a member of the programming team.
In this instance, they may ask you something specific about the language and how it relates to the solution you’re using to solve the problem.
For example
It could be that the language you’re using is great at some of the features that you want to create to solve their problem, but it’s also limited in some way in other areas.
In this situation, you may have to use a method to solve the problem that’s less than ideal to get around these limitations, and so the interviewer may ask why you’re doing this.
In all likelihood, they probably already know the answer, but they want to see if you know why you're doing it. You have to understand that they’re not just assessing your abilities, they also want to see how you approach problems and how good you are at explaining the reasoning behind the solution you decide on.
Ultimately though, they want to make sure that you’re aware of these things and that you have taken scaling into consideration. It’s no good having something that works in the ideal scenario and low load but would break under normal or higher traffic.
What is the best way to prepare for a technical interview?
It depends on your background. If you don’t have a Computer Science degree, then you need to learn Data Structures and Algorithms because you simply can’t pass the interview without it.
That being said, even if you did complete a CS degree, it’s worth re-covering this information as you might need to brush up and polish what you know.
It’s such a dense topic that can take anywhere from 2-3 months of studying and practice to get proficient enough to pass the interview tests.
That and the simple fact that most of the questions in a technical interview are not covered in a University degree.
Heck, some people even quit their job and spend 3-6 months full time just studying these topics, because you’re essentially trying to learn CS 101 and 102 (which are year long courses).
Sidenote: You don’t need a CS degree to be hired at FAANG companies, as they will happily hire self taught Developers. However, you do need to know the same information that would be covered in that degree, such as Data Structures and Algorithms.
What topics do I need to learn to pass my technical interview?
Your technical interview test can feature questions on any of the following topics:
- Data structures: Arrays
- Data structures: Hash Tables
- Data structures: Linked Lists
- Data structures: Stacks and Queues
- Data structures: Trees
- Data structures: Graphs
- Data structures: Recursion
- Data structures: Sorting
- Algorithms: Searching
- Algorithms: BFS (Breadth First Search)
- Algorithms: DFS (Depth First Search)
- Algorithms: Dynamic Programming
So as you can see, there's quite a lot to learn!
Should you try and learn all the technical interview questions?
If you can afford it and you think you need that time, then it doesn’t hurt to focus. That being said though, there’s probably a better way of doing this.
We recommend that rather than just trying to remember all the answers and how to solve literally hundreds of questions, you instead focus on the concepts and why they work the way they do, and then learn processes for how to solve any question.
This way you can then take that knowledge and skill, and then practice applying it to any question either on Leetcode, or in our courses. This way you’ll be able to build confidence and expertise, regardless of whichever questions you get on the day, or even problems you might face in the future.
You can still get hired and be proficient enough to take your interview, with just a few months of practice in the evenings, if you take the right approach to learning this.
Also, remember that the interviewer isn’t always expecting you to finish the problem on the day. They’re looking for how you will approach and work towards it, as that’s almost as important.
So here's a simplified overview of how to prepare:
- Learn the important concepts behind Data Structure and Algorithms and why/how they work
- Create a study plan of what you want to learn. Be sure to know all the major topics that are covered such as Arrays etc. (See list above)
- Set aside a time of the day to practice daily. Try to get 1-3 hours in if possible, more if you have the time
- Set a timer for answering questions while studying. The interview will be timed also, so try to answer questions in the same time frame to get an accurate assessment of your abilities
- Learn a process to solve these problems, and then apply it when answering questions. Do you understand the question? Are the details given correct or do you need to check them? Look for the simplest solutions and then map it out before writing code. Test it and then see if you can improve it. Can it scale?
- Build up your revision process. Can you figure out the problem? Can you answer it? Can you come back in a few days and answer it faster? Can you answer it with certain variables changed? Improve on what you have so far
- Apply for roles now while you're still studying
Editor’s note: We cover this information and provide a much more detailed plan to follow to prepare for your interview in this guide here.
Is it worth taking practice interview tests?
100% because nothing beats experiencing the technical interview, like actually doing one!
Some people really struggle with nerves on the day, so getting comfortable with the conversations you might have, and being able to solve the problems in a realistic setting will help remove anxiety when sitting the actual interview.
How long should I practice before applying for jobs?
Hmm it really depends on the person, your prior experience and what level of role you’re applying for. Some people work better under pressure, so if they’re applying for jobs and have a deadline coming up, then they’ll practice far more and take action.
Sure, they might not know enough on the day, but there’s a lot of value in actually getting in the interview and experiencing it first hand a few times.
Often people can know the topic but fail simply because they can’t handle pressure on the interview day, so getting through a few interviews (especially at companies / roles you're a bit less interested in) can help you relax more for the 'dream job' interview when that comes along.
Others will want to learn everything and possibly never apply because they don’t think they know enough. No joke, you can see people on Leetcode who have been practicing answering problems for literally years. The other side of this is that with no deadline at all, they might not even study enough.
So you really need to know what works best for you.
Here at ZTM we recommend you start applying as soon as possible and get that fire under you, and you might be surprised how well you do. We’ve had people hired at FAANG in 6-12 months with zero experience before that!
If you’re looking at applying for a more Senior role, then you’ll also need to know System Design + Architecture, so you’ll want to add in 2-3 months for learning that as well. In fact, the sooner you learn System Design, the better.
What is System Design?
Similar to how an architect will plan the build and layout for a building, System Design is the understanding and knowledge to design distributed systems to meet your application requirements. i.e all the parts needed to make it work.
System Design is the truest measure of technical seniority because it expands across every single thing inside of a system.
This involves a deep understanding of all the modules, interfaces, components, data structure, and more to build your system, which as you can imagine, is a lot of responsibility. That's why it's a core skill for anyone applying for Senior roles at FAANG or even other companies.
With that in mind, Senior interviews will have a separate System Design interview section, where you will be assessed on your critical thinking and problem solving to plan and build large scale applications, such as Uber's ride sharing platform, Facebook's News Feed, and others.
When should you start learning System Design?
A lot of people make the mistake of only learning System Design a few months before applying for a Senior Role. This is kind of madness as it’s such a large topic to learn.
You're far better off learning it as soon as possible, simply because understanding System Design will actually make your job easier, at any level, because you’ll start to see how elements of your system work together.
Heck, it’s worth learning this even if you’re not in a technical role but are technically adjacent! You’ll understand far more of what is going on and be able to make better decisions, while also understanding your engineers needs.
Knowing this subject can not only streamline your decision making, but it also helps you make sure that your solutions and designs compliment or improve your system and not break it.
I highly recommend that you start learning System Design, even if you’re just now applying for your first role. Understanding the larger ecosystem for your role is an absolute gamechanger, and the fast path to being promoted.
Tl;dr
- You NEED to know this to pass the System Design section of a senior programming interview
- Don’t leave it too late to learn
- It’s worth learning this now, even if you’re a Software Engineer 1, or even just applying for roles. A deeper understanding of connected, distributed systems will help you see why things work or fail, and help you make better choices
How would you prepare for a System Design interview?
Similar to the data structure interview, there are typical questions that come up in most interviews that you can practice or cover in advance.
The problem with only memorizing these answers, is that if the problem is tweaked or the system changes, you need to be able to understand how that affects the solution, as you may need to adjust to something very different.
You can’t empathize with the solution until you really know the problem inside and out, which is why it’s worth understanding the concepts more than anything else, and then practicing and tweaking questions to suit.
This is why we cover the concepts of distributed systems and more, as well as how to solve these usual problems that come up, so you can adapt.
And of course as we’ve said before. Don’t leave it to the last minute to learn this. The earlier you start practicing and understanding, the easier it will be.
🔥 Want to learn more and pass your coding interview?
Hopefully this AMA helped you to get a clearer understanding of what you need to learn to get those FAANG level positions. Like we said above, it’s not easy but the financial benefits are quite fantastic.
- You can learn all about Data Structures and Algorithms here, so you can understand the concepts and grasp the bigger picture
- Then learn how to apply that information to solve technical interview questions and basically crash course a CS 101 and 102 course, without the huge price tag of 2 years at University
- Finally, if you want to start planning for that senior role, there’s no better time to start learning System Design than today
And good news? If you become a ZTM academy member, you get access to all these courses and more! So start learning now and make 2023 your biggest year yet. 😃









