← Plaid Interview Insights

Plaid·Software Engineer·Technical Phone Screen·Intermediate

Intermediate
Jun 2026

Summary

Plaid SWE interview with a meaty data engineering problem involving routing number deduplication and conflict resolution across multiple JSON sources. The problem had a lot of moving parts and felt more like a mini system design than a pure coding question.

Questions Asked (1)

Q1

You're given bank routing data from multiple JSON sources. Each source has records mapping routing numbers to bank names, but the same bank can appear under different aliases, the same routing number can appear multiple times within a source, and different sources can disagree on which bank a routing number belongs to. Write a function that normalizes bank names using an alias map, produces a final routing-to-canonical-bank mapping, resolves conflicts using majority vote across sources with a tiebreaker based on source priority, and outputs a conflict report listing which routing numbers had disagreements and how the vote went.

Algorithms & Data StructuresData ModelingTechnical Trade-offs
Author's notes

This one took me a few minutes to even parse what was being asked.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and edge cases, then outline a pipeline: normalize names via alias map, aggregate votes per routing number across sources, resolve conflicts using majority vote with source priority tiebreaker, and generate a conflict report. Emphasize data structures (hash maps, priority queues) and discuss trade-offs like handling ties, scalability, and data quality.

Pro tip: Proactively discuss how you would handle ties that persist after majority vote and source priority, such as falling back to the most recent source or flagging for manual review, showing you think about real-world data ambiguity.

1. Clarify Requirements and Edge Cases

Ask about alias map format, source priority definition, tiebreaker rules, and expected output format. Confirm handling of missing data, case sensitivity, and performance constraints.

2. Design Data Structures and Aggregation

Use a hash map to apply aliases and normalize names. Aggregate votes per routing number across sources, storing counts per canonical bank and tracking source priority for tiebreaking.

3. Resolve Conflicts with Majority Vote and Tiebreaker

For each routing number, select the bank with the most votes. If tied, use source priority (e.g., higher priority source wins) or a predefined tiebreaker like lexicographic order.

4. Generate Conflict Report

For routing numbers with multiple distinct banks, record the vote distribution and the final decision. Include details like which sources voted for which bank.

5. Discuss Trade-offs and Scalability

Talk about time/space complexity, handling large datasets (streaming vs. in-memory), and potential improvements like caching or parallel processing.

Key Points to Mention

  • Normalization: applying alias map consistently, handling case and whitespace
  • Aggregation: using hash maps to count votes per routing number per bank
  • Conflict resolution: majority vote with source priority as tiebreaker
  • Conflict report: structure and contents (routing number, votes, final decision)
  • Edge cases: ties after tiebreaker, missing data, inconsistent aliases
  • Scalability: time/space complexity, potential for distributed processing

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