Plaid Coding Interview Questions
100 Plaid coding interview problems with full optimal solutions — 31 easy, 50 medium, 19 hard. Every problem ships with multiple approaches (brute-force first, then the optimal), complexity tables for each, company-specific tips on what an Plaid interviewer values, and a FAQ section.
Showing 50 problems of 100
- #31mediumfrequently asked
31. Add Two Numbers
Add two numbers represented as reverse-order linked lists. Plaid asks this because adding two arbitrary-precision balances digit-by-digit with carry is exactly how their ledger code handles cents that overflow JS Number precision.
- #32mediumfrequently asked
32. Longest Substring Without Repeating Characters
Find the length of the longest substring with no repeated characters. Plaid asks this as a sliding-window baseline before harder webhook-deduplication-window problems.
- #33mediumsometimes asked
33. Longest Palindromic Substring
Find the longest palindromic substring. Plaid asks this as a 'expand around center' fluency check before harder string-canonicalization problems on merchant names.
- #34mediumsometimes asked
34. Container With Most Water
Find two lines that, together with the x-axis, form the container with the most water. Plaid asks this as a two-pointer optimization classic before harder window problems on balance-history charts.
- #35mediumfrequently asked
35. 3Sum
Find all unique triplets that sum to zero. Plaid asks this because three-way reconciliation across a debit, a credit, and a fee is exactly this primitive — find three rows that net to zero.
- #36mediumrarely asked
36. Letter Combinations of a Phone Number
Generate all letter combinations that a phone-number string could represent. Plaid asks this as a backtracking warm-up before harder combinatorial problems on transaction-tag suggestions.
- #37mediumsometimes asked
37. Remove Nth Node From End of List
Remove the nth node from the end of a linked list in one pass. Plaid asks this as a two-pointer baseline before harder windowed-removal problems on transaction-history lists.
- #38mediumsometimes asked
38. Generate Parentheses
Generate all combinations of n well-formed parentheses. Plaid asks this as a backtracking pattern problem before harder nested-JSON validation work on webhook payloads.
- #39mediumsometimes asked
39. Swap Nodes in Pairs
Swap every two adjacent nodes in a linked list. Plaid asks this to verify pointer-juggling fluency before harder list-restructuring problems on chronological transaction sequences.
- #40mediumrarely asked
40. Next Permutation
Rearrange numbers into the lexicographically next greater permutation. Plaid asks this because deterministic enumeration of equivalent reorderings is the same primitive they use when retrying batch ETL jobs in a fixed cycle.
- #41mediumfrequently asked
41. Search in Rotated Sorted Array
Search for a target in a sorted array that has been rotated. Plaid asks this because querying a circular buffer of transaction timestamps that wraps around a clock pivot is the same primitive.
- #42mediumsometimes asked
42. Find First and Last Position of Element in Sorted Array
Find the first and last occurrence of a target in a sorted array. Plaid asks this because finding the time-range of all transactions for a given merchant in a sorted ledger is the same primitive.
- #43mediumsometimes asked
43. Valid Sudoku
Determine if a 9x9 Sudoku board is valid (without solving it). Plaid asks this as a constraint-validation primitive — the same shape as their multi-constraint webhook payload validator.
- #44mediumsometimes asked
44. Combination Sum
Find all unique combinations of candidates that sum to a target, where the same number may be chosen unlimited times. Plaid asks this because finding all ways to assemble a target balance from a fixed denomination set is the same primitive.
- #45mediumsometimes asked
45. Permutations
Return all possible permutations of distinct integers. Plaid asks this as a backtracking warm-up before harder ordering problems on transaction-processing schedules.
- #46mediumsometimes asked
46. Rotate Image
Rotate an NxN matrix 90 degrees clockwise in place. Plaid asks this because in-place 2D transforms are the same shape as their column-major to row-major balance-history transposition for charts.
- #47mediumfrequently asked
47. Group Anagrams
Group anagrams together from an array of strings. Plaid asks this because grouping merchant names that share the same character profile (after normalization) is a daily reality on their merchant-deduplication pipeline.
- #48mediumfrequently asked
48. Maximum Subarray
Find the contiguous subarray with the largest sum. Plaid asks this because finding the highest-net-deposit window in a transaction series uses exactly this primitive — Kadane's algorithm.
- #49mediumsometimes asked
49. Jump Game
Determine if you can reach the last index of an array where each value is your max jump length. Plaid asks this as a greedy-baseline problem before harder reachability questions on retry-graph traversal.
- #50mediumfrequently asked
50. Merge Intervals
Merge overlapping intervals. Plaid asks this because consolidating overlapping batch-windows (when ETL retries cover overlapping time ranges) is exactly this primitive.
- #51mediumsometimes asked
51. Unique Paths
Count the number of unique paths from top-left to bottom-right of an m x n grid, moving only right or down. Plaid asks this as a DP warm-up before harder grid-DP problems on transaction-state machines.
- #52mediumsometimes asked
52. Minimum Path Sum
Find the path from top-left to bottom-right with the smallest sum. Plaid asks this as a grid DP variation, mapping cleanly to lowest-cost routing in their multi-hop payment-rail graph.
- #53mediumsometimes asked
53. Simplify Path
Simplify a Unix-style absolute file path. Plaid asks this as a stack warm-up before harder hierarchical-category-tree normalization problems.
- #54mediumfrequently asked
54. Edit Distance
Find the minimum operations to convert one string into another (insert, delete, replace). Plaid asks this because fuzzy merchant matching uses edit distance to collapse variants like 'STARBUCKS #234' and 'Starbucks #234A' into one canonical merchant.
- #55mediumsometimes asked
55. Set Matrix Zeroes
If an element in an MxN matrix is 0, zero out its entire row and column in-place. Plaid asks this because invalidating a row+column band of a cached pivot table when one cell flips is exactly this primitive.
- #56mediumsometimes asked
56. Search a 2D Matrix
Search for a target in a row-sorted matrix where each row's first element is greater than the previous row's last. Plaid asks this as a binary-search-on-flattened-grid problem before harder bank-feed lookup questions.
- #57mediumsometimes asked
57. Sort Colors
Sort an array of 0s, 1s, and 2s in place in one pass. Plaid asks this because partitioning a transaction stream into 'pending', 'cleared', 'failed' buckets uses exactly this Dutch National Flag primitive.
- #59mediumsometimes asked
59. Subsets
Return all possible subsets (the power set) of a distinct-integer array. Plaid asks this as a combinatorial-generation warm-up before harder subset-sum reconciliation problems.
- #60mediumsometimes asked
60. Word Search
Determine if a word exists in a 2D grid by traversing adjacent cells. Plaid asks this as a DFS-on-grid baseline before harder graph-traversal problems on account-link graphs.
- #61mediumrarely asked
61. Remove Duplicates from Sorted Array II
Remove duplicates in-place such that each element appears at most twice. Plaid asks this as a two-pointer variant — exactly the shape they use to enforce 'at most 2 retries per transaction in the same minute' logs.
- #62mediumrarely asked
62. Search in Rotated Sorted Array II
Search a rotated sorted array that may contain duplicates. Plaid asks this as a binary-search-with-ambiguity problem — exactly the shape they face when a circular log has duplicate-event timestamps.
- #63mediumrarely asked
63. Remove Duplicates from Sorted List II
Delete all nodes in a sorted linked list that have duplicate values, keeping only unique values. Plaid asks this because removing transactions that have any duplicate occurrences (not keeping one) is a stricter dedup needed for audit logs.
- #64mediumrarely asked
64. Partition List
Partition a linked list around a value x. Plaid asks this because partitioning a transaction stream into 'below threshold' and 'above threshold' is the same primitive.
- #65mediumsometimes asked
65. Decode Ways
Count the number of ways to decode a digit string where 'A'=1 ... 'Z'=26. Plaid asks this as a DP warm-up before harder parser-state problems on variable-length transaction-code formats.
- #66mediumsometimes asked
66. Reverse Linked List II
Reverse a sublist of a linked list between positions left and right. Plaid asks this as a pointer-juggling problem — exactly the shape they use when restoring a corrupted segment of a transaction-history list from a backup.
- #67mediumrarely asked
67. Restore IP Addresses
Generate all valid IP addresses from a digit string. Plaid asks this as a backtracking warm-up — the same shape they use when parsing variable-length transaction codes split across delimiters.
- #68mediumrarely asked
68. Unique Binary Search Trees II
Generate all structurally unique BSTs with n nodes. Plaid asks this as a recursion + memoization warm-up before harder tree-construction problems on category-tree variants.
- #69mediumfrequently asked
69. Validate Binary Search Tree
Determine if a binary tree is a valid BST. Plaid asks this because validating that a freshly-built merchant-category tree obeys its strict-ordering invariant is the same primitive — bugs in the invariant cause cascading mis-classification later.
- #70mediumfrequently asked
70. Binary Tree Level Order Traversal
Return the level-order traversal of a binary tree's values. Plaid asks this as a BFS baseline before harder graph-walks on payment-rail dependency trees.
- #71mediumsometimes asked
71. Binary Tree Zigzag Level Order Traversal
Return the zigzag level order traversal of a tree. Plaid asks this as a BFS variant — exactly the shape they use when alternating left-to-right vs right-to-left iteration over partitioned ledger shards.
- #72mediumsometimes asked
72. Construct Binary Tree from Preorder and Inorder Traversal
Reconstruct a binary tree from its preorder and inorder traversals. Plaid asks this because deserializing a tree from two stream snapshots (preorder = parent-first, inorder = sorted) is the same reconstruction primitive.
- #74mediumfrequently asked
74. LRU Cache
Design an LRU cache with O(1) get and put. Plaid asks this because their idempotency-key store and recent-transactions cache both need O(1) bounded-memory LRU semantics.
- #75mediumfrequently asked
75. Word Break
Determine if a string can be segmented into a sequence of dictionary words. Plaid asks this because tokenizing a merchant string into known sub-tokens (e.g., 'AMZNMKTPLACE' -> 'AMZN' + 'MKT' + 'PLACE') is the same primitive.
- #76mediumsometimes asked
76. Copy List with Random Pointer
Deep copy a linked list where each node has a random pointer to any other node. Plaid asks this because cloning an entity graph with cross-references (transactions pointing to merchants pointing to categories) uses the same pattern.
- #77mediumfrequently asked
77. Clone Graph
Deep copy a connected undirected graph. Plaid asks this because their account-link graph (user -> bank -> account -> transaction) is exactly this kind of cyclic reference structure that must be cloneable for snapshot tests.
- #78mediumsometimes asked
78. Sort List
Sort a linked list in O(n log n) time. Plaid asks this because sorting a stream of transactions that arrived as a linked list (from a bank-feed batch) before merging into the master ledger is exactly this primitive.
- #79mediumsometimes asked
79. Find Minimum in Rotated Sorted Array
Find the minimum element in a rotated sorted array. Plaid asks this because finding the rotation pivot (e.g., the day a circular billing window restarts) is the same primitive.
- #80mediumrarely asked
80. Find Peak Element
Find a peak element in an array (one whose value is strictly greater than its neighbors). Plaid asks this as a binary-search-on-properties problem — exactly the shape they use to find traffic peaks in a time-bucketed transaction-rate series.
- #92mediumsometimes asked
92. Insert Interval
Insert a new interval into a sorted, non-overlapping list and merge if necessary. Plaid asks this because adding a new ETL-retry window to a sorted list of pre-existing windows is exactly this primitive.
- #98mediumsometimes asked
98. Recover Binary Search Tree
Two nodes in a BST have been swapped by mistake; recover the tree without changing structure. Plaid asks this because detecting and repairing two-row swap corruption in a sorted category tree (without rebuilding) is exactly this primitive.