We had very interesting surprises last week, therefore we want to encourage you to innovate!
Problem 1: Meet Me!
Design and implement an address book application for a mobile device with limited memory. The application should be able to display the values in alphabetical order. The mobile device has support for your favorite programming language.
What You Have to Do
- Send us a document describing the algorithms, specify the algorithm complexity, the data structures used for storing the contacts, and the design trade-offs.
- Construct a prototype.
- On mobile devices, you want to keep as much memory as possible available for data storage.
- The application should be fast enough because it is frequently used.
Problem 2: Distributed Log System
Assuming you have multiple nodes with multiple services spread in your network, you want a method of collecting logs from all those services.
What You Have to Do
You are requested to design a distributed log system that meets criteria:
- scalability (you can log from one node or from 10000 nodes, it should not matter)
- consistence (log data can uniquely be tied to a (hardware) node, a service, a moment in time, etc)
- availability (logging function is critical in your infrastructure)
- redundancy (no single point of failure)
- statistics and analysis friendly (the logging format should be easily processed by applications)
- granularity (depending on gravity the messages should be labeled/used differently)
- small footprint (on host and network level)
- data storage is taken into account (the storage should be as light, yet complex enough to respect the criteria above)
- Innovate, you should not be afraid of untypical solutions.
- Consider network, service and nodes failures.
- The communication protocol is important!
- Think to a language specific implementation (C, C++, PHP, JS, Python, Ruby, Java, C#) for the designed system.
If you can build a prototype, this is big plus! You may publish it on github, bitbucket or any other similar service.
We wish you a very, very productive weekend!