As a test task for Klaus software engineering position we ask our candidates to build a small gRPC service using language of their choice. Preferred language for new services in Klaus is Go.
The service should be using provided sample data from SQLite database (database.db
).
Please fork this repository and share the link to your solution with us.
-
Come up with ticket score algorithm that accounts for rating category weights (available in
rating_categories
table). Ratings are given in a scale of 0 to 5. Score should be representable in percentages from 0 to 100. -
Build a service that can be queried using gRPC calls and can answer following questions:
-
Aggregated category scores over a period of time
E.g. what have the daily ticket scores been for a past week or what were the scores between 1st and 31st of January.
For periods longer than one month weekly aggregates should be returned instead of daily values.
From the response the following UI representation should be possible:
Category Ratings Date 1 Date 2 ... Score Tone 1 30% N/A N/A X% Grammar 2 N/A 90% 100% X% Random 6 12% 10% 10% X% -
Scores by ticket
Aggregate scores for categories within defined period by ticket.
E.g. what aggregate category scores tickets have within defined rating time range have.
Ticket ID Category 1 Category 2 1 100% 30% 2 30% 80% -
Overall quality score
What is the overall aggregate score for a period.
E.g. the overall score over past week has been 96%.
-
Period over Period score change
What has been the change from selected period over previous period.
E.g. current week vs. previous week or December vs. January change in percentages.
-
-
How would you build and deploy the solution?
At Klaus we make heavy use of containers and Kubernetes.