We got to know you and we really liked speaking with you! We also need to understand how it is to be working with you, so we'd like to ask you to complete this relatively small project to help us understand how you approach problems and express your solutions. Please take this as an opportunity to express yourself rather than a test and try to enjoy it along the way!
Please implement a quiz-taking system.
- The system should be a full-stack web application.
- It should have a backend API to get the questions.
- And a frontend UI to answer them.
- The quiz consists of one or more questions.
- The quiz only has multiple-choice questions.
- The app should tell the user how he did at the end of the quiz.
- Do make use of frameworks, libraries, plugins, anything that helps you build this. We use Django on the backend and React/MobX on the frontend, if you're looking for ideas ;)
- Do try to host the app somewhere that we can play with it.
- Alternatively, do take a screencast of how it works, if you run it locally.
- Do apply common sense to the scale of the app - quizzes can have tons of features, limit yourself to what you need.
- Do have fun!
- Do not make use of an actual quiz library :)
- Do not worry about creating an admin interface for quiz creation, feel free to define the quiz directly in the DB.
- Do not worry about user authentication.
- Don't forget to document your application!
Please write your README as if it was for a production service. Include the following items:
- Description of the problem and solution.
- Whether the solution focuses on back-end, front-end or if it's full stack.
- Reasoning behind your technical choices, including architectural.
- Trade-offs you might have made, anything you left out, or what you might do differently if you were to spend additional time on the project.
- Link to to the hosted application where applicable.
Your application will be reviewed by our engineers. We do take into consideration your experience level.
We value quality over feature-completeness. It is fine to leave things aside provided you call them out in your project's README. The code should be as close to production-ready as possible
The aspects of your code we will assess include:
- Correctness: does the application do what was asked? If there is anything missing, does the README explain why it is missing?
- Architecture: does the application handle requests and data efficiently? Is the code structured in a reusable and easily adaptable way?
- Code quality: is the code simple, easy to understand, and maintainable? Are there any code smells or other red flags? Is the coding style consistent with the language's guidelines? Is it consistent throughout the codebase?
- Testing: do you have some unit and some integration tests?
- Technical choices: do choices of libraries, databases, architecture etc. seem appropriate for the chosen application?