Amazon Interview Question
Software Development ManagersCountry: Canada
This questions has several ambiguous pieces that should be clarified.I will move with several assumptions and can be tweaked as and when we go along.
scale of the system requirements:
- # of events hosted per month
- average # of users accessing these events per month
- peak and average user at any single time
- is this event booking system .. designed as a standalone system, or needs to be sold as a service to several vendors (for eg. Amazon, or TicketMaster, or can be reused for schools or universities).
Based on the above inputs.. several assumptions can be made as we move along. Then comes breaking down the overall system into individually designable pieces : (1) user profile storage servers and database , includes credit cards, payment info, emails and ticker generation and retrieval list, how to store tickets per users for later retrievals (2) Even t profile storage and access .. current event's total tickets, venue details , (3) Reusability of venues .. and information like seating info ,tickets..
Users -- should cover profiles, cc info, phone, text emails, preferences, user data mined (preferences of most liked events, most preferred venues,) ; social profiles like friends and family connections ... how an this be explored to get users notify if friends and families are going or if preferred events are taking place
Venues -- location, seating chart and arrangement, calendar of venue+event map with each map being accessible per event for tickets to sale
Events -- TypeX at a Venue Y on Date Z.This tuple is used to locate a specific event , and users interact with these events. Ticket prices for various events, tickets available to sale for this event.
So a event booking system ,ca
- Harsh Bhardwaj March 27, 2017First we need a the list of recently posted new events ....for this we can use treemap of events saved with the posted time ...as the treemap is sorted, the recently posted events always appears first , We can use stack too.
Secondly for storing booked events by the users , we can Queue , because the event with the closest date should appear first .
To make system more friendly for the users we can classify the events on the basis of their categories/Themes/nearby locations.
We can use preference based recommendation in system too, so the users get more events of the same category or if someone missed any event then system will recommends any similar event in future to the user.