How You Are Evaluated in Coding Interviews (At Least at FAANG)
4 minutesWe’ve not only taken interviews but have also given interviews at some of the top tech companies and have been part of hiring panels. Most people assume that just writing a passing solution is enough, but interviewers also evaluate other skills like communication, debugging, and code quality.
How will my interview be graded?
You’ll be given a general rating of how strong of a candidate you are:
- Strong hire: You nailed it. They’d love to have you on their team because you stood out with your skills and qualities.
- Hire: You did well. You showed strong skills and are a good fit for the role.
- Lean Hire: You have potential, but still have areas that need improvement.
- Lean No Hire: They’re hesitant about recommending you but wouldn’t completely block your chances.
- No Hire: They don’t think you’re ready for this role yet.
- Strong No Hire: They noticed significant issues and would not want to work with you.
This is a six-point rating scale, but some companies may condense their scoring to a four-point scale. Completing the question and communicating well will tip you toward being considered as a hire. Excelling in the other areas will push you toward being considered as a strong hire.
What is assessed from my interview?
There are four main areas you’ll be critiqued in. All of these areas will be used to reason whether you should be hired or not.
Problem Solving
- ✅ Do This
- Thoroughly understand the question and examples.
- Work independently most of the time.
- Consider relevant edge cases.
- ❌ Avoid This
- Needing a lot of help to understand the problem.
- Needing a lot of guidance to come to a reasonable solution.
- Stopping at a simple solution without thinking of improvements.
- Not considering important edge cases.
Coding
- ✅ Do This
- Translate your ideas into code easily, explaining your thought process aloud.
- Recognize the syntax and features for your chosen language (example: f-strings, typing).
- Keep your code organized, easy to read, and write modular code.
- Be able to compute the time and space complexity of your algorithm.
- ❌ Avoid This
- Struggling to turn ideas into working code.
- Not knowing basic syntax of your chosen programming language.
- Only writing pseudocode, or relying too heavily on pseudocode.
- Writing messy or inconsistent code.
- Not knowing how to analyze runtime or memory usage.
Debugging
- ✅ Do This
- Walk through your code with an example, stepping through line by line.
- Mention edge cases and make sure your code addresses those cases.
- Find and fix your own bugs on your own.
- ❌ Avoid This
- Not being able to spot or fix bugs.
- Adding more problems when fixing bugs.
- Leaving the problem unsolved for important inputs.
Communication
- ✅ Do This
- Listen to feedback and improve your solution.
- Take ownership of your solution while being open to the interviewer’s help.
- Share what’s confusing or challenging for you.
- Ask relevant questions that show how you’re thinking about the problem.
- ❌ Avoid This
- Struggling to incorporate given feedback to improve your solution.
- Relying too much on the interviewer for help.
- Ignoring suggestions from the interviewer.
You'll be assessed on each skill, which will be used to support the interviewer's hiring rating.
What does a strong candidate look like?
Generally, a strong candidate:
- Mentions pros and cons of naive and optimized solutions.
- Writes clean, readable, reusable code.
- Solves the problem, tests the code efficiently before time is up.
- Proactively tests and debugs their code, including handling edge cases.
- Incorporate hints or feedback given by the interviewer (if any is given).
- Explains their thought process well.
Success in an interview requires more than just writing a working solution. Simply practicing coding problems while neglecting other key skills will leave you unprepared. We recommend taking mock interviews with friends so they can point out which qualities could be improved.