At theScore, we're always looking for intelligent and resourceful Android developers to join our growing team. To help us evaluate new talent, we have created this take-home interview question. This challenge would take few hours to finish, we advice to read the requirement carefully. If you have any question please don't hasitate to ask.
All candidates must complete this before the possibility of an in-person interview. During the in-person interview, your submitted project will be used as the base for questions.
In-person coding interviews can be stressful and can hide some people's full potential. A take-home gives you a chance work in a less stressful environment and showcase your talent.
We want you to be at your best and most comfortable.
In this repo is the file input.json. It contains data about NBA Teams. Each entry contains the following information
id: (Team's ID)full_name: (Team's name)wins: (Team's wins)losses: (Team's losses)players: (List of players on the team)first: (Player's first name)last: (Player's last name)position: (Player's position)number: (Player's jersey number)
{
"id": 1,
"full_name": "Boston Celtics",
"wins": 45,
"losses": 20,
"players": [
{
"id": 37729,
"first_name": "Kadeem",
"last_name": "Allen",
"position": "SG",
"number": 45
},
]
}Your task is to create an Android application that has two screens; a Team list, and a Team page. Your solution may be written in Java or Kotlin (or both) whichever you feel most comfortable with.
- Request Data
- Request NBA teams data from
input.jsonendpoint using networking framework of your choice. - Implement Network caching to cache the response.
- Request NBA teams data from
- The Team List screen
- Displays all of the teams data in alphabetical order
- Each team's
full_name,wins, andlossesmust be displayed - When the user clicks a team it should launch their team page
- Allow the user to sort the list by Alphabetical order.
- Bonus: Allow the user to sort the list by
winsorlosses
- The Team Page screen
- Displays information about a specific Team selected from the Team List
- The team's
full_name,wins, andlossesmust be displayed - The team's roster must be displayed with each Player's
first_name,last_name,position,number
- Unit Tests (You must write valid unit tests to test your code)
- Write
Unit Teststo test and verify how data retreived using API including success, failure etc.. - Write
Unit Teststo test and verify data sorting. - Write
Unit Teststo test and verify how data are managed within the app.
- Write
- Bonus: Robolectric Tests (No bonus if no Unit Tests written)
- Write
Robolectric Teststo verify correct data are binding to UI. - Write
Robolectric Teststo verify navigating from team list to team detail screen. - Write
Robolectric Teststo verify performing the sorting action updates the screen with sorted data.
- Write
We will evaluate you on your ability to solve the problem with above requirement as well as your choice of design patterns, libraries, and general coding style.
- Download this repo
- Complete the problem outlined in the Requirements section
- In your personal public GitHub repo, create a new public repo with this implementation
- Provide this link to your contact at theScore
If you have any questions regarding requirements, do not hesitate to email your contact at theScore for clarification.