Тестовое задание
Тестовое задание - это небольшое приложение на пару экранов. Его задача - проверить твои навыки проектирования и кодирования, а также способность самостоятельно работать над проектом. Полезно иметь на гитхабе хотя бы один сделанный проект, чтобы отмахиваться им от рекрутеров, когда просят показать код.
Залететь на новую работу выполнив тестовое - один из самых непыльных путей. Ты делом показываешь что могёшь условную мурку и часто пропускаешь другие этапы собеседования. Я делал так дважды, просили
клон инстаграма и
todo-лист. Сейчас у меня валяется
пет-проект где я обмазался всеми технологиями с ног до головы, и в принципе этого достаточно если кто-то хочет посмотреть код.
Идея для приложения?
Самое
время для творчества. Подойдет все, что решает конкретную проблему:
⏺заметки
⏺прогноз погоды
⏺конвертер криптовалют
⏺репозитории компании на github
⏺список премьер в кино
Существует огромный список
публичных API, на основе которых можно собрать свою интересную поделку.
Идеи для дизайна можно посмотреть на
Uplabs и
Dribbble. Или просто использовать
Material Design от Google.
Какие технологии использовать при разработке?
Бывает, что компания явно указывает рекомендуемый стек. За использование чего-то экзотического попросят пояснительную бригаду. Если ничего не указано, используем следующие технологии:
⏺язык: kotlin
⏺версия android: 6.0 (API Level 23) и выше
⏺архитектура: clean, MVVM или MVI, Data-Domain-UI,
гайд и
рекомендации⏺бизнес-логика: ViewModel, LiveData, Flow
⏺UI: адаптивный Material 3, XML или Jetpack Compose, ViewBinding, Lifecycle
⏺DI: Hilt, Koin
⏺навигация: Single Activity, Navigation Component
⏺многопоточность/async: Kotlin Coroutines
⏺работа с сетью: Retrofit, Okhttp
⏺сериализация: Kotlin Serialization, Gson
⏺загрузка картинок: Coil, Glide
⏺хранение данных: DataStore, Room
⏺фоновая обработка: WorkManager
⏺линтеры: Lint, Ktlint, Detekt, Spotless
На что обратить внимание при оформлении / что будет оцениваться?⏺полнота реализованного функционала, соответствие требованиям и пожеланиям ТЗ
⏺качество, плавность и стабильность работы
⏺проект собирается и запускается, работает без крашей и багов, не жрет оперативку как голодный родственник, корректное функционирование вплоть до закрытия. Не допускается потеря работоспособности во время использования. Устойчиво к сворачиванию/разворачиванию
⏺использование архитектурных подходов, логическое разделение на модули, организация классов в пакеты
⏺опрятность кода: никаких кривых отступов, закомменченных участков, лишних пустых строк, стилистическое оформление по
гайдлайнам⏺обработка ошибок и пустых состояний, индикаторы загрузки
⏺избегать многоуровневой структуры в xml-файлах
⏺не копипастить 100% кодовой базы из других проектов на гитхабе, это легко проверяется
⏺минимум внешних зависимостей типа moxy и epoxy
⏺работа с Git - оформление коммитов и пулл-реквестов
Готовый проект публикуем на гитхаб. Обязательно заполняем readme:
➡️какие задачи выполняет приложение (скопировать ТЗ)
➡️используемые зависимости, их версии
➡️инструкция по запуску
Отправляем ссылку на проект потенциальному работодателю. Пингуем, чтобы дали фидбек.
В заключение примеры тестовых заданий от разных компаний:
Wildberries,
VK,
Avito,
Kode,
KazanExpress,
Tutu,
Tinkoff,
Shift.
И примеры посложнее:
VK,
Avito.