Специализация
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 в телеграм
Что такое mutex, какие они бывают и как их использовать?
Mutex — это механизм синхронизации, который предотвращает одновременный доступ к разделяемым ресурсам несколькими горутинами. В Go есть два типа мьютексов: sync.Mutex (блокирует доступ) и sync.RWMutex (разделяет доступ для чтения и записи). Для работы с мьютексами нужно использовать методы Lock и Unlock.
Объекты каких стандартных классов immutable в Java?
Примеры неизменяемых классов в Java: String, классы-обертки для примитивов (Integer, Double, и т.д.), BigInteger, BigDecimal, и некоторые классы из библиотеки java.time (LocalDate, LocalTime).
Дайте краткую характеристику immutable object. Зачем они нужны?
Immutable объект — это объект, чье состояние нельзя изменить после создания. Они обеспечивают потокобезопасность, уменьшают ошибки, связанные с изменением данных, и используются в функциях, где важна неизменность, например, в ключах коллекций.
Для чего в Jetpack Compose используются аннотации @Stable и @Immutable?
@Immutable гарантирует, что объект не изменяется → безопасен для кеширования. @Stable — объект может меняться, но уведомляет Compose корректно.
Какие примитивы синхронизации вы знаете кроме lock (например, ReaderWriterLockSlim, Mutex)?
Основные примитивы:
Monitor (база для lock),
Mutex (межпроцессная блокировка),
Semaphore/SemaphoreSlim (ограничение параллельного доступа),
ReaderWriterLockSlim (оптимизация для частого чтения),
AutoResetEvent/ManualResetEvent (сигнализация между потоками),
Barrier (синхронизация этапов).
Чем Mutex отличается от RWMutex (блокировка записи vs параллельное чтение)?
Почему MutationObserver использует микротаски в Event Loop?
Являются ли колбэки MutationObserver микротасками или макротасками? Почему?
Объясни, что такое striped locking и когда он эффективнее обычного mutex.
Чем semaphore отличается от mutex?
Рейтинг:
1
Сложность:
7
Mutex блокирует доступ полностью, а RWMutex позволяет множеству горутин читать одновременно, но блокирует при записи. RWMutex эффективнее, когда чтение происходит чаще записи.
Рейтинг:
2
Сложность:
8
MutationObserver выполняет свои колбэки в микротасках, чтобы изменения DOM обрабатывались сразу после текущей задачи, но до рендеринга и макротасков. Это позволяет быстро реагировать на изменения, сохраняя высокую производительность.
Рейтинг:
1
Сложность:
9
Колбэки MutationObserver являются микротасками (microtasks). Они выполняются в той же фазе event loop, что и Promise, но после них. Это обеспечивает высокий приоритет выполнения и гарантирует, что наблюдения за изменениями DOM обрабатываются до следующего рендеринга браузера.
Рейтинг:
3
Сложность:
9
Striped locking — это подход, когда один общий ресурс разделяется на множество независимых сегментов, каждый со своим mutex. Это снижает блокировки, позволяя параллелить операции.
Рейтинг:
5
Сложность:
7
Semaphore и mutex решают похожие задачи, но работают по-разному. Mutex предназначен для взаимного исключения и допускает только один поток в критическую секцию. Semaphore может разрешать доступ нескольким потокам одновременно. Mutex обычно привязан к потоку-владельцу, semaphore — нет. Semaphore более гибкий, но и более опасный в неправильном использовании.
Рейтинг:
3
Сложность:
8
Рейтинг:
3
Сложность:
5
Рейтинг:
3
Сложность:
7
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
5