Welcome and thank you for taking this exercise! We understand that time is your most precious resource so we very much appreciate those making the investment. We hope those taking this exercise find the problem set engaging, without trick questions and a good barometer of an every day problem solved at work.
This is a multi-question (4) programming exercise designed to allow us to get a better feel for you as a developer.
While the scenario within the questions is fictional, this exercise provides a concrete dataset around which we can have well structured conversations and hopefully avoid contrived or hypothetical questions.
We expect that this exercise will take a maximum of a few hours.
You will have a few days between receiving this exercise and the due date. Feel free to take your time, digest the problem and work at a pace and style that is suitable to you and your schedule.
While we're trying our best clearly define expectations for each question, there is likely to be some ambiguity. This is OK. Don't worry! We understand that development is a creative process and that rarely are all requirements clearly defined and found in an easily digestible format. If this happens and you feel yourself caught between two decisions, make note of your choices (as code comments or within your submission document) and continue on.
Are you completely stuck/confused/unsure of what the question is asking? That's OK! It's likely our fault. If this happens, please email hawker or gloria. We won't judge and can hopefully get you moving forward again ASAP.
We expect that you write code that you are proud of. This is not a race to see who can complete the exercise the fastest or in the fewest lines of code. The expectation is that you would write code that is of similar quality to your daily work. Aim for code that you would open a merge/pull request with and expect it to be approved with minimal review feedback.
In an on-site interview, we may ask you to make small alterations to some of the code you write in this exercise. This does not mean that you should code for an infinite number of unknown use-cases! However, we ask that you think about the problem as you're solving for it. Be open to new ideas/tweaks/iterations just as any software project would, e.g. Avoiding hard coded constants/limitations. What happens if sort order changes? etc.
At a high level, this exercise will consist of the following steps:
- Clone exercise repository. If you're reading this, you've likely already completed this step. Otherwise it should be available at
https://github.com/apptentive-interviewing/interview-exercise-{your-github-name}
. - Read through this README and all of the exercise documents before coding.
- All written code should be maintained with in the
solution
directory. - Work through and solve each question, creating a new
git
commit after each one is complete. - Follow the submission document for submitting your work.
Once you're ready, head to the UFO Sightings exercise document to get started!