Примеры тестовых заданий для Android и iOS
Очень часто при приеме на работу, программиста просят выполнить тестовое задание. Особенно это актуально для Juniour специалистов. В большинстве случаев необходимо создать мини приложение, где продемонстрировать свои навыки проектирования и кодирования.
Ниже представлены реальные примеры тестовых заданий для Android и iOS разработчиков, которые компании давали моим студентам. Далеко не все из них понятные и адекватные, но это то, что в реальности присылают кандидатам.
Задача 1. Приложение "Погода"
На 1-м экране (отображение) должно быть:
- Возможность выбрать город (3-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
- При помощи GitHub API отобразить список репозиториев у организации xxx (github.com/xxx)
- Дизайн - полностью на ваше усмотрение
- Код разместить на GitHub и прислать нам ссылку
Обязательно:
- Код на Kotlin/Swift
- Задействовать RxJava/RxSwift
- Покрыть юнит-тестами (UI не стоит)
Желательно:
- Обработка сетевых ошибок
- Поиск репозиториев в рамках организации по названию (просто фильтр
списка подойдёт)
- MVI, MVVM, MVP — на ваше усмотрение, будет интересно посмотреть, но лучше без сторонних библиотек
Задача 3. Пользователи GitHub
Главный экран:
- Users (список всех Github пользователей). Использовать API https://developer.github.com/v3/users/#get-all-users
- В элементе списка отрисовать avatar, login (title), id (subtitle)
- По нажатию на элемент списка реализовать переход на UserDetails
- Реализовать pagination и Pull-to-refresh
UserDetails (экран с информацией о пользователе):
- Использовать API https://developer.github.com/v3/users/#get-a-single-user
- Поля: Avatar, Name, Email, Organization (если есть), Following count, Followers count, Дата создания аккаунта
Требования:
- Структурированный код (архитектурный паттерн на усмотрение кандидата)
- Язык Java/Kotlin/Swift
- Код поместить в репозиторий на GitHub/Bitbucket/GitLab
- Неоднозначности задания трактуются на усмотрение разработчика
Задача 4. Приложение "Вечеринка"
На экране располагаются:
- Картинка (загружается по URL)
- Название вечеринки
- Имя пригласившего
- Фото пригласившего (извлекается по URL)
- Список гостей с фото, которые идут вместе с текущим пользователем. Фото загружаются по URL
Все данные должны загружаться из файла в формате JSON, зашитого в ресурсах приложения.
Критерии проверки: корректность работы: отсутствие крашей и багов, соответствие требованиям, код как для продакшена, читабельный и аккуратный, с разделением обязанностей между классами, код должен легко модифицироваться, из учета, что новые требования могут быть выставлены каждую неделю, при использовании RecyclerView нежелательно использовать дополнительные библиотеки.
Задача 5. Приложение из 1-го экрана
- Необходимо создать приложение состоящее из 1 экрана
- Реализовать данное задание с применением RxJava/RxSwift, любого DI (например Dagger 2) и MVP.
Реализовать:
- База данных 5 полей и заполнить любыми данными
- Вывод в активити или фрагмент в виде списка
- Live search по базе данных
- Реализовать сортировку, любой параметр
Задача 6. Приложение "Авто"
Приложение, должно иметь следующие функции:
- Отображение списка автомобилей с характеристиками (10-12 автомобилей, 3 производителя, 1-3 марки у каждого производителя)
- Добавление нового автомобиля
- Редактирование деталей автомобиля
Желательно:
- Фильтрация по производителю и марке
- Сортировка по цене
Задача 7. Проверка адреса email
Создать хороший UX для пользователей, вводящих адрес электронной почты и пароль при регистрации в приложении.
Требования:
- Проверка формата электронной почты. Пример: user@gmail не является действительным адресом электронной почты
- Пользовательский интерфейс должен показывать, действителен или нет адрес электронной почты. При необходимости интерфейс должен указать, что не так с адресом
- Автозаполнение и проверка доступности домена. Пользователи часто опечатываются при вводе адреса. Например, указывают неправильно доменное имя (gmail.con вместо gmail.com)
- Проверка пароля. Нет ограничения на вводимые символы. Есть ограничение минимальной и максимальной длины
- При необходимости, интерфейс должен указать, что неправильно
- Проверить, что заполнены все поля, и указать, какое именно не заполнено
Для автозаполнения необходимо:
- Проверить существование введённого домена
- Указать, что неправильно в введённом имени
- Предложить Автозаполнение доменного имени самыми вероятными и популярными доменными именами. Пример: если пользователь вводит «user@», то продолжениями могут быть «user@gmail.com», «user@yahoo.com» и т.д. Если пользователь уточняет «user@g», то продолжениями могут быть популярные домены, начинающиеся с «g». Например: «user@gmail.com», «user@gmail.co.uk»
Обновлено 25 января 2023