This document is formatted in MarkDown. Use a compatible IDE or Editor such as IntelliJ or Visual Studio code to read the document more easily.
Please read all of these instructions carefully. Following these instructions is part of the test. If you don't follow the instructions it makes it harder for us to assess your work. These are the general instructions for all our interview assignments.
This repository contains questions which are used as part of our interview process. These questions are often updated. Please check that you have the latest version of the assignment before you begin your work.
Please do not attempt any question unless specifically instructed to do so. You may be asked to do a single question, multiple questions or only a small part of a question.
This repository contains a number of directories. Each directory contains a single assessment question.
This document contains the general instructions for submitting interview assignments. Each assignment also has a document containing question-specific instructions.
Please begin this exercise by forking the repo into your personal GitHub workspace. When you have finished your work, please email your contact at ECS with the URL of your forked repo. Please ensure that your work has been merged into the master branch of your fork. You don't need to make a pull request to put your code into our repo.
Your work should be implemented in Python 3, JavaScript or TypeScript unless the question directs otherwise. If you considering using any other language, please check with ECS first. Your solution may be rejected if we do not have enough people familiar with your chosen language.
We consider tests very important and practice test driven development. We want to see the tests you've written and how they guided your implementation. Show off your testing skills, but please try to keep the kinds of tests you implement relevant to the assignment. If you are implementing in Python you can use the built-in unittest
framework or pytest
, a popular 3rd party testing library.
There is no time-limit on this work, however want to respect your time. These questions are deliberately open-ended but have been designed to be achievable within 1-3 hours. Also, remember that since we will be reviewing your code, we don't have time to carefully review a very big submission.
Please ensure that your submission includes all of the instructions and scripts required to build your project. If your project requires dependencies please include an appropriate method to resolve those dependencies like a Pipfile, requirements.txt or whatever solution is appropriate to your chosen platform.
Please ensure that your submission includes all of the instructions and scripts required to build your project. If your project requires dependencies please include an appropriate method to resolve those dependencies like a Pipfile, requirements.txt or whatever solution is appropriate to your chosen platform.
Bonus questions are suggestions for further work. You will not be penalized if you do not attempt the bonus questions. We would rather see an excellent implementation of the base question than a less effective implementation of base + bonus.
Please ensure that your code is well presented. If you are developing in Python use an automatic formatting tool such as black
. If you are using JavaScript use prettier
on it's default settings.
We are just as interested in your process as your final product. We want to understand your workflow, and your testing strategy.
-
We will run your code. Please include all relevant documentation and scripts which will allow us to execute your project.
-
We will read your code in order to determine if your implementation matches the requirements given in the question.
-
We will look at your coding style, to determine if your style is clear and easy to read. Python code should be auto-formatted to the PEP-8 standard, preferably using a tool like black. JavaScript developers should follow the AirBnB Coding Standards, and use a tool such as the Prettier formatter.
-
We will look at your tests, to determine how your testing strategy led your development.
-
We will look at your github commit history to see how the code you wrote changed over time.
-
We will ask you questions about your code in a code-review session. This could be in a subsequent stage of the interview process. A code review might also require you to make some changes your code.