· 11 min read

How to Prepare for Software Engineering Interviews

This article was auto-translated from Chinese. Some nuances may be lost in translation.

Throughout my career, I’ve sat on both sides of the interview table countless times. Everyone knows the tech industry’s hiring process is deeply flawed. This guide is meant to offer some practical perspectives to help maximize your odds of success.

I’ve written various interview reflection pieces in the past, but the landscape has shifted significantly with the rise of AI. For instance, many companies now observe how candidates leverage AI to solve problems during interviews, and I believe this will gradually reshape the direction of tech interviews as a whole.

Interview Performance Does Not Equal Your Competence

One of the most frustrating things about interviews is how heavily one-sided the power dynamic tends to be. As an applicant, it’s difficult to figure out what their actual standards are, making it all too easy to spiral into self-doubt after an interview ends. A poor interview outcome absolutely does not mean you are a bad software engineer. Once, right after finishing an interview assessment, I noticed a minor mistake, so I immediately emailed HR to explain where my reasoning had gone wrong, terrified of losing the opportunity. Fortunately, I passed.

My point is: an interview process can easily derail over some unexpected hiccup, causing you to miss out on an opportunity.

As I mentioned in Hiring and Interviewing, interviewing is inherently a lot like drawing lots.

Faced with limited resources, companies adopt a strategy that prioritizes Precision over Recall in order to avoid the massive management and turnover costs of hiring the wrong person. In other words, companies would rather tolerate a False Negative (accidentally rejecting a strong candidate) than risk a False Positive (hiring the wrong person).

Once you understand the rules of the game, you’ll realize that interviewing is a high-noise process. Basing your self-worth on such a noisy signal is often the primary source of emotional burnout during job hunts.

I also wrote in Imposter Syndrome that learning to decouple your self-worth from interview outcomes is essential for your mental health. If there’s one most important skill in interviewing, it’s probably managing your mindset.

The State of Tech Interviews

In When a Measure Becomes a Target: From the Window Tax to Pull Request Counts, I discussed Goodhart’s Law: When a measure becomes a target, it ceases to be a good measure.

Modern tech interviews are the quintessential victim of Goodhart’s Law.

Thirty years ago, Microsoft and Google introduced algorithms and brainteasers, originally hoping that non-standard questions could serve as an indicator of a candidate’s foundational computational thinking and real-time problem-solving abilities. However, once this proxy metric solidified into a universal hiring benchmark, the system was quickly broken.

David Heinemeier Hansson (DHH), the creator of Ruby on Rails, admitted in a 2017 tweet that he couldn’t write bubble sort on a whiteboard without looking it up, constantly looks up code online, and doesn’t do puzzles. Even the creators of widely used frameworks aren’t necessarily good at interview-style questions.

Being able to write an algorithm on a whiteboard under pressure simply does not equate to being able to build great software.

When memorizing obscure algorithms became the gatekeeper to high-paying jobs, it inevitably created three systemic distortions:

  1. A lucrative test-prep industry: Candidates spend thousands of dollars and hundreds of hours studying artificial rituals and problem-solving templates—memories that are essentially garbage-collected by the brain within a week of starting the job.
  2. High randomness and noise: Aline Lerner, founder of the anonymous interview platform Interviewing.io, pointed out after analyzing data from thousands of technical interviews that technical interview results carry an immense amount of variance. Even candidates who perform well on average can have wildly different outcomes from one session to the next.

An engineer who Googles things all day might ship reliable, stable architecture every week, while someone who can recite red-black trees from memory on a whiteboard might struggle for hours with a basic Git conflict once on the job.

What Interviewers Are Actually Looking For

Don’t view an interview as a one-way exam; it’s much more like an interactive technical conversation. Interviewers usually approach you with a few core questions in mind. For me, I typically have some predetermined rubrics that I gradually evaluate throughout the conversation, such as:

  • Foundational Competence: Are the basics solid? If they’re unfamiliar with certain details, can they quickly bridge the gap using practical problem-solving and logic? When candidates encounter questions they don’t know well, I even encourage them to demonstrate how they’d interact with an AI to figure it out.
  • Culture Fit: Companies usually have culture rubrics that outline their expectations and working standards. If the company has a page detailing this, I strongly recommend reading it before applying.
  • Collaboration and Proactive Alignment: Teams generally look for people who can collaborate, communicate proactively, and align on expectations. This depends on what the team needs at that moment, but teamwork is unavoidable in daily engineering.
  • Problem-Solving Ability: When faced with an ambiguous, open-ended problem, can they proactively clarify requirements and break the problem down into testable scopes?

Next comes designing the questions. A common prompt is usually along the lines of: “Tell me about the most memorable, challenging project you’ve worked on,” which branches into:

  • What was your role in that project? What were the requirements at the time? What performance bottlenecks did you hit? Why didn’t traditional approaches work?
  • Clear discussion of trade-offs: There are no silver bullets in engineering. Why choose A over B? What compromises did you make between performance, readability, and development velocity? Given the chance to do it over under the same constraints, what would you do differently?

This question is effective because if you were merely a bystander on the project, you won’t be able to answer the details. But if you were genuinely solving the problem, you’ll know the details inside and out. From the dialogue, interviewers can gauge your depth, your experience level, and whether you meet the bar the company needs.

How to Prove Yourself in an Interview

In an interview, you should think of yourself in a marketing role. This doesn’t mean exaggerating; your primary goal is simply to demonstrate that you are competent for the job. Validating that competence is the company’s responsibility; your goal is to showcase your abilities and assess whether this company is the right fit for you.

When an interviewer gives you a hint, don’t take it as criticism. Most interviewers aren’t out to trip you up—they’re just tired workers hoping to find a pleasant colleague to work with. How they give hints is also a great way to observe whether the company is a good fit for you.

Here are some strategies you can use:

Gather Information Early

In early chats with recruiters or hiring managers, you can ask directly: “What qualities do people who succeed in this role usually have?” Once you have these clues, you can tailor your strengths more deliberately in subsequent rounds. For example, if the company is leaning heavily toward infra talent, you can emphasize infra improvements and hands-on operational experience on your resume and in your answers.

Anchor on Project Experience

Start with the most intuitive, straightforward approach to get basic functionality running, then optimize for complexity as follow-up questions arise.

When discussing project experience, lead with high-level context and challenges before diving into technical details: What were the requirements? What performance bottlenecks did you hit? Why didn’t standard approaches work?

Proactively Align Expectations

Many communication issues are simply gaps in information and shared context.

Proactively clarify details with the interviewer: “How deep into the architecture would you like to go?” “What kind of data scale are we talking about?” This helps you stay on track and avoids needless guesswork.

Discuss Trade-offs

There are no silver bullets in engineering. Why choose Option A over Option B? What compromises did you make between performance, readability, and shipping speed? If you were put back into that exact context today, what would you do differently?

Be Honest About What You Don’t Know

If you don’t know something, admit it honestly. Never bluff. Senior engineers can spot a bluff instantly. Acknowledging that you’re unfamiliar with a tool, followed by explaining how you would research and deduce the answer, actually demonstrates humility and genuine problem-solving confidence.

Find Opportunities to Show Off

Interviewers won’t always ask about your strongest domain. If a question touches on your experience, you can follow up with: “This is very similar to a problem I handled before—would you like me to elaborate on that?” This gives them a chance to dig deeper and confirms whether it’s an area they care to explore.

Alternatively, mention how you identified performance bottlenecks, reduced infrastructure costs, or made an error-prone deployment pipeline rock-solid. Don’t just list the technologies you used; explain clearly what you found, what you did, and how you verified that the problem actually improved.

If you have metrics, provide the before-and-after differences along with measurement conditions. If not, describe the concrete changes. For team achievements, make sure the interviewer knows which decisions and tasks were specifically your responsibility.

Interviews Are a Two-Way Street

As I realized back in my 2017 Frontend Interview Reflections, an interview is never a one-way evaluation. An interviewer’s demeanor, their respect for your time, and the depth of their questions directly reflect the daily reality of the team. You are choosing the people you’ll be spending eight hours a day with.

I recommend asking a few questions toward the end of the interview as a “Smell Test”:

  • Promotion Criteria: “What did the most recently promoted team member accomplish to earn that promotion?”
  • Tolerance Floor: “When a team member hasn’t worked out or was let go, what was typically the underlying issue?”
  • Handling Disagreements: “When there are major disagreements over technical choices or architecture, how does the team resolve them? Do people truly disagree and commit?”
  • Day-to-day Development: “What steps does code go through from being written to reaching production? Are there automated tests and CI/CD pipelines in place?”
  • Company Culture: “Has there been an instance recently where upper management bypassed the process to directly intervene in product development?”

If their answers are evasive, defensive, or if the interviewer spends the entire time condescendingly trying to poke holes in you, then even if you get an offer, you should seriously think twice about whether this is an environment you want to be in.

Interviewing in Japan

Building on these principles, I’d like to touch on interviewing in Japan. In a workplace environment that emphasizes strict etiquette and seniority-based progression, you may need to “perform” to pass interviews.

A company’s interview process reflects its culture. If a company prioritizes rigid etiquette, flawless honorifics (keigo), and willingness to work long overtime hours, expect that exact workplace culture once you join. Everyone has different preferences, but these types of companies tend to exhibit specific issues:

  • Inability to articulate standards: Managers may push you with phrases like “You should just know how to do this!” or “とりあえず根性だろう (It’s all about willpower anyway!).”
  • Prioritizing self-preservation: If your performance is perceived as a threat to a manager’s or peer’s status or authority, they may choose resistance over collaboration.
  • Heavy focus on performative rituals: This can manifest as mandatory morning assemblies, pep rallies, or shouting ohayou gozaimasu every time you step into the office.

When choosing a job, I prefer joining companies centered on engineering and problem-solving, so I typically steer clear of these environments. I highly recommend listing out your non-negotiables and ideal work conditions before interviewing to help filter opportunities.

You can also check out my 2019 reflections on job hunting as a software engineer in Japan.

Finally, best of luck with your interviews! Interviewing is definitely stressful, but it remains a skill where preparation can genuinely boost your odds. Don’t let an artificially designed ritual define your worth. Feel free to email me to share the challenges you’ve run into during your interviews!

Related Posts

Explore Other Topics