Подборка объединяет вопросы, отмеченные на этапах интервью в LifePay. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: concurrency, async, mobile.
Отличия <? extends T> от <? super T> обобщённые типы в Java значения из такого контейнера можно безопасно читать, но добавление запрещено объекты типа T можно безопасно добавлять, а при чтении типом результата будет…
Синхронизация в Java — способ защитить критическую секцию synchronized блокирует один монитор (объект) в каждый момент монитор удерживает только один поток, который выполняет критическую секцию остальные потоки…
StateFlow без подписчиков: как он работает StateFlow в Kotlin — горячий поток для хранения и управления состоянием Может работать при наличии 0 подписчиков и не выдаёт ошибок Текущее состояние постоянно сохраняется в…
Что будет с корутиной в GlobalScope после cancel() родительского скоупа? Корутинa в GlobalScope — выполняется вне иерархии скоупов GlobalScope не зависит от родительских скоупов Вызов cancel() у родителя не оказывает…
Почему GlobalScope не стоит использовать в большинстве случаев? Kotlin coroutines, GlobalScope — глобальная область видимости Жизненный цикл — весь период работы приложения Нет контроля над отменой и обработкой ошибок…
Почему на собеседовании важно понимать работу стека в многопоточности? управление памятью при выполнении нескольких потоков у каждого потока есть собственный стек вызовов в стеке хранятся локальные переменные и адреса…
У каких сущностей в Java и Kotlin есть собственный стек? стек — область памяти, связанная с многопоточностью каждый поток располагает собственным стеком в стеке хранятся локальные переменные, параметры и вызовы…
SharedFlow и StateFlow: различия в поведении и буферизации SharedFlow и StateFlow — холодные потоковые API Kotlin Coroutines, предназначенные для коммуникации между потоками. StateFlow постоянно хранит одно актуальное…
системное изменение, которое влияет на ресурсы UI например, поворот экрана, смена языка или подключение клавиатуры по умолчанию приводит к пересозданию Activity пересоздание требуется, чтобы применить обновлённые…
volatile — модификатор переменных в Java и C++ Он обеспечивает видимость изменений между потоками: чтение и запись выполняются с обращением к основной памяти volatile препятствует оптимизациям компилятора и CPU,…
Для чего в Java используется ключевое слово synchronized? механизм синхронизации потоков в Java обеспечивает взаимное исключение (mutex) при обращении к коду или ресурсу захватывает объект-монитор одним потоком не…