Специализация
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 в телеграм
Что такое очередь задач в Event Loop?
Очередь задач — это структура, в которую попадают callbacks асинхронных операций. Event Loop следит за call stack и очередью задач. Когда call stack пуст, Event Loop берёт задачу из очереди и помещает её в стек. Так JavaScript обрабатывает асинхронный код. Это обеспечивает неблокирующее выполнение.
Как реализовать собственную очередь задач и управлять приоритетами выполнения?
Собственная очередь задач позволяет управлять порядком выполнения асинхронных операций. Чтобы реализовать такую очередь, можно использовать массив для хранения задач и сортировать их по приоритету. При добавлении задачи в очередь указываем ее приоритет, а затем запускаем выполнение задач в порядке их приоритета, используя Promise.resolve() для асинхронного выполнения. Это позволяет эффективно управлять задачами и обеспечивать их выполнение в нужном порядке.
Что такое стек (stack)? Что такое очередь (queue)?
Стек — это структура данных, работающая по принципу LIFO (последним пришёл — первым ушёл), где элементы добавляются и удаляются с одного конца. Очередь работает по принципу FIFO (первым пришёл — первым ушёл), где элементы добавляются с одного конца, а удаляются с другого. Обе используются для управления порядком обработки элементов.
Как отменить задачу, отправленную в GCD-очередь?
GCD по умолчанию не поддерживает отмену обычных async задач, но можно использовать DispatchWorkItem — он позволяет вызвать метод cancel(), а в самом блоке проверять isCancelled и досрочно выходить.
Почему Redis можно использовать как очередь?
Redis поддерживает структуры данных, которые удобно использовать как очередь. Списки позволяют добавлять и извлекать элементы с разных концов. Операции выполняются быстро и атомарно. Redis может блокировать потребителя до появления данных. Это делает его удобным для простых очередей.
Как происходит добавление элемента в очередь в Redis?
Как работает FIFO-очередь в RabbitMQ?
Может ли объект пережить сборку мусора? Как это возможно? (очередь финализации)
В чем разница между потоком и очередью?
Как создать собственную очередь?
Рейтинг:
4
Сложность:
6
В Redis очередь обычно реализуется с помощью списка. Элемент добавляют командами LPUSH или RPUSH. Одна сторона списка считается “входом”, другая — “выходом”. Для безопасного чтения часто используют блокирующие команды. Такой подход прост и очень быстрый.
Рейтинг:
3
Сложность:
6
По умолчанию RabbitMQ гарантирует порядок FIFO (First-In, First-Out) для сообщений в рамках одной очереди, если соблюдены условия. Это работает, когда в очереди есть только один потребитель, который подтверждает получение сообщений по порядку. Порядок может нарушиться, если используются несколько параллельных потребителей, так как они могут обрабатывать сообщения с разной скоростью. Также порядок не гарантируется между разными очередями или при использовании повторной отправки сообщений.
Рейтинг:
2
Сложность:
6
Да, объект может пережить одну сборку мусора, если у него есть финализатор (деструктор в C#). Когда такой объект становится недостижимым, сборщик мусора не удаляет его сразу. Вместо этого он помещает объект в специальную очередь финализации. Поток финализации асинхронно запускает финализатор объекта, и только после этого память объекта может быть освобождена при следующей сборке мусора.
Рейтинг:
4
Сложность:
6
Поток — это единица выполнения кода. Очередь — это механизм управления выполнением задач. Очередь определяет порядок и условия выполнения, а поток выполняет код. В iOS разработчик обычно работает с очередями, а не с потоками напрямую.
Рейтинг:
4
Сложность:
5
Собственная очередь создаётся с помощью DispatchQueue. Можно указать её имя, тип и атрибуты. Очередь может быть serial или concurrent. Такие очереди используются для изоляции задач или работы с потокобезопасностью.
Рейтинг:
5
Сложность:
7
Рейтинг:
2
Сложность:
8
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
6
Рейтинг:
5
Сложность:
4