Специализация
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 в телеграм
Зачем нужны примитивы синхронизации даже при наличии GIL?
GIL не защищает ваши данные — он защищает только внутренние структуры CPython. Потоки по-прежнему могут читать и изменять общие объекты почти одновременно, вызывая race conditions. Поэтому для корректного доступа к shared state используют Lock, RLock, Semaphore, Event, очереди сообщений и другие инструменты. Эти примитивы обеспечивают безопасную последовательность выполнения и гарантируют консистентность данных.
Какие примитивы синхронизации есть в asyncio?
Основные примитивы:
Lock — блокировка для исключительного доступа
Event — уведомление между корутинами
Semaphore — ограничение числа одновременных операций
Condition — сложные условия ожидания
Где хранятся примитивы и объекты-обертки в JVM?
Примитивы обычно хранятся в стеке или внутри объектов.
Объекты-обёртки всегда размещаются в heap.
Ссылки на объекты хранятся в стеке или в других объектах.
Место хранения зависит от контекста использования.
Garbage Collector работает только с объектами в heap.
Когда стоит использовать примитивы, а когда объекты в Java?
Примитивы используются, когда важны скорость и память, а объекты — когда требуется больше возможностей, таких как методы или поддержка коллекций. Примитивы подходят для простых данных, а объекты полезны для более сложных операций.
Какие примитивы синхронизации (synchronized, Atomic, семафоры) вы использовали?
synchronized – для блокировки доступа к общему ресурсу.
Atomic-классы – для атомарных операций (например, AtomicInteger).
Семафоры (Semaphore) – для ограничения доступа к ресурсу с заданным числом потоков.
Какие примитивы синхронизации вы знаете кроме lock (например, ReaderWriterLockSlim, Mutex)?
Где в памяти хранятся структуры и примитивы?
Рейтинг:
2
Сложность:
5
Основные примитивы:
Monitor (база для lock),
Mutex (межпроцессная блокировка),
Semaphore/SemaphoreSlim (ограничение параллельного доступа),
ReaderWriterLockSlim (оптимизация для частого чтения),
AutoResetEvent/ManualResetEvent (сигнализация между потоками),
Barrier (синхронизация этапов).
Рейтинг:
4
Сложность:
7
Структуры и примитивы обычно хранятся на стеке, если их размер известен и время жизни ограничено областью видимости. Однако Swift может размещать их и в куче, если этого требует логика программы. Размещение определяется не типом, а контекстом использования. Разработчик не управляет этим напрямую.
Рейтинг:
5
Сложность:
6
Рейтинг:
2
Сложность:
5
Рейтинг:
5
Сложность:
6
Рейтинг:
2
Сложность:
4
Рейтинг:
2
Сложность:
5