Visa·Software Engineer·Onsite - System Design / Architecture
- Design an online A/B testing assignment service where the API takes a user ID and feature name and returns which variant the user is assigned to.
- How would you handle sticky and deterministic assignment so the same user always gets the same variant across sessions?
- How would you store experiment configuration, and how does the service know which experiments are active and what their traffic allocations are?
- How would you implement eligibility targeting so only certain users qualify for a given experiment?
- Walk me through how you'd handle experiment overrides, things like QA accounts always seeing a specific variant, or a killswitch to disable a feature entirely.
- How would you design the exposure logging system, and how do you ensure idempotency so the same exposure isn't counted multiple times?
- What are the latency and availability requirements for this service, and how would you design fallbacks if the service is degraded?
- How would you handle privacy and compliance requirements like GDPR or CCPA in the context of this experimentation system?
- Describe the full lifecycle of an experiment from creation through analysis, including how you'd support pausing or stopping mid-flight.
“This is one of those questions that looks like a single system but is actually like eight systems duct-taped together.”