AI WEEK IS HERE: See All New AI Courses here.
Use Code: LEARNAI to get 21% OFF any membership. Expires soon 👇
06DAYS09HOURS18MINS19SECS

AMA Deep Dive On Mastering The Coding Interview With Yihua Zhang

Yihua Zhang
Yihua Zhang
hero image

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.

Blog post image

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)

Master the FAANG coding interview

And also his latest course that just dropped recently, Master the Coding Interview: System Design + Architecture.

Master the System Design + Architecture coding interview

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?

Blog post image

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).

Blog post image

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.

Blog post image

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.

Blog post image

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.

Blog post image

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.

Blog post image

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.

Blog post image

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.

Blog post image

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.

Blog post image

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.

Blog post image

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.

Blog post image

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.

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. 😃

More from Zero To Mastery

How To Ace The Coding Interview preview
How To Ace The Coding Interview

Are you ready to apply for & land a coding job but not sure how? This coding interview guide will show you how it works, how to study, what to learn & more!

What Are The Best Places To Learn To Code Online? preview
Popular
What Are The Best Places To Learn To Code Online?

With 100's of sites to learn to code from online, which platform is the best for you? We got you. Here are the pros & cons for 14 of the best sites.

What’s The Best Way To Learn To Code? preview
Popular
What’s The Best Way To Learn To Code?

Coding Bootcamp vs Degree vs Self-Taught? There are pros & cons of each route. This deep dive breaks it all down and will help you find the best option for YOU.