0% found this document useful (0 votes)
8 views4 pages

Android Developer Hiring Challenge

Uploaded by

61PRITAM SARKAR
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)
8 views4 pages

Android Developer Hiring Challenge

Uploaded by

61PRITAM SARKAR
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

Hiring Problem[Domain]:

Android developer
Through this assignment, we hope to assess your thinking methodology as a
programmer, & your craft. Although, the ideal assessment process recommends a
problem statement with significant complexity.
Read the content of the problem statement carefully, and ensure you abide by the
rules specified. Failure to abide the rules will result in disqualification.
We have deliberately kept the app simple enough for everyone to attempt it, but
we are keen to see the approach you take to solve it.
You are given a task in which you need to design and develop a system which
follows design patterns and clean code principles.

Objective
// API to consume

[Link]

Consume the above API to display the list of users


Design a view to show the list of users.

Each item should contain every element of the data (email, first name, last
name, avatar).

On Tapping any item, a pop up opens with the card view showing user info.

Design and place elements however you want, but it should look good.

Pagination

Hiring Problem[Domain]: Android developer 1


Add pagination to fetch the data based on a list of pages .i.e when the user is
scrolling towards the upward direction, fetch next page data to show by
checking the edge cases

page=1 //initially
increment page to 2 if user keep scrololing till max number pages reached

App Requirements
The app should preferably support minimum Android API level 19.

Pay special attention to UI/UX, Animation & App-Responsiveness.

The app should have 100% offline support. Once the data is fetched
successfully from remote, it should be stored locally and served from cache
until the cache expires.

The cached data should only be valid for a duration of 45 minutes. After that
the app should attempt to refresh the data from remote and purge the cache
only after successful data fetch.

The app should give a pull-to-refresh option to the user to force fetch data
from remote.

The app should be able to handle configuration changes (like rotation).

The app should have data, device & application security best practices.

The app should keep a check on the internet connection, like loader you need
to let the user know the internet is not available on top of the screen and
show data automatically when the internet is connected.

If the app is not able to fetch the data, then it should show an error state to
the user with an
option to retry again.

Showing shimmers instead of boring indicators for the users must be an


advantage while fetching the data.

APK optimization and API call optimizations.

Hiring Problem[Domain]: Android developer 2


Code Coverage Test cases) .

Acceptance Criteria
Our expectations below ( candidate to follow all points mentioned
below)
It follows granular, meaningful Git commit history (refer here).

Follows reactive paradigm Rx, Livedata).

Has proper abstraction for Dependency Injection.

Has good unit and UI test coverage.

Uses Espresso and MockWebserver for UI testing.

APK should be delivered.

It should be hosted in the Backend.

Duration
Please note that not following the instructions will result in an automated
rejection. You have 72 hours to complete the task from the day you were
redirected here. Taking longer than the time allocated will negatively affect
our evaluation of your submission.

Submission Guidelines
Once you have completed the assignment, please make a ZIP archive of it
along with the .git folder and send it the recruiter you are in touch with so we
can look at your commit logs and understand how your solution evolved.
Frequent commits with proper workflows are a huge plus. Please do not
upload the solution to Github, Bitbucket, etc.

Do not make your solution or this problem statement publicly available by, for
example, using GitHub or bitbucket or by posting this problem to a blog or
forum.

Hiring Problem[Domain]: Android developer 3


It should follow SRP (single-responsibility principle) in the architecture (it
should be extensible, maintainable and testable).

It should follow standard coding guidelines Refer AOSP Java Code Style for
Contributors and Kotlin Coding Conventions)

Please write comprehensive unit tests/specs. For object-oriented solutions,


it's a huge plus if you test drive your code.

We are interested in your object-oriented or functional design skills, so please


craft the most beautiful code you can.

We’re also interested in understanding how you make assumptions when


building software. If a particular workflow or boundary condition is not
defined in the problem statement below, what you do is your choice.

If you have any doubts anywhere on the assignment, feel free to get in touch with
our recruiter.

All the best!

Hiring Problem[Domain]: Android developer 4

You might also like