Skip to content

mcrakhman/hire_ios-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

Тестовое задание на позицию iOS-разработчика

Напутствие к тестовому заданию.

  • Выбор ЯП (swift или obj-c) в зависимости от договоренностей или на усмотрение кандидата, если отдельной договоренности не было
  • Допустимо уменьшать бизнес-требования тестового задания, сокращая или модифицируя его в случае, если та или иная функция несоразмерно увеличивает трудоемкость работ или видится нецелесообразной по тем или иным причинам. При предоставлении результата добавить пояснение, о том, какая часть убрана из задания и по каким причинам.
  • Предоставленные исходные данные допустимо преобразовывать в любую иную форму представления, сохраняя при этом сам состав информации и предоставив само преобразование в виде утилиты или иного способа.
  • Все неоднозначности описания данного задания трактуются в пользу кандидата.
  • Оценку будет проходить как «внешняя» функциональная , так и «внутренняя» составляющие, включая крайние и неосновные случаи поведения и оформление кода, включая его структурирование и комментирование.
  • Ограничений на используемые компоненты и библиотеки нет. В случае, если будет задействованы "внешние" компоненты, то их необходимо подключить через использование cocoa pods

Хотелось бы увидеть содержательные комментарии в коде там, где это необходимо.

Расскажите нам, как вы тестировали результат своей работы. Какие используете инструменты и как вы осуществляете тестирование. Наличие юнит-тестов и авто-тестов в проекте будет существенным плюсом

Результат выполнения задания нужно будет оформить здесь же, на гитхабе. В качестве ответа не нужно присылать никаких(!) ZIP архивов и наборов файлов. Все ваши ответы должны быть оформлены на https://github.com/ . Вы присылаете только ссылку на ваш репозиторий. У нас в компании применяется GIT, и если вы его не знаете, вам стоит освоить базу самостоятельно. Если у вас еще нет аккаунта, то это хороший повод его завести.

Что необходимо сделать

Приложение, имеющее стандартный тулбар с двумя разделами: "Расписание" и "О приложении"

1. Раздел "Расписание"

Первый экран раздел должен позволять выбрать:

  • выбрать станцию «откуда».
  • Выбрать станцию «куда».
  • Выбрать дату отправления.

Экран выбора станции должен строиться на основе табличного представления с группировкой и должен

  • Содержать общий перечень станций (см вложенный файл), сгруппированный по значению «Город, Страна» (Полный перечень групп и элементов должен быть представлен на одном экране, с возможностью пролистывания всего содержимого)
  • Предоставлять возможность поиска по части имени (как начальной, так и входящей, независимо от регистра). Поиск необходимо осуществлять на том же экране, где представлен список станций с использование SearchViewController
  • Предоставлять возможность просмотра детальной информации о конкретной станции (именование и ее полный адрес, включая город, регион и страну). Возможность открыть просмотр этой информации должна быть доступна из экрана с перечнем станций

2. Раздел "О приложении"

В данном разделе необходимо разместить информацию:

  • copyright
  • версия приложения

Описание файла с данными

Входные данные предоставлены в формате JSON

{
  "citiesFrom" : [  ],
  "citiesTo" : [  ]
}

Где citiesFrom – массив возможных пунктов отправления, а citiesTo – массив возможных пунктов назначения

Каждый элемент массива представляет собой описание города, с полями:

{
      // Страна
      "countryTitle" : "Австрия",
      // Координаты города
      "point" : {
            "longitude" : 16.36879539489746,
            "latitude" : 48.20253753662109
      },
      // Район
      "districtTitle" : "",
      // идентификатор
      "cityId" : 2352,
      // Название города
     "cityTitle" : "Вена",
      // Название региона
      "regionTitle" : "",
      // Перечень станций города
      "stations" : []
}

Каждая станция описывается объектом:

 {
	// именование страны – денормализация данных, дубль из города
      "countryTitle" : "Австрия",
      // Координаты станции (в общем случае отличаются от координат города)
     "point" : {
           "longitude" : 16.36879539489746,
           "latitude" : 48.20253753662109
     },
     "districtTitle" : "",
     // идентификатор города (обратная ссылка на город)
     "cityId" : 2352,
     // наименование города (обратная ссылка на город)
     "cityTitle" : "город Вена",
     // именование региона
     "regionTitle" : "",
     // идентификатор станции
     "stationId" : 10154,
     // полное именование станции
     "stationTitle" : "International Busterminal, Edbergstarsse 200 A"
},

About

Тестовое задание для кандидатов на позицию iOS-разработчика (Swift)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published