Memory Android Engineer Interview Assignment

Overview

Memory Android Engineer Interview Assignment

Hello and welcome to the Memory Android Engineer interview assignment! There can be no demo app that doesn't use the TMDB API so guess what API we picked this time? Yeah you guessed it right: It's TMDB.

Prerequisites:

About the demo app:

  • This demo app shows a list of trending movies grabbed from the TMDB trending movies API.
  • Clicking on a movie in the list shows a detail screen which sports a bigger picture and adds a textual overview of the movie.
  • The codebase strives to mimic the structure of Memory's Android apps, the goal is to give you a feel at what it's like to contribute code as an Android Engineer at Memory.
  • The project uses Gradle's new Dependency Catalog feature to manage dependencies: https://docs.gradle.org/current/userguide/platforms.html#sub:conventional-dependencies-toml
  • The UI is built with Jetpack Compose and driven by ViewModels using snapshot state variables, you may use Flows instead if they suit you better.
  • The business logic uses coroutines and Flows to manage asynchronous operations.

The app is comprised of several modules:

  • An HTTP client module for the TMDB api in the /shared/httpapi directory.
  • A local database module in the /shared/database directory built with SQLDelight.
  • A prototypical business logic class named MovieRepo in the /shared/logic/movie module.
  • A home screen showing the list of trending movies in the /shared/screens/trending module.
  • A movie detail screen in the /shared/screens/movie module.
  • An Android application that makes use of all the other modules in the /app directory.

The assignment:

  1. Currently only the first 20 trending movies are shown in the list: you should handle pagination and display the full list of trending movies available from the API.
  2. Show a movie's runtime in the detail view: it can be fetched using the HttpApi.movieApi.getMovieDetails() method.
  3. Show runtime errors (e.g. network failures) in the UI.
  4. Tests are missing for the modules under /shared/logic and /shared/screens : write some.
  5. Add some embellishments to the overall UI.
  6. Try to use the database as a cache as much as possible: the more data the user can still see without network access, the better.

Please try to complete as many of the above steps as you can: The further you get the better but don't worry too much if you can't go all the way.

You might also like...
Android Library to help you with your runtime Permissions.
Android Library to help you with your runtime Permissions.

PermissionHelper Android Library to help you with your runtime Permissions. Demo Android M Watch it in action. Pre M Watch it in action. Nexus 6 (M) N

Android validation library which helps developer boil down the tedious work to three easy steps.
Android validation library which helps developer boil down the tedious work to three easy steps.

AwesomeValidation Introduction Implement validation for Android within only 3 steps. Developers should focus on their awesome code, and let the librar

📄The reliable, generic, fast and flexible logging framework for Android
📄The reliable, generic, fast and flexible logging framework for Android

logback-android v2.0.0 Overview logback-android brings the power of logback to Android. This library provides a highly configurable logging framework

Android framework for node.js applications

Introduction Anode is an embryonic framework for running node.js applications on Android. There are two main parts to this: a port of node.js to the A

It makes a preview from an url, grabbing all the information such as title, relevant texts and images. This a version for Android of my web link preview https://github.com/LeonardoCardoso/Link-Preview
It makes a preview from an url, grabbing all the information such as title, relevant texts and images. This a version for Android of my web link preview https://github.com/LeonardoCardoso/Link-Preview

LeoCardz Link Preview for Android It makes a preview from an url, grabbing all the information such as title, relevant texts and images. Visual Exampl

AndroidPermissions 4.2 0.0 Java Android M was added to check Permission. but Permission check processing is so dirty.

Android Permissions Checker Android M was added to check Permission. but Permission check processing is so dirty. This Project is to be simple, Checki

A plug and play ;) android library for displaying a
A plug and play ;) android library for displaying a "rate this app" dialog

Easy Rating Dialog This lib provides a simple way to display an alert dialog for rating app. Default conditions to show: User opened the app more than

Tool for Android app development

RateMeMaybe Asks the user if (s)he wants to open the Play Store to rate your application when certain requirements are met (see below). This can and s

AudioPlayerView is an Android view that loads audio from an url and have basic playback tools.
AudioPlayerView is an Android view that loads audio from an url and have basic playback tools.

AudioPlayerView AudioPlayerView is an Android view that loads audio from an url and have basic playback tools. It makes use of the Android MediaPlayer

Owner
Memory
Tools for a better future of work.
Memory
Memory safer implementation of android.os.Handler

Android Weak Handler Memory safer implementation of android.os.Handler Problem Original implementation of Handler always keeps hard reference to handl

Badoo Tech 1.5k Jan 5, 2023
Starter-Android-Library - Starter Android Library is an Android Project with Modular Architecture.

Starter-Android-Library - Starter Android Library is an Android Project with Modular Architecture.

OpenBytes 1 Feb 18, 2022
SL4A brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreters directly on the Android device.

#Scripting Layer for Android (SL4A) SL4A brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreter

Damon Kohler 2.3k Dec 23, 2022
****. Use the native and support library variants instead - https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html. An android library that makes it easy to add custom fonts to edittexts and textviews

Add to your project Add this line to your dependencies in build.gradle compile 'in.workarounds.typography:typography:0.0.8' Using the views There are

Workarounds 43 Nov 6, 2021
ZXing ("Zebra Crossing") barcode scanning library for Java, Android

Project in Maintenance Mode Only The project is in maintenance mode, meaning, changes are driven by contributed patches. Only bug fixes and minor enha

ZXing Project 30.5k Dec 27, 2022
RxJava binding APIs for Android's UI widgets.

RxBinding RxJava binding APIs for Android UI widgets from the platform and support libraries. Download Platform bindings: implementation 'com.jakewhar

Jake Wharton 9.7k Jan 6, 2023
A gradle plugin for getting java lambda support in java 6, 7 and android

Gradle Retrolambda Plugin This plugin will automatically build your java or android project with retrolambda, giving you lambda goodness on java 6 or

Evan Tatarka 5.3k Jan 5, 2023
A comprehensive tutorial for Android Data Binding

精通 Android Data Binding 更多干货可移步至个人主页 QQ 交流群:324112728 ,或者点击链接加入QQ群 官方虽然已经给出了教程 - Data Binding Guide (中文版 - Data Binding(数据绑定)用户指南) ,但是实践之后发现槽点实在太多,于是就

Fei Liang 2.6k Dec 6, 2022
A Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability.

Development in this repository is stopped. Future development continues on https://github.com/yigit/android-priority-jobqueue ========================

Path Mobile Inc Pte. Ltd. 2.4k Dec 9, 2022
An android library for displaying fps from the choreographer and percentage of time with two or more frames dropped

DEPRECATED TinyDancer is deprecated. No more development will be taking place. Check out the Google Android developer documentation for UI performance

Friendly Robot 1.9k Jan 3, 2023