The time has come for us to unveil the code challenge Sytac has prepared for you. The challenge involves working with the Movies application and includes the following tasks:
- Provide a high-level review of the application. Give your opinion on both aspects you consider positive and aspects you consider negative. Describe how and why would you do things differently.
- The logic of ImageCache hides an issue. Try to discover and fix it.
- Replace the binding between Repository and View model without combine.
- Replace the Popular detail view with a new custom detail view. This view should display a detail with the info of the model movie model. Please use SwiftUI for the detailed view.
- Replace the TopRated tab with a new list view. This view should display a list of the TopRated movies and it must be implemented programmatically using UIKit.
- Write unit tests whereever you need them.
- In MoviewRow.swift line 11 we use @StateObject, could we change it with @ObservedObject? what are the differences?
- In PopularMoviesListViewModel.swift we ask for popular movies, using the current implementation fetch top rated movies instead, and explain what is happening.
- Implement load more functionality for Popular movies list screen.
You have total freedom to modify the codebase, there are no constraints on the design/layout of the TopRated screen. The TopRated List and detail view should be created programmatically only (no Interface Builder nor SwiftUI).
Important: Once you are ready with the solution, please create a PR to main
. We will receive a notification that your solution is ready for review, and assign one of our colleagues to it.
To retrieve movies related data, the application is using this API https://www.themoviedb.org/documentation/api
- The project has to compile without errors.
- The code should be clean, efficient and understandable. Remember to structure your source code correctly (using a nice architecture would make this easier).
- Keep in mind the performance of the application.
- Use version control in the project to show your progress, commit like you would normally.
- We would like to see at least the first 5 questions solved, the more you provide the better.
If you have any technical issue or problem, please reach out to your recruiter and we will try to answer as soon as possible.
Good luck!
- We value quality over quantity.
- Share any information you believe would help the reviewer understand better your solution.
- Deliver production ready code.
MIT Free Software!