Decagon Software Engineer Interview Experience — CSAT Tracker Question on the Phone Screen

Decagon·Software Engineer·Apr 2026
Technical Screeneasy

I interviewed for 45 minutes and got one question. I'd solved it before, but I still wrote two bugs. Luckily I caught and fixed both while testing, and it passed in the end. Thanks to the interviewer for going easy on me.

The question was the one that comes up most often for the phone screen: design a customer satisfaction (CSAT) tracking class. Scores are fixed in the range 1 to 5.

  • __init__(self, window_size: int): initialize the size of the time window.
  • record(self, conversation_id: str, score: int, timestamp: int): record a conversation's unique ID, its score, and a strictly increasing timestamp.
  • get_average(self, current_time: int): return the average of all scores within the current active window, rounded to two decimal places (round(x, 2)).

Follow-up 1: support updates.

  • update(self, conversation_id: str, score: int): if the conversation is still inside the active window, update its score; if it has already expired, this is a no-op. Note: updating does not change the original timestamp or ordering.

Follow-up 2: compute a percentile.

  • Given p: int, find the score of the conversation at that percentile (e.g. p50 / median).

Published

Curated and edited by PracHub

Practice the questions from this interview

Discussion

Sign in to join the discussion. The author is notified of every comment.

Loading comments…

Interview at a glance

Company
Decagon
Role
Software Engineer
Rounds
Technical Screen
Difficulty
easy
Interview date
Apr 2026
Questions from this interview
1 question

Real Decagon interview experiences

First-hand reports from Decagon candidates — the rounds, the questions they were asked, and how it went.

All 6 Decagon interview experiences