← stubhub Interview Insights

stubhub·Software Engineer·Technical Phone Screen·Senior

Senior
Jul 2026

Summary

StubHub software engineering interview, one round focused entirely on object-oriented design. They gave me a pretty meaty system design prompt about building an email recommendation engine for a ticketing platform and wanted to see how I'd structure it cleanly while keeping it extensible.

Questions Asked (1)

Q1

Design an email marketing recommendation engine for a ticketing marketplace. It should match users to relevant events using pluggable recommendation strategies, starting with city-based and price-based rules, with a PriceService abstraction for pricing data. Walk through your data models, interfaces, and how you'd keep it extensible.

System DesignData ModelingTechnical Trade-offs
Author's notes

The part I fumbled a bit was the PriceService wrinkle.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then define core data models (User, Event, Recommendation) and a RecommendationStrategy interface with pluggable implementations (CityBased, PriceBased). Explain how a RecommendationEngine orchestrates strategies, uses PriceService for pricing, and how to keep the system extensible via dependency injection and configuration.

Pro tip: Emphasize that strategies should be independently testable and that the engine should support fallback and ranking to handle cases where no single strategy yields results. Also mention monitoring strategy performance to inform future improvements.

1. Clarify Requirements and Scope

Ask about scale (users, events), latency, personalization depth, and integration points. Confirm that the initial focus is on city and price rules with a pluggable architecture.

2. Define Data Models

Outline core entities: User (id, city, price sensitivity), Event (id, city, price, date, category), and Recommendation (user, event, score, strategy). Consider relationships and indexes for efficient querying.

3. Design Interfaces and Abstractions

Define RecommendationStrategy interface with a method like recommend(user, events) returning scored events. Define PriceService interface with methods like getPrice(eventId) and getPriceRange(eventId). Show how CityBasedStrategy and PriceBasedStrategy implement RecommendationStrategy.

4. Orchestrate with RecommendationEngine

Describe how the engine accepts a list of strategies, executes them (possibly in parallel), aggregates and ranks results, and applies fallbacks. Explain how PriceService is injected into strategies that need it.

5. Ensure Extensibility and Scalability

Discuss adding new strategies without modifying existing code (Open/Closed Principle), using configuration to enable/disable strategies, and scaling via caching, async processing, and monitoring.

Key Points to Mention

  • Strategy pattern for pluggable recommendation logic
  • Dependency injection for PriceService and strategies
  • Data models with appropriate fields and indexes
  • Aggregation and ranking of results from multiple strategies
  • Fallback mechanisms and handling empty results
  • Extensibility via interfaces, configuration, and avoiding hard-coded dependencies

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