Skip to content

vkandroidtt/vk_android_search_intern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание на стажировку Android

Вступление

Привет, в этом тестовом задании вам не придется писать свое приложение с нуля, ведь за вас его уже написал анонимный ИИ. К сожалению реализованное приложение оказалось далеко не идеальным, более того --- оно даже не выполняет основной сценарий для которого было написано. Ваша задача --- исправить это и спасти приложение, выполнив задания по пунктам ниже. Обратите внимание, что к приложению подключена библиотека MyLib -- представим, что это очень важная сторонняя библиотека для сбора информации о поисковых запросах пользователя. Однако после ее подключения пользователи стали жаловаться, что приложение теперь очень медленно открывается.

Требования

Приложение должно использовать API https://dummyjson.com/docs/users и уметь отображать полный список пользователей. Для каждого пользователя нужно показывать его аватарку, имя, фамилию, университет и возраст. Приложение должно поддерживать поиск пользователей.

Стек:

  • MVI
  • Glide
  • Coroutines
  • Android View

Задания

  1. Необходимо восстановить работу приложения --- чтобы оно выполняло функциональные требования.
  2. Опишите, что такое холодный старт приложения. Предложите системное решение для замера времени старта приложения, так, чтобы на этом замере была видна задержка, вызываемая подключением библиотеки. Стоит считать, что идеальный замер времени старта (идеальный != достижимый) -- от момента клика пользователем на иконку приложения в лаунчере системы, до возможности начать интерактивно взаимодействовать с приложением. Реализуйте предложенное решение. Вычисленное время старта нужно передавать в специальную функцию логирования WaterbaseTracker.trackAppStart()
  3. Внимательно изучите приложение и предложите потенциальные улучшения (от 1 до 3 --- больше не нужно, можно улучшать как UX, так и архитектуру). Рассчитывайте, что в будущем в это приложение будет добавляться экран с карточкой пользователя, возможность просмотра ленты постов в отдельном экране, а также другой тип пользователей -- сообщества. Для каждого улучшения обязательно укажите какие преимущества оно принесет, а также что потенциально может быть не так после его внедрения.
  4. Реализуйте одно из предложенных улучшений на выбор (ТОЛЬКО ОДНО).

Пример для пункта 3: Предлагаю внедрить в приложение Jetpack Compose. Это позволит писать UI в декларативном стиле, а также сделает проект привлекательным для разработчиков с рынка. Однако может негативно повлиять на производительность решения. Для демонстрации я реализовал экран списка друзей на Compose.

Что не стоит предлагать: изменения связанные с заменой ключевых элементов стека: View, MVI, Coroutines. Вы можете добавлять что-то новое или например каким-то образом улучшить текущую реализацию этих элементов стека, но целиком заменять их не стоит. (То есть пример, приведенный выше не удовлетворяет этому правилу!)

Как сдавать решение

  1. Создайте свой собственный приватный репозиторий на Github
  2. Добавьте в коллабораторы пользователя vkandroidtt (автор этого репозитория)
  3. В ветку main (master) залейте код, представленный в этом репозитории
  4. Создайте ветку solution
  5. Реализуйте в ней п. 1 - 4 задания (для пункта 3 представьте описание улучшений в виде текстового файла, в него же добавьте раздел про холодный старт для пункта 2). ВАЖНО: каждый пункт -- в отдельном коммите!
  6. Сделайте pull request из ветки solution в ветку main (master)
  7. Пришлите ссылку pull request

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages