Top N Matches Among P Dating-App Users Given an O(1) Match Function

Read the full interview experience this question came from →

Quick Overview

A verbal algorithm question about a dating app with P users and a constant-time match score: find the N best matches for one user when N is much smaller than P. It tests choosing a data structure that avoids sorting everyone and analyzing the resulting time and space complexity.

Top N Matches Among P Dating-App Users Given an O(1) Match Function

Company: Duolingo

Role: Software Engineer

Category: Software Engineering Fundamentals

Difficulty: easy

Interview Round: Technical Screen

A dating app has $P$ users. A function `get_match(a, b)` returns a numeric match score for users `a` and `b` in $O(1)$ time; a higher score means a better match. For a given user, find the $N$ best matches among the other users, where $N$ is much smaller than $P$. Describe your approach and give its time and space complexity. This was a verbal question: explain the approach rather than writing full code. ```hint You never need the full ranking Only the best $N$ matter. Think about what you must remember about the candidates seen so far, and how cheaply you can decide whether a new candidate gets in. ``` ### Clarifying Questions - Should the result be ordered from best to worst match? - How should ties in score be broken? - What if there are fewer than $N$ other users? - Is this a one-off query for one user, or will it run for every user? ### What a Strong Answer Covers - A correct baseline (score everyone and sort) and why it does more work than needed when $N \ll P$ - A structure that keeps only the current best $N$ candidates and decides cheaply whether a new candidate belongs - Time complexity in terms of both $P$ and $N$, and space complexity - At least one alternative, such as selection, with its trade-offs - Edge cases: excluding the user themselves, ties, fewer than $N$ candidates ### Follow-up Questions - Match lists must be computed for every user every night. How does the total cost grow with $P$, and what would you change? - The user list is too large to fit in memory and arrives as a stream. Does your approach still work? - The users are split across several machines. How do you combine partial results into the global best $N$?

Overview: A verbal algorithm question about a dating app with P users and a constant-time match score: find the N best matches for one user when N is much smaller than P. It tests choosing a data structure that avoids sorting everyone and analyzing the resulting time and space complexity.

Read the full Duolingo Software Engineer interview experience this question came from

|Home/Software Engineering Fundamentals/Duolingo
Duolingo logo
Duolingo
Oct 4, 2026
easySoftware EngineerTechnical ScreenSoftware Engineering Fundamentals
2
0

A dating app has PP users. A function get_match(a, b) returns a numeric match score for users a and b in O(1)O(1) time; a higher score means a better match. For a given user, find the NN best matches among the other users, where NN is much smaller than PP.

Describe your approach and give its time and space complexity. This was a verbal question: explain the approach rather than writing full code.

Clarifying Questions Guidance

  • Should the result be ordered from best to worst match?
  • How should ties in score be broken?
  • What if there are fewer than NN other users?
  • Is this a one-off query for one user, or will it run for every user?

What a Strong Answer Covers Guidance

  • A correct baseline (score everyone and sort) and why it does more work than needed when N≪PN \ll P
  • A structure that keeps only the current best NN candidates and decides cheaply whether a new candidate belongs
  • Time complexity in terms of both PP and NN , and space complexity
  • At least one alternative, such as selection, with its trade-offs
  • Edge cases: excluding the user themselves, ties, fewer than NN candidates

Follow-up Questions Guidance

  • Match lists must be computed for every user every night. How does the total cost grow with PP , and what would you change?
  • The user list is too large to fit in memory and arrives as a stream. Does your approach still work?
  • The users are split across several machines. How do you combine partial results into the global best NN ?