/backend-code-challenge

Example interview test for backend candidates. https://www.mcmakler.de

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

Basic Backend Developer Interview

Dear candidate, please follow this readme and solve all questions.

Before you can start, you should prepare your development environment.

This test requires:

  • access to the internet
  • your favourite IDE
  • (PHP) working dev environment with PHP 7 and symfony 3.x
  • (Node) working dev environment with Node.js LTS
  • database (MongoDB, Postgres, MySQL)
  • nginx or alternative simple dev web server

Good luck!


Test tasks:

NOTE: You are free to use any framework you wish. Bonus points for an explanation of your choice.

  1. Specify a default controller
  • for route /
  • with a proper json return {"hello":"world!"}
  1. Use the api.nasa.gov
  1. Write a command
  • to request the data from the last 3 days from nasa api
  • response contains count of Near-Earth Objects (NEOs)
  • persist the values in your DB
  • Define the model as follows:
    • date
    • reference (neo_reference_id)
    • name
    • speed (kilometers_per_hour)
    • is hazardous (is_potentially_hazardous_asteroid)
  1. Create a route /neo/hazardous
  • display all DB entries which contain potentially hazardous asteroids
  • format JSON
  1. Create a route /neo/fastest?hazardous=(true|false)
  • analyze all data
  • calculate and return the model of the fastest asteroid
  • with a hazardous parameter, where true means is hazardous
  • default hazardous value is false
  • format JSON
  1. Create a route /neo/best-year?hazardous=(true|false)
  • analyze all data
  • calculate and return a year with most asteroids
  • with a hazardous parameter, where true means is hazardous
  • default hazardous value is false
  • format JSON
  1. Create a route /neo/best-month?hazardous=(true|false)
  • analyze all data
  • calculate and return a month with most asteroids (not a month in a year)
  • with a hazardous parameter, where true means is hazardous
  • default hazardous value is false
  • format JSON

Additional Instructions

  • Fork this repository
  • Tests are not optional
  • (PHP) Symfony is the expected framework
  • After you're done, provide us the link to your repository.
  • Leave comments where you were not sure how to properly proceed.
  • Implementations without a README will be automatically rejected.

Bonus Points

  • Clean code!
  • Knowledge of application flow.
  • Knowledge of modern best practices/coding patterns.
  • Componential thinking.
  • Knowledge of Docker.
  • Usage of MongoDB as persistance storage.

How to run application:

To clone and run this application, you'll need Git and Node.js (which comes with npm) and MongoDB installed on your computer. From your command line:

# Clone this repository
$ git clone https://github.com/hsbalar/backend-code-challenge.git

# Go into the repository
$ cd backend-code-challenge

# Install dependencies
$ npm install

# Run the app
$ npm start