Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/busbud/coding-challenge-backend-c
Coding Challenge
https://github.com/busbud/coding-challenge-backend-c
Last synced: about 1 month ago
JSON representation
Coding Challenge
- Host: GitHub
- URL: https://github.com/busbud/coding-challenge-backend-c
- Owner: busbud
- Created: 2014-04-30T06:32:34.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-08-17T19:32:17.000Z (over 1 year ago)
- Last Synced: 2024-08-04T20:03:36.734Z (5 months ago)
- Language: JavaScript
- Size: 403 KB
- Stars: 39
- Watchers: 5
- Forks: 297
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-recruitment-tests - Busbud - Design an API endpoint that provides autocomplete suggestions for large cities. (Node.js)
README
# Busbud Coding Challenge
## Requirements
Design an API endpoint that provides autocomplete suggestions for large cities.
The suggestions should be restricted to cities in the USA and Canada with a population above 5000 people.- the endpoint is exposed at `/suggestions`
- the partial (or complete) search term is passed as a query string parameter `q`
- the caller's location can optionally be supplied via query string parameters `latitude` and `longitude` to help improve relative scores
- the endpoint returns a JSON response with an array of scored suggested matches
- the suggestions are sorted by descending score
- each suggestion has a score between 0 and 1 (inclusive) indicating confidence in the suggestion (1 is most confident)
- each suggestion has a name which can be used to disambiguate between similarly named locations
- each suggestion has a latitude and longitude
- all functional tests should pass (additional tests may be implemented as necessary).
- the final application should be available publicly. You can use any hosting solution of your choice ([Heroku](https://devcenter.heroku.com/articles/getting-started-with-nodejs), [GCP](https://cloud.google.com/run/docs/quickstarts/deploy-container), etc.).
- feel free to add more features if you like!#### Sample responses
These responses are meant to provide guidance. The exact values can vary based on the data source and scoring algorithm.
**Near match**
GET /suggestions?q=Londo&latitude=43.70011&longitude=-79.4163
```json
{
"suggestions": [
{
"name": "London, ON, Canada",
"latitude": "42.98339",
"longitude": "-81.23304",
"score": 0.9
},
{
"name": "London, OH, USA",
"latitude": "39.88645",
"longitude": "-83.44825",
"score": 0.5
},
{
"name": "London, KY, USA",
"latitude": "37.12898",
"longitude": "-84.08326",
"score": 0.5
},
{
"name": "Londontowne, MD, USA",
"latitude": "38.93345",
"longitude": "-76.54941",
"score": 0.3
}
]
}
```**No match**
GET /suggestions?q=SomeRandomCityInTheMiddleOfNowhere
```json
{
"suggestions": []
}
```### Non-functional
- All code should be written in Javascript or Typescript.
- Mitigations to handle high levels of traffic should be implemented.
- Challenge is submitted as pull request against this repo ([fork it](https://help.github.com/articles/fork-a-repo/) and [create a pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/)).
- Documentation and maintainability is a plus.## Dataset
You can find the necessary dataset along with its description and documentation in the [`data`](data/) directory.
## Evaluation
We will use the following criteria to evaluate your solution:
- Capacity to follow instructions
- Developer Experience (how easy it is to run your solution locally, how clear your documentation is, etc)
- Solution correctness
- Performance
- Tests (quality and coverage)
- Code style and cleanliness
- Attention to detail
- Ability to make sensible assumptionsIt is ok to ask us questions!
We know that the time for this project is limited and it is hard to create a "perfect" solution, so we will consider that along with your experience when evaluating the submission.
## Getting Started
### Prerequisites
You are going to need:
- `Git`
- `nvm` (or your preferred node version manager)
- `Node.js`### Setting up your environment
1. Begin by forking this repo and cloning your fork. GitHub has apps for [Mac](http://mac.github.com/) and
[Windows](http://windows.github.com/) that make this easier.2. Install [nvm](https://github.com/nvm-sh/nvm#install--update-script) or your preferred node version manager.
3. Install [Node.js](http://www.nodejs.org).
### Setting up the project
In the project directory run:
```
nvm use
npm install
```### Running the tests
The test suite can be run with:
```
npm run test
```### Starting the application
To start a local server run:
```
npm run start
```it should produce an output similar to:
```
Server running at http://127.0.0.1:2345/suggestions
```