← Stripe Interview Insights

Stripe·Software Engineer·Technical Phone Screen·Intermediate

IntermediatePrefer not to say
Apr 2026

Summary

Stripe coding screen for a software engineer role, built around a contact filtering problem that kept getting harder as the interview went on. Multi-part structure meant you couldn't just solve the easy version and coast.

Questions Asked (1)

Q1

Given a list of contacts with fields like name, email, and phone, filter down to only those whose information matches a given target domain. The problem starts simple but adds layers: fuzzy domain matching, subdomain handling, alias resolution, and eventually writing unit tests for edge cases.

Algorithms & Data StructuresTechnical Trade-offsAPI & Integrations
Author's notes

The first part felt easy enough, just check if the email host equals the domain string.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements and defining the matching rules (exact, fuzzy, subdomain, alias). Then propose a modular solution that separates parsing, matching, and filtering, and discuss trade-offs like performance vs. accuracy. Finally, outline unit tests covering edge cases such as case sensitivity, subdomains, aliases, and invalid inputs.

Pro tip: Demonstrate production awareness by discussing how to handle large datasets efficiently (e.g., indexing domains) and how to make the matching logic configurable and testable, which is crucial for Stripe's scale and reliability.

1. Clarify Requirements and Edge Cases

Ask questions to understand what 'matches' means: exact domain, subdomains, aliases (e.g., gmail.com vs googlemail.com), fuzzy matching (typos), and case sensitivity. Identify edge cases like missing fields, multiple emails, or international domains.

2. Design a Modular Solution

Break the problem into components: a parser to extract domains from contact fields, a matcher that applies rules (exact, subdomain, alias, fuzzy), and a filter that applies the matcher to the list. This separation allows easy extension and testing.

3. Discuss Trade-offs and Optimizations

Consider performance implications for large contact lists: precompute domain sets, use tries or hash maps for alias resolution, and decide on fuzzy matching thresholds. Balance accuracy with speed and complexity.

4. Outline Unit Tests

Propose test cases for each matching rule: exact match, subdomain (e.g., user@mail.example.com matches example.com), alias (e.g., user@gmail.com matches googlemail.com), fuzzy (e.g., example.co matches example.com), and edge cases like null values, empty strings, and multiple domains.

5. Summarize and Iterate

Recap the approach, emphasizing clarity, extensibility, and testability. Be open to feedback and suggest iterative improvements based on interviewer hints.

Key Points to Mention

  • Domain extraction from email addresses (e.g., splitting on '@') and handling of phone numbers (if applicable).
  • Subdomain handling: whether to match subdomains (e.g., mail.example.com matches example.com) and how to implement it (e.g., suffix matching).
  • Alias resolution: mapping known aliases (e.g., gmail.com and googlemail.com) to a canonical domain, possibly using a lookup table.
  • Fuzzy matching: techniques like Levenshtein distance or phonetic algorithms, and setting a similarity threshold.
  • Performance considerations: indexing domains, using sets for O(1) lookups, and avoiding O(n*m) comparisons.
  • Unit testing strategies: parameterized tests, mocking, and covering edge cases like case insensitivity, whitespace, and invalid inputs.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.