2023 - Summer - Internship Recruitment - Home Assignment
2023 - Summer - Internship Recruitment - Home Assignment
Home Assignment
Introduction
Treat this as a simple coding challenge for yourself, that you can address at your own pace,
with the mind space you need. This will help us understand your level of coding skills a bit
more, and get to know your thinking process about approaching the problem to solve and
general approach around organizing your own work and your code.
Good luck and have fun with it! :)
The Assignment
Task
There is an open graphql API available online: link. The above API serves countries and
continents data. The main point of interest is fetching the base information about countries
located in a given continent.
Use the above API to pull countries from the user defined continent. In order to retrieve the
continent from the user, use a pre-defined key-value object consisting of key- continent
code, value- continent name. Allow the user to select(one at a time) value in the manner of
your choice.
Additionally, the user should be able to input a number of countries to display. Allow an user
to specify a number between 2 and 10(including those values) and validate the input.
Based on the specified number, pick the inserted amount of random countries from the
graphql API response. These countries should be used to call the REST API, where you can
gather more details about the selected countries. To pull the information, use
https://restcountries.com/v3.1/name/{countryname}
The “RestCountries” API provides access to information about the country, namely its
capital, region, languages, official currencies, etc. For each country pulled from the above
API, get its official name, capital, population, currency, subregion and languages.
Present the random country and the found information together (in case of no information
found for a particular random country present a message - “No information found!” ) - so they
are easy to read to the user. Order the entries in the alphabetical order of their names.
While the application is processing the information, you should display the indication that the
user should await the results.
Presentation to the user is displaying requested information to the screen (desktop app
window, a web page, a mobile app… up to you, but no console application solutions are
accepted!).
Instructions
Read these carefully before you start any coding(!):
● Timeline (Deadline)
○ 60 hours since the assignment being sent out to you (we will check the
timestamp of your email back to us with the one we sent to you)
● Acceptable stacks / frameworks / tools:
○ .Net + (C#), Java, Python, Typescript/Javascript, Kotlin, Swift
○ we will try to run it on / deploy to:
■ Windows 10 (64bit) / Mac OS X (latest)
■ Tomcat / IIS10 / nginx / Apache
■ Docker Containers running on Windows or Mac OS X
■ Android Studio Emulator
■ Xcode iOS Simulator
○ No commercial/paid solutions (no trial versions either) / frameworks allowed
● What and how to submit the task to us
○ Email us the link to your public git repository (gitlab / github / AzDO /
Bitbucket)
○ Add instructions for us:
■ How to pull the code / clone or fork your project repository
■ How to compile / assemble the code
■ How to run/deploy the solution
■ How to use it (if any user input required)
○ Do not send any executables(!) / any published packages(!)
○ *NOTE: do not put Freeport Metrics specific information in the repo (repo
name / project name / readme ) - so it will NOT be easy to search&find by
your competition :)
Evaluation Criteria
We will use the below set of criteria to evaluate your work - please consider them when
working on the solution of the problem stated before. Total potential points to get: 100 (each
criteria max score details below).