Interview prep

Taking our interview? Here's what to expect.

What you need

A working webcam. Our interview is done via video call, and you'll need to be on video for most of the call. (We know this isn't ideal for anxious people, but it's a practical necessity.)

A dev environment with a command line or console I/O ready to go. In particular, if you're using JS, make sure you have Node set up and can take console I/O in it.

The ability to share your screen. During the coding section of our interview, we'll ask you to share it as you write your code.

Structure

The interview is a 90-minute video call with one of our engineers.

We don't expect you to know any specific languages or technologies, except for some JS-specific front-end questions.

You can use the tools you're most comfortable with for coding, including your usual language and IDE (within reason, you probably shouldn't do it in brainfuck).

Content

The interview is divided into three sections: live coding, conceptual questions, and system design. Scroll down a bit for more details on each.

You are not expected to fully complete the coding exercise, or to know every question we ask. Our interview is meant to be broad enough to capture different strengths - good coding plus two other good or one other excellent section is usually sufficient.

class MinesweeperBoard {

    board : MinesweeperTile[][] = []

    tileByCoordinates(rowIndex : number, colIndex : number) : MinesweeperTile | undefined {
        // off-by-one adjusted in user input, 0-indexed here
        if (rowIndex > this.board.length) {
            console.log("Row index out of bounds!")
            return undefined
        }
        let row = this.board[rowIndex]
        if (colIndex > row.length) {
            console.log("Column index out of bounds!")
            return undefined
        }
        return row[colIndex]
    }

    adjacentTiles(rowIndex : number, colIndex : number) : MinesweeperTile[] {
        // todo
        return []
    }

    numAdjacentMines(row : number, col : number) : number {
        let adjacentTiles = this.adjacentTiles(row, col)
        let numMines = 0
        for (let tile of adjacentTiles) {
            if (tile.hasMine) { numMines++ }
        }
        return numMines
    }
}

Section details

Live coding

30 minutes

Summary

We give you a spec for a simple game written in plain English, and ask you to implement it in the console. It doesn't require any specific algorithms or "gotchas". We want to see if you can problem-solve in code, not remember any specific algorithm.

You can use any language or tools you want (within reason), but not gen AI (so no copilot).

We score this section on number of steps completed and on your approach and code quality. All else equal, focus on speed.

Example question

See our our practice problem - it's very similar to the real thing.

Live coding

30 minutes

Summary

We give you a spec for a simple game written in plain English, and ask you to implement it in the console. It doesn't require any specific algorithms or "gotchas". We want to see if you can problem-solve in code, not remember any specific algorithm.

You can use any language or tools you want (within reason), but not gen AI (so no copilot).

We score this section on number of steps completed and on your approach and code quality. All else equal, focus on speed.

Example question

See our our practice problem - it's very similar to the real thing.

Live coding

30 minutes

Summary

We give you a spec for a simple game written in plain English, and ask you to implement it in the console. It doesn't require any specific algorithms or "gotchas". We want to see if you can problem-solve in code, not remember any specific algorithm.

You can use any language or tools you want (within reason), but not gen AI (so no copilot).

We score this section on number of steps completed and on your approach and code quality. All else equal, focus on speed.

Example question

See our our practice problem - it's very similar to the real thing.

Concepts - Algorithms

Concepts - Algorithms

Conc. - Algos

Concepts - Full-stack

Concepts - Full-stack

Conc. - Fullstack

Concepts - Low-level/security

Concepts - Low-level/security

Conc. - Lowlevel

System design

System design

System design

Scoring

Each section is scored on a mix of objective progress and subjective impressions. We normalize these scores between interviewers, so that you don't get an advantage or disadvantage based on luck of the draw.

We also don't tell interviewers about your background ahead of time. They score you based on what they see.

Feedback

We always give candid feedback, no matter the result. Regardless of whether you passed our interview, we'll offer any suggestions we can on how to prep for your next interview.

Scroll down for a detailed example.

Coding

Strong pass

Summary

He was blazing fast on this section. Faster than about 95% of candidates I’ve seen. Only real criticism is that the cost was a little un-Pythonic (e.g. used loops when a list comprehension would do), but this was overall fantastic.

Coding

Strong pass

Summary

He was blazing fast on this section. Faster than about 95% of candidates I’ve seen. Only real criticism is that the cost was a little un-Pythonic (e.g. used loops when a list comprehension would do), but this was overall fantastic.

Coding

Strong pass

Summary

He was blazing fast on this section. Faster than about 95% of candidates I’ve seen. Only real criticism is that the cost was a little un-Pythonic (e.g. used loops when a list comprehension would do), but this was overall fantastic.

Example scoring & feedback

Overall

Strong pass

Summary

He’s great! Not without some weaker points, but nothing disqualifying, and when he’s good he’s really good. Coding was great and almost enough to earn a pass by itself, and really good communication and web knowledge make this a strong pass. Really funny, too.

Only red flag here is I probably wouldn’t put him specifically in an architect position. He’d be fine at ordinary scale, but system design had some weakness at high scale that might trip him up.

Overall

Strong pass

Summary

He’s great! Not without some weaker points, but nothing disqualifying, and when he’s good he’s really good. Coding was great and almost enough to earn a pass by itself, and really good communication and web knowledge make this a strong pass. Really funny, too.

Only red flag here is I probably wouldn’t put him specifically in an architect position. He’d be fine at ordinary scale, but system design had some weakness at high scale that might trip him up.

Overall

Strong pass

Summary

He’s great! Not without some weaker points, but nothing disqualifying, and when he’s good he’s really good. Coding was great and almost enough to earn a pass by itself, and really good communication and web knowledge make this a strong pass. Really funny, too.

Only red flag here is I probably wouldn’t put him specifically in an architect position. He’d be fine at ordinary scale, but system design had some weakness at high scale that might trip him up.

Coding

Strong pass

Coding

Strong pass

Coding

Strong pass

Concepts - Algorithms

Low

Concepts - Algorithms

Low

Conc. - Algos

Low

Concepts - Full-stack

Pass

Concepts - Full-stack

Pass

Conc. - Fullstack

Pass

Concepts - Low-level/security

Borderline

Concepts - Low-level/security

Borderline

Conc. - Lowlevel

Borderline

System design

Pass

Summary

Great on the basics, weak scaling. Trade-offs were good, could explain why he went with MySQL vs Postgres and why he’d set up a structured API over GraphQL for this problem. Some of the scaling details were off, though; I would’ve really liked to hear him bring up caching given the constraints of the problem (where some queries are going to be way more common than others). He ended up talking about normalization for quite a while instead, which is pretty wrong (not that it can never improve performance but it’s likely to hurt it here).

System design

Pass

Summary

Great on the basics, weak scaling. Trade-offs were good, could explain why he went with MySQL vs Postgres and why he’d set up a structured API over GraphQL for this problem. I would’ve really liked to hear him bring up caching for the high-scale version given the constraints of the problem (where some queries are going to be way more common than others). He ended up talking about normalization for quite a while instead, which is pretty wrong (not that it can never improve performance but it’s likely to hurt it here).

System design

Pass

Summary

Great on the basics, weak scaling. Trade-offs were good, could explain why he went with MySQL vs Postgres and why he’d set up a structured API over GraphQL for this problem. Some of the scaling details were off, though; I would’ve really liked to hear him bring up caching given the constraints of the problem (where some queries are going to be way more common than others). He ended up talking about normalization for quite a while instead, which is pretty wrong (not that it can never improve performance but it’s likely to hurt it here).

Technical communication

Strong pass

Technical communication

Strong pass

Tech. Comm.

Strong pass

FAQ

?

Do companies see my scores?

Yes. When we make a recommendation for you, we give the company the same scores we gave you in your feedback. The notes we give them are slightly different than the ones we give you because they're meant for different purposes, but the content is similar.

?

Do companies see my scores?

Yes. When we make a recommendation for you, we give the company the same scores we gave you in your feedback. The notes we give them are slightly different than the ones we give you because they're meant for different purposes, but the content is similar.

?

Do companies see my scores?

Yes. When we make a recommendation for you, we give the company the same scores we gave you in your feedback. The notes we give them are slightly different than the ones we give you because they're meant for different purposes, but the content is similar.

?

Do you vary your interview content for each role?

?

Do you vary your interview content for each role?

?

Do you vary your interview content for each role?

?

Who does your interviews?

?

Who does your interviews?

?

Who does your interviews?

?

Can I try again if I don't pass?

?

Can I try again if I don't pass?

?

Can I try again if I don't pass?