0% found this document useful (0 votes)
28 views3 pages

2023 - Summer - Internship Recruitment - Home Assignment

The document describes a coding challenge to build an application that allows a user to select a continent and number of countries to display. It should fetch country data from a GraphQL API and additional details from a REST API, then display the random country data alphabetically. Developers have 60 hours to complete the task using specified technologies and should submit their code publicly on GitHub with instructions on how to run it.

Uploaded by

laney.black.ar50
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views3 pages

2023 - Summer - Internship Recruitment - Home Assignment

The document describes a coding challenge to build an application that allows a user to select a continent and number of countries to display. It should fetch country data from a GraphQL API and additional details from a REST API, then display the random country data alphabetically. Developers have 60 hours to complete the task using specified technologies and should submit their code publicly on GitHub with instructions on how to run it.

Uploaded by

laney.black.ar50
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

2023 - Summer - Internship Recruitment -

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).

● Was the task completed? (points to score: 0-20)


○ The solution does what it is supposed to do - the final result is what was
expected
○ No bugs come up during our testing
● Code/project structure / modularity & readability (DRY, single responsibility, IoC,
separate applications for front-end and back-end, Design patterns usage...) (do not
put everything to one “void main()” ;) ) (points to score: 0-30)
● How efficient is the solution? (points to score: 0-10)
○ Is the algorithm efficient / inefficient
● Configuration vs. hardcoding settings ballance (points to score: 0-10)
● Git history (we will review your commit history and repository usage, how did you use
branches for instance, what was your step-by-step process ;)) (and if there will be
any commits after your email sent back to us(!)) (points to score: 0-15)
● UI quality, it doesn’t have to consist of fancy eye-catching animations or elements.
However, it should be easily understandable and esthetic (points to score: 0-15)
● What is the quality of Instructions on how to run the solution for us - if we won’t
understand how to run / deploy your solution we will not know if it works! (points to
score: 0-15)
○ May be in a readme.md / readme.txt in repository, or in project description /
wiki in repository, or a separate document with instructions send along

You might also like