Примеры тестовых заданий для Android и iOS

Очень часто при приеме на работу, программиста просят выполнить тестовое задание. Особенно это актуально для Juniour специалистов. В большинстве случаев необходимо создать мини приложение, где продемонстрировать свои навыки проектирования и кодирования.

Ниже представлены реальные примеры тестовых заданий для Android и iOS разработчиков, которые компании давали моим студентам. Далеко не все из них понятные и адекватные, но это то, что в реальности присылают кандидатам.

Задача 1. Приложение "Погода"

На 1-м экране (отображение) должно быть:

  1. Возможность выбрать город (3-4 города)
  2. Возможность выбрать сезон года
  3. В зависимости от п.1 и п.2 - отображение средней температуры за сезон в городе
  4. В зависимости от п.1 - отображать тип города (малый, средний, большой)

На 2-м экране (настройки) должно быть:

  1. Управление списком городов (город, тип)
  2. Управление температурой по месяцам

Приложение на первом экране должно отображать информацию, введенную пользователем на втором экране. Например, на втором экране вводим: город "Минск", тип "средний", температура июнь "23", июль "28", август "25". На первом экране в списке городов, должен отобразится Минск, тип "средний" и температура за сезон "лето" = 25,3 (среднее арифметическое 3-х месяцев).

Обязательно использовать паттерны:

  • Lazy singleton
  • Factory: получать тип города в зависимости от его названия
  • Decorator: При запросе средней температуры за сезон в городе - должна быть возможность получить строку для логирования
  • Observer: Дополнительно выводить сообщение, о температуре, через Snackbar
  • Strategy: В зависимости от стратегии - выводить температуру в необходимом формате (градус Цельсия, градус Фаренгейта, Кельвин)

Условия:

  • Без использования сети
  • БД: SQLite
  • Мы ожидаем выполнения задания без применения сторонних библиотек, кроме официальных (таких как AndroidX, Android Architectural Components, CoreData и т.д.)
  • Результат выложить на Github.com

Задача 2. Репозитории GitHub

  1. При помощи GitHub API отобразить список репозиториев у организации xxx (github.com/xxx)
  2. Дизайн - полностью на ваше усмотрение
  3. Код разместить на GitHub и прислать нам ссылку

Обязательно:

  • Код на Kotlin/Swift
  • Задействовать RxJava/RxSwift
  • Покрыть юнит-тестами (UI не стоит)

Желательно:

  • Обработка сетевых ошибок
  • Поиск репозиториев в рамках организации по названию (просто фильтр списка подойдёт)
  • MVI, MVVM, MVP — на ваше усмотрение, будет интересно посмотреть, но лучше без сторонних библиотек

Задача 3. Пользователи GitHub

Главный экран:

  1. Users (список всех Github пользователей). Использовать API https://developer.github.com/v3/users/#get-all-users
  2. В элементе списка отрисовать avatar, login (title), id (subtitle)
  3. По нажатию на элемент списка реализовать переход на UserDetails
  4. Реализовать pagination и Pull-to-refresh

UserDetails (экран с информацией о пользователе):

  1. Использовать API https://developer.github.com/v3/users/#get-a-single-user
  2. Поля: Avatar, Name, Email, Organization (если есть), Following count, Followers count, Дата создания аккаунта

Требования:

  • Структурированный код (архитектурный паттерн на усмотрение кандидата)
  • Язык Java/Kotlin/Swift
  • Код поместить в репозиторий на GitHub/Bitbucket/GitLab
  • Неоднозначности задания трактуются на усмотрение разработчика

Задача 4. Приложение "Вечеринка"

На экране располагаются:

  1. Картинка (загружается по URL)
  2. Название вечеринки
  3. Имя пригласившего
  4. Фото пригласившего (извлекается по URL)
  5. Список гостей с фото, которые идут вместе с текущим пользователем. Фото загружаются по URL

Все данные должны загружаться из файла в формате JSON, зашитого в ресурсах приложения.

Критерии проверки: корректность работы: отсутствие крашей и багов, соответствие требованиям, код как для продакшена, читабельный и аккуратный, с разделением обязанностей между классами, код должен легко модифицироваться, из учета, что новые требования могут быть выставлены каждую неделю, при использовании RecyclerView нежелательно использовать дополнительные библиотеки.

Задача 5. Приложение из 1-го экрана

  1. Необходимо создать приложение состоящее из 1 экрана
  2. Реализовать данное задание с применением RxJava/RxSwift, любого DI (например Dagger 2) и MVP.

Реализовать:

  • База данных 5 полей и заполнить любыми данными
  • Вывод в активити или фрагмент в виде списка
  • Live search по базе данных
  • Реализовать сортировку, любой параметр

Задача 6. Приложение "Авто"

Приложение, должно иметь следующие функции:

  1. Отображение списка автомобилей с характеристиками (10-12 автомобилей, 3 производителя, 1-3 марки у каждого производителя)
  2. Добавление нового автомобиля
  3. Редактирование деталей автомобиля

Желательно:

  • Фильтрация по производителю и марке
  • Сортировка по цене

Задача 7. Проверка адреса email

Создать хороший UX для пользователей, вводящих адрес электронной почты и пароль при регистрации в приложении.

Требования:

  1. Проверка формата электронной почты. Пример: user@gmail не является действительным адресом электронной почты
  2. Пользовательский интерфейс должен показывать, действителен или нет адрес электронной почты. При необходимости интерфейс должен указать, что не так с адресом
  3. Автозаполнение и проверка доступности домена. Пользователи часто опечатываются при вводе адреса. Например, указывают неправильно доменное имя (gmail.con вместо gmail.com)
  4. Проверка пароля. Нет ограничения на вводимые символы. Есть ограничение минимальной и максимальной длины
  5. При необходимости, интерфейс должен указать, что неправильно
  6. Проверить, что заполнены все поля, и указать, какое именно не заполнено

Для автозаполнения необходимо:

  • Проверить существование введённого домена
  • Указать, что неправильно в введённом имени
  • Предложить Автозаполнение доменного имени самыми вероятными и популярными доменными именами. Пример: если пользователь вводит «user@», то продолжениями могут быть «[email protected]», «[email protected]» и т.д. Если пользователь уточняет «user@g», то продолжениями могут быть популярные домены, начинающиеся с «g». Например: «[email protected]», «[email protected]»

Обновлено 25 января 2023

"Сайт использует cookie-файлы для того, чтобы вам было удобнее им пользоваться. Для продолжения работы с сайтом, вам необходимо принять использование cookie-файлов."