Karat·Software Engineer·Technical Phone Screen
May 2026
Karat screen for a software engineer role, all TypeScript, all about a little obstacle course race tracker. Three connected problems that built on each other, which I actually appreciated once I stopped panicking about the simulation part.
- You have a RunCollection class with a broken personalBest() method. Fix it so it only considers complete runs when computing the minimum total time.
- Implement bestOfBests(): for each obstacle position, find the minimum time recorded across all runs (including incomplete ones), then return the sum of those per-obstacle minimums.
- Implement chanceOfPersonalBest(inProgressRun) using Monte Carlo simulation with 10,000 trials. For each remaining obstacle, sample uniformly from historical times at that position, simulate a finish, and return the fraction of trials that beat or match the personal best.
“The bug was subtle enough that I almost missed it.” The rest of the author's notes on Software Engineer interview at Karat, Technical Phone Screen round, covers how they worked through the question, what the panel pushed back on, and what they would do differently.
View Post