Following the 4PSA Cool Summer Internships in Bucharest article, we publish today the first problem. We will have three problems and my feelings are that if you submit at least one correct solution, you will join our team. Of course, feel free to send solutions for all three problems we are going to publish.
We shall start with an architectural problem that targets mainly programmers, but it can also be solved by candidates applying for SQA or Security and Performance profiling positions. You have more than 48 hours to solve it!
You are working on an online photo catalog. The photo catalog is going to have several hundred billion objects. You know that:
- Each photo has a description, and search tags (only single word tags supported).
- Each photo can be liked/disliked by the community
- On each photo users can comment
- On each photo it is possible to tag objects inside the photo
- You plan to extend the catalog with new functionality
What you have to do:
You must suggest an implementable architecture for this application. It must include data storage and object oriented design. It should not include the actual implementation of the classes. Everything must be properly abstracted and encapsulated.
- Make sure that the photo lookup is O(1)
- Make sure that the OO design follows the OO principles
- Make sure that photos can be searched by tags
- Address the Meta information storage for photos and related objects (do not even dream to keep the photos in a SQL database). Even if you do not identify a database able to store this, suggest the data structures that must be implemented by the database.
- Address the binary data storage (do not store them in your local file system).
You will have to write everything in a document and send it to us. The document must be uploaded online here, before 7 May 2011, 24:00 EEST.
There are many solutions to this problem, try to be original and creative!