Skip to content

Instantly share code, notes, and snippets.

@limkhashing
Created April 8, 2026 07:22
Show Gist options
  • Select an option

  • Save limkhashing/3f6691a357013230cfb96b6d96c4b7cb to your computer and use it in GitHub Desktop.

Select an option

Save limkhashing/3f6691a357013230cfb96b6d96c4b7cb to your computer and use it in GitHub Desktop.

๐Ÿ“ฑ Mobile Engineer Assignment


๐Ÿงฉ Introduction

This assignment evaluates:

  • Problem-solving ability
  • Code quality (clean, production-ready)
  • Communication skills
  • Technical implementation

๐ŸŽฌ Scenario

Build a movie discovery app for cinema operators (e.g. Cathay).


๐Ÿ“‹ Requirements

๐Ÿ  Home Screen

  • List of available movies

  • Sorted by release date (descending)

  • Features:

    • Pull-to-refresh
    • Infinite scroll (load more on bottom)

Each movie item must include:

  • Poster / Backdrop image
  • Title
  • Popularity

๐Ÿ“„ Detail Screen

Display additional movie details:

  • Synopsis
  • Genres
  • Language
  • Duration

๐ŸŽŸ Booking

  • Simulate opening booking link in WebView

๐ŸŽจ Frontend Design

  • Free to design
  • Keep it simple and clean

๐Ÿ”Œ Backend

Use TMDb API as data source:

  • API Key:

    328c283cd27bd1877d9080ccb1604c91
    

Sample APIs

Get Movies

http://api.themoviedb.org/3/discover/movie?api_key=328c283cd27bd1877d9080ccb1604c91&primary_release_date.lte=2016-12-31&sort_by=release_date.desc&page=1

Get Movie Details

http://api.themoviedb.org/3/movie/328111?api_key=328c283cd27bd1877d9080ccb1604c91

โš™๏ธ Technical Requirements

iOS

  • Swift โ‰ฅ 4.0
  • RxSwift
  • MVVM

Android

  • Kotlin or Java
  • RxJava
  • MVVM
  • Dependency Injection
  • Data Binding

๐Ÿงช Testing

  • Unit tests required
  • Focus on main functionalities

๐Ÿ“ฆ Submission

  • Upload to Git platform:

    • GitHub / GitLab / Bitbucket
  • Repository must be public

  • Share link with recruiter


โœ… Evaluation Criteria

  • Clean, readable, maintainable code

  • Performance

  • Clear documentation:

    • Assumptions
    • Design decisions
  • Unit test coverage


๐Ÿ”— References


๐ŸŽ‰ Notes

Thatโ€™s the end of the assignment โ€” have fun building!


๐Ÿ“Š Estimated Scoring Breakdown (100 points)

๐Ÿง  1. Architecture & Code Quality โ€” 30 pts

Most important section

  • Clean architecture (MVVM correctly implemented) โ†’ 10
  • Readability & maintainability โ†’ 10
  • Proper separation of concerns โ†’ 5
  • Naming conventions & structure โ†’ 5

โš™๏ธ 2. Core Features Implementation โ€” 25 pts

Home Screen โ€” 15 pts

  • Movie list display โ†’ 5
  • Sorting by release date โ†’ 3
  • Pull-to-refresh โ†’ 3
  • Pagination (infinite scroll) โ†’ 4

Detail Screen โ€” 10 pts

  • Correct data display โ†’ 5
  • WebView booking simulation โ†’ 5

๐Ÿ”Œ 3. API Integration & Data Handling โ€” 15 pts

  • Proper API usage (TMDb) โ†’ 5
  • Error handling (network, empty states) โ†’ 5
  • Data parsing & mapping โ†’ 5

๐Ÿงช 4. Unit Testing โ€” 10 pts

  • Coverage of key logic (ViewModel, use cases) โ†’ 6
  • Test quality & meaningful assertions โ†’ 4

๐ŸŽจ 5. UI/UX Quality โ€” 10 pts

  • Clean and intuitive UI โ†’ 4
  • Smooth user experience โ†’ 3
  • Responsiveness & edge cases โ†’ 3

(Note: โ€œSimple is goodโ€, so donโ€™t overinvest here)


๐Ÿงฐ 6. Android/iOS Best Practices โ€” 5 pts

  • Dependency Injection โ†’ 2
  • Data Binding / reactive patterns โ†’ 2
  • Lifecycle handling โ†’ 1

๐Ÿ“„ 7. Documentation โ€” 5 pts

  • README clarity โ†’ 3
  • Explanation of decisions & assumptions โ†’ 2

๐Ÿงฎ Summary Table

Category Points
Architecture & Code Quality 30
Features Implementation 25
API & Data Handling 15
Unit Testing 10
UI/UX 10
Best Practices 5
Documentation 5
Total 100

๐Ÿ’ก What Actually Gets You Hired (Reality Check)

Even though everything is scored, in practice:

  • 70+ โ†’ acceptable
  • 80+ โ†’ strong candidate
  • 85+ โ†’ likely shortlist
  • 90+ โ†’ standout

๐Ÿ‘‰ The real differentiator is:

  • Clean architecture (MVVM done properly)
  • Thoughtful decisions (not just working code)
  • Good README explaining trade-offs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment