Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
При повороте экрана нужно сохранить и изменить определённые данные в Presenter без ViewModel. На каком этапе жизненного цикла и как это сделать?
При повороте экрана Activity уничтожается и создаётся заново. В MVP можно сохранить данные в onSaveInstanceState(Bundle) Presenter-а через Bundle (через интерфейс Activity → Presenter) и восстановить в onCreate нового View, передав сохранившийся Bundle. Либо хранить Presenter с данными в setRetainInstance(true) у Fragment.
Какие проблемы возникают при большом количестве NotificationCenter-подписок?
Большое количество подписок в NotificationCenter может привести к утечкам памяти и неожиданным вызовам обработчиков. Если подписки не удаляются вовремя, объекты продолжают получать события после деинициализации логики. Также растет связность кода и сложность отладки. В итоге приложение становится менее предсказуемым и устойчивым.
Как осуществляется передача данных между Interactor и Presenter?
Interactor передает данные в Presenter через метод протокола. Обычно это происходит с помощью структуры Response. Interactor не знает, как данные будут отображаться. Presenter получает результат бизнес-логики и подготавливает его для UI. Такое разделение делает код более понятным и тестируемым.
В каком виде Presenter получает данные от Interactor?
Presenter получает данные в виде Response-модели. Эта модель содержит результат бизнес-логики без привязки к UI. В ней нет форматирования для отображения. Presenter преобразует Response в ViewModel. Такой подход делает архитектуру более прозрачной и управляемой.
Как организовано взаимодействие View и Presenter в MVP?
В MVP View и Presenter взаимодействуют напрямую через интерфейсы. View передаёт пользовательские события Presenter, а Presenter обрабатывает логику и обновляет View. View обычно реализует протокол, который определяет методы обновления UI. Presenter не знает конкретной реализации View. Это делает код более тестируемым.
Как связаны View и Presenter в VIPER?
Как решается проблема retain cycle между View и Presenter?
Что делают методы enter и leave?
Для чего используется beforeRouteEnter?
Рейтинг:
5
Сложность:
6
View и Presenter в VIPER связаны через протоколы. View хранит сильную ссылку на Presenter, а Presenter — слабую ссылку на View. View передаёт пользовательские события Presenter. Presenter обрабатывает их и обновляет View через интерфейс. Такая схема предотвращает retain cycle и делает код тестируемым.
Рейтинг:
5
Сложность:
5
Проблема retain cycle решается использованием слабой ссылки (weak) со стороны Presenter на View. View продолжает хранить Presenter сильной ссылкой. Такая схема разрывает цикл владения. В результате оба объекта корректно освобождаются. Это стандартная практика в VIPER.
Рейтинг:
5
Сложность:
5
enter и leave используются для ручного управления DispatchGroup.enter увеличивает счётчик активных задач, leave уменьшает его.
Когда счётчик становится равен нулю, группа считается завершённой.
Это позволяет отследить завершение асинхронных операций.
Рейтинг:
4
Сложность:
6
beforeRouteEnter используется для выполнения логики до отображения компонента. В этом хуке ещё нет доступа к this. Он часто применяется для загрузки данных перед входом на страницу. После завершения навигации можно получить доступ к экземпляру компонента через callback. Это делает хук удобным для инициализации.
Рейтинг:
2
Сложность:
6
Рейтинг:
4
Сложность:
6
Рейтинг:
5
Сложность:
7
Рейтинг:
4
Сложность:
6
Рейтинг:
5
Сложность:
5