Tech-entrepreneur, software engineer trying my best;

The harsh reality of coding interviews

Written in

by

It was an ordinary Monday morning, 9:00 AM sharp. Coffee in hand, I answered a call from an unknown U.S. number. “Hello?” I said.

“Hi, Alifyz. Are you available to chat? I’d like to talk to you about an opportunity at our Facebook Engineering office. We’re looking for Senior Mobile Engineers to join our team.”

Some Recruiter at Facebook/Meta

A thrill shot through me. With five years of industry experience under my belt, a recruiter from Facebook was calling me about a potential job! I could barely contain my excitement, but there was a catch.

My interview skills were, to put it mildly, lacking. Whiteboard coding challenges? I was a disaster. (I still am, if I’m being honest). But I’ve since learned to navigate them better, acquiring the skills needed in today’s job market.

Why does this matter? Because I know the feeling of facing interviews that were far more difficult than the actual job. I’ve failed countless interviews due to nerves, stress, and the inability to think clearly under pressure.

But that didn’t mean I wasn’t competent or professional enough. It simply meant I hadn’t yet adapted to the sometimes harsh and unfair reality of tech interviews.

The Pressure to Perform

If you’re prone to anxiety, you likely understand the pressure of performing in a technical challenge, like a whiteboard interview. Often, interviewers aren’t just looking for the right answer but for your problem-solving process using your preferred programming language.

I’ve had interviews where I was close enough to solving the whiteboard problem to pass, yet still advanced in the process. In contrast, I’ve bombed interviews where I steered in the wrong direction or couldn’t provide the exact answer they looking for.

The pressure to perform once got so intense that I needed medication to regain composure. This is a fear shared by many well-rounded engineers. I understand that big tech companies use these interviews as a filter due to the sheer volume of applicants, but that doesn’t disqualify those who don’t excel in this artificial environment.

Having experienced both sides of the interview table—first as a candidate struggling to secure a big tech job in Brazil, then as an interviewer myself—I want to offer honest insights to help you achieve your dream job.

What you need to know to excel in tech interviews

Live coding interviews can be unpredictable. It’s important to accept that if you lack the core knowledge for a specific question, it’s okay to fail. In fact, use that as an opportunity to excel in the next round, should you advance, or in your next interview altogether.

Even if you stumble during the live coding, there’s still valuable learning to be gained. Figure out how to solve the question, identify your knowledge gaps, and move on. You’ll likely face many rejections before landing a job, so get used to the process.

With that mindset shift, let’s discuss the tools I believe you should have in your arsenal to excel in most live coding interviews:

  • Arrays: Many, if not most, interviews will require you to manipulate, create, or modify arrays. You might be given a string (an array of characters) or asked to work on specific patterns. Familiarize yourself with how arrays work in your chosen language: Are they mutable? How do you transform them, filter them, or iterate through them?
  • Hash Maps: Hash tables, often called hash maps, are essential. Engineers have even built products around them (e.g., Redis). Many optimized solutions involve hash tables, so mastering them is key.
  • Standard Library: Learn the most important functions in your language’s standard library. For example, in Java, familiarize yourself with the built-in sorting functions. You’ll rarely implement custom algorithms, so leverage what’s readily available. I’ve personally found Kotlin’s null-safe operators and filter functions to be lifesavers.
  • IDE Familiarity: Get comfortable with the environment where you’ll be coding. Popular platforms like CodeSignal and LeetCode are good places to practice. Knowing your way around saves time and mental energy, allowing you to focus on the problem at hand.

What you should avoid

I’ve certainly said things in live coding interviews I shouldn’t have. Here’s a list of things to avoid:

  • Don’t overshare personal information: While it’s fine to acknowledge nervousness, avoid disclosing information about neurodivergence or anxiety disorders. Unfortunately, we can face unconscious bias, so focus on showcasing your abilities rather than inviting potential judgment based on your condition.
  • Don’t underestimate the question: Even if you’ve seen it before, treat each problem as an opportunity to demonstrate your skills. Consider how you can improve upon your previous solution or approach the problem from a fresh angle.
  • Don’t get fixated on one solution: Keep an open mind. Interviewers might be willing to guide you towards an easier path. Engage in a dialogue and ask clarifying questions to gain valuable insights from them, instead of chasing your own tale.

Get use to learn “useless” stuff

Accept that some of your learning will be solely for the purpose of passing live coding interviews. In my experience, only a small fraction of concepts tested in these interviews are directly applicable to daily work. While these concepts are important, the learning process can often feel irrelevant to your actual job.

For example, understanding Big-O notation is valuable for code analysis and review, but the likelihood of using it regularly in your daily work is minimal.

Keep on, don’t quit

I had moments of doubt, questioning whether I was cut out for this field. After countless rejections, I simply accepted that I needed to keep trying until I succeeded. The truth is, there’s no secret formula – you get better at job interviews by experiencing them, even the failures. So, go out there, face the rejections, learn from them, and improve with each attempt.

Bye.

Leave a Reply

Your email address will not be published. Required fields are marked *

en_USEnglish