-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
89567de
commit 686f0b3
Showing
2 changed files
with
70 additions
and
0 deletions.
There are no files selected for viewing
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# Frontend Take Home Exercise | ||
|
||
## Simulation Log Viewer | ||
|
||
nuTonomy runs simulations of different car builds in different scenarios. Even if the car build and scenario match, the results can differ. Your task is to create a web interface that presents the scenario logs and performs basic operations. | ||
|
||
## Requirements | ||
|
||
1. Every scenario has an id and a maximum number of "stops" (times when the car unexpectedly braked). | ||
|
||
2. Every simulation run has a start time, end time, car build and a corresponding scenario. A run is considered successful if | ||
|
||
- It does not exceed the maximum number of stops for the scenario | ||
- It does not exceed the maximum running time for the scenario. (Calculated by <end_time> - <start_time>) | ||
- It does not have a collision | ||
|
||
`A set of logs has the following format:` | ||
|
||
```json | ||
{ | ||
"simulationRuns": [ | ||
{ | ||
"startTime": number (UTC timestamp), | ||
"endTime": number (UTC timestamp), | ||
"scenarioId": string, | ||
"carBuild": string, | ||
"result": { | ||
"numberOfStops": number, | ||
"hasCollision": boolean, | ||
} | ||
} | ||
], | ||
"scenarios": [ | ||
{ | ||
"scenarioId": string, | ||
"maxNumberOfStops": number, | ||
"maxRunningTime": number, | ||
} | ||
] | ||
} | ||
``` | ||
|
||
## Interface | ||
|
||
The data should be presented as a table of simulation runs with the following format: | ||
|
||
| scenarioId | carBuild | startTime | runningTime / maxRunningTime | numberOfStops / maxNumberOfStops | hasCollision | doesScenarioPass | | ||
|
||
Each run should be sortable on every column e.g. ascending order of startTime or descending numberOfStops. | ||
|
||
The data should be filterable by | ||
|
||
- scenarioId | ||
- carBuild | ||
- scenarioId and carBuild | ||
|
||
Selecting any filter should show the relevant runs and present the following statistics | ||
|
||
- percentage of runs that exceed the maximum number of stops | ||
- percentage of runs that exceed the maximum running time | ||
- percentage of runs that have a collision | ||
- percentage of runs that do not pass | ||
|
||
## Technical requirements | ||
|
||
- Project should be installable and runnable with npm i.e. npm install && npm start | ||
- Project should be testable with npm test | ||
- Project must be written using a modern JavaScript framework e.g. Angular, React, etc | ||
|
||
- The interface should be clean. Advanced HTML/CSS is not a priority |