Skip to content

Instantly share code, notes, and snippets.

@NikitaAsabin
Last active May 12, 2023 12:40
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save NikitaAsabin/820424023639b0393fd63324626f24f6 to your computer and use it in GitHub Desktop.
Save NikitaAsabin/820424023639b0393fd63324626f24f6 to your computer and use it in GitHub Desktop.
iOS Test Task

Тестовое задание на позицию iOS Developer.

Время выполнения: не более 5 рабочих дней

Если вдруг возникли вопросы, то можно задать их написав мне на nikita.asabin@flatstack.com


Требования

Сделать iOS приложение

Приложение представляет из себя список стран и их детальное описание. Данные подгружаются постранично и находятся в JSON файлах pageN.json, где N-номер страницы. Начать нужно с page1.json . URL к следующей странице хранится в JSON файле в параметре "next".

Детальный дизайн с ассетами находится в скетч файле тут Тестовое задание для iOS

Список подгруженных стран должен сохранятся локально. В случае отсутствия интернета отображать закешированые данные.

Экраны:

Список стран

  • Необходимо отобразить список стран
  • Экран должен соответствовать прикрепленному дизайну
  • Реализовать автоматическую подгрузку стран (пагинация)
  • Предусмотреть динамический размер ячеек
  • Добавить возможность обновления списка ( pull to refresh )

Детальная информации о стране

  • Необходимо отобразить детальную информацию о стране
  • Экран должен соответствовать прикрепленному дизайну . Дополнительно можно сделать в соотвествии с данным дизайном
  • В случае если фото отсутствует - отобразить флаг выбранной страны

Фото в JSON файле находится в image или в countryInfo:{images: [] }

Workflow

Basic

  • Use Swift
  • Your choice for architecture (MVC, MVP, MVVM, Viper)
  • Storyboard or XIBs
  • Networking
  • Store local data
  • Follow Gitflow

Advanced*

  • Store local data with Realm or Core Data
  • Do not use third party frameworks for image loading
  • Unit tests
  • UI tests

*Следование пунктам Advanced будет плюсом на этапе собеседования.


Код поместить в свой репозиторий на GitHub.

В README.md должны быть записаны инструкции по запуску проекта.

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