Plaid·Software Engineer·Onsite - System Design / Architecture
Jul 2026
System design round at Plaid for a software engineering role, focused entirely on building an in-memory coupon service from scratch. Pretty intense for a single question but they kept piling on follow-ups until the time ran out.
- Design an in-memory coupon service with addCoupon, redeem, and getRemaining operations. Walk through your data structure choices, explain how you'd achieve O(1) average-case performance, and analyze time and space complexity.
- How would you handle edge cases like expired coupons, duplicate coupon codes, zero or negative discount values, and exceeding per-user or global redemption limits?
- How would you make the redeem operation idempotent so retrying a failed request doesn't double-apply a coupon?
- What edge cases around time would you worry about near a coupon's expiration, such as clock skew or daylight saving transitions?
- How would you extend the service to support category-based restrictions on coupons, minimum spend thresholds, and bulk coupon input parsing?
“I went straight to hash maps and felt pretty good about it.”