Amazon Interview Question
Software DevelopersCountry: India
Interview Type: In-Person
It is a very open ended and a generic question which can be answered in multiple dimensions
1. Based on various personas who use the play store. a. End users from mobile apps. b. Google apps operations team c. Google apps quality/validation team to ensure apps adhere to certain rules and have defined quality c. Google analytics team members d. Application developers e. Google security and system administrators
System design with multiple components, 1 APIs to upload and download applications 2.
Backend services to store data and corresponding metadata, files etc... 3 Systems to monitor application metrics and service availability 4. Caches to serve customers from various geographies 5. Application servers 6. Load balancers 7. Replicated read servers as there will be more read than writes 8. UI that works across multiple device formats, operating systems 9. Administration and Management tools to work with the backend systems 10. Backend services which certify applications for functionality, security(viruses etc...) You can expand functionality for localization , globalization etc... application compatibility ;;; I did not even mention about payment module.
Design Problem
1. Design App store
Requirement
- App files can be uploaded
- App category is selected by the uploader
- Uploader should have a profile
- App should provide the details what all resources are needed
- App should provide keyword to search
- App uploader should provide cost of the app
- App will have following attributes
Category
Name
Cost
Number of downloads
Likes
Comments
- The above information will be part of the search system, and will be used when the search is performed.
- When the user selects an app, it will be downloaded. In the App database following information should be added
App name
User age
Location
These information has to be used for analytics and should be stored in OLAP data repository
- When the App is downloaded then some money is transfered this transactional data has to be stored in OLTP RDMS system
Data Storage
1. For application search, document search system like elasticsearch is good fit. For each of the App, a JSON document is created. In the mapping file of Elasticsearch a weightage is assigned to attributes for search ranking. A user who is looking for an app in the store will will be served by search system.
2. App binaries: BLOB in RDBMS system
3. Purchase Data: This is transactional data and should be stored in the OLTP system like MySQL.
4. App consumer’s data: This is data is used by App owners for analysis and business intelligence. This should be stored in Hive.
Services
1. Search service: Restendpoint for Elasticsearch services
2. Upload Service: Store the Binary in Blob and insert one document in Elasticsearch.
3. Payment service
4. Download Service
Design Problem
1. Design App store
Requirement
- App files can be uploaded
- App category is selected by the uploader
- Uploader should have a profile
- App should provide the details what all resources are needed
- App should provide keyword to search
- App uploader should provide cost of the app
- App will have following attributes
Category
Name
Cost
Number of downloads
Likes
Comments
- The above information will be part of the search system, and will be used when the search is performed.
- When the user selects an app, it will be downloaded. In the App database following information should be added
App name
User age
Location
These information has to be used for analytics and should be stored in OLAP data repository
- When the App is downloaded then some money is transfered this transactional data has to be stored in OLTP RDMS system
Data Storage
1. For application search, document search system like elasticsearch is good fit. For each of the App, a JSON document is created. In the mapping file of Elasticsearch a weightage is assigned to attributes for search ranking. A user who is looking for an app in the store will will be served by search system.
2. App binaries: BLOB in RDBMS system
3. Purchase Data: This is transactional data and should be stored in the OLTP system like MySQL.
4. App consumer’s data: This is data is used by App owners for analysis and business intelligence. This should be stored in Hive.
Services
1. Search service: Restendpoint for Elasticsearch services
2. Upload Service: Store the Binary in Blob and insert one document in Elasticsearch.
3. Payment service
4. Download Service
It is a very open ended and a generic question which can be answered in multiple dimensions
- Andrew November 29, 20171. Based on various personas who use the play store. a. End users from mobile apps. b. Google apps operations team c. Google apps quality/validation team to ensure apps adhere to certain rules and have defined quality c. Google analytics team members d. Application developers e. Google security and system administrators
System design with multiple components, 1 APIs to upload and download applications 2.
Backend services to store data and corresponding metadata, files etc... 3 Systems to monitor application metrics and service availability 4. Caches to serve customers from various geographies 5. Application servers 6. Load balancers 7. Replicated read servers as there will be more read than writes 8. UI that works across multiple device formats, operating systems 9. Administration and Management tools to work with the backend systems 10. Backend services which certify applications for functionality, security(viruses etc...) You can expand functionality for localization , globalization etc... application compatibility ;;; I did not even mention about payment module.
Another approach is to draw database schema for the Backend database and APIs that will access this data.