In the given assignment we suggest you to process an automatically generated JSON file with recipe data and calculated some stats.
- Clone this repository.
- Create a new branch called
dev
. - Create a pull request from your
dev
branch to the master branch. - Reply to the thread you're having with our HR department telling them we can start reviewing your code
Json fixtures file with recipe data. Download Link
Important notes
- Property value
"delivery"
always has the following format: "{weekday} {h}AM - {h}PM", i.e. "Monday 9AM - 5PM" - The number of distinct postcodes is lower than
1M
, one postcode is not longer than10
chars. - The number of distinct recipe names is lower than
2K
, one recipe name is not longer than100
chars.
- Count the number of unique recipe names.
- Count the number of occurences for each unique recipe name (alphabetically ordered by recipe name).
- Find the postcode with most delivered recipes.
- Count the number of deliveries to postcode
10120
that lie within the delivery time between10AM
and3PM
, examples (12AM
denotes midnight):NO
-9AM - 2PM
YES
-10AM - 2PM
- List the recipe names (alphabetically ordered) that contain in their name one of the following words:
- Potato
- Veggie
- Mushroom
- The application is packaged with Docker.
- Setup scripts are provided.
- The submission is provided as a
CLI
application. - The expected output is rendered to
stdout
. Make sure to render only the finaljson
. If you need to print additional info or debug, pipe it tostderr
. - It should be possible to (implementation is up to you):
a. provide a custom fixtures file as input
b. provide custom recipe names to search by (functional reqs. 5)
c. provide custom postcode and time window for search (functional reqs. 4)
Generate a JSON file of the following format:
{
"unique_recipe_count": 15,
"count_per_recipe": [
{
"recipe": "Mediterranean Baked Veggies",
"count": 1
},
{
"recipe": "Speedy Steak Fajitas",
"count": 1
},
{
"recipe": "Tex-Mex Tilapia",
"count": 3
}
],
"busiest_postcode": {
"postcode": "10120",
"delivery_count": 1000
},
"count_per_postcode_and_time": {
"postcode": "10120",
"from": "11AM",
"to": "3PM",
"delivery_count": 500
},
"match_by_name": [
"Mediterranean Baked Veggies", "Speedy Steak Fajitas", "Tex-Mex Tilapia"
]
}
We expect that the assignment will not take more than 3 - 4 hours of work. In our judgement we rely on common sense and do not expect production ready code. We are rather instrested in your problem solving skills and command of the programming language that you chose.
It worth mentioning that we will be testing your submission against different input data sets.
General criteria from most important to less important:
- Functional and non-functional requirements are met.
- Prefer application efficiency over code organisation complexity.
- Code is readable and comprehensible. Setup instructions and run instructions are provided.
- Tests are showcased (no need to cover everything).
- Supporting notes on taken decisions and further clarifications are welcome.