Специализация
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 в телеграм
В чем отличие между microtask queue и task queue?
В JavaScript есть две очереди для обработки асинхронных задач: microtask queue и task queue. Microtask queue содержит задачи, такие как Promise и MutationObserver, которые выполняются после завершения текущего стека выполнения, но перед выполнением задач из task queue. В отличие от этого, task queue содержит задачи, связанные с событиями и таймерами, которые обрабатываются только после выполнения всех микротасков.
Какие виды очередей (queues) существуют в iOS?
Основные типы:
Main queue
Global queues (concurrent)
Custom serial queues
Какие дополнительные возможности предоставляет OperationQueue по сравнению с GCD?
Зависимости между операциями.
Отмена операций.
Ограничение количества параллельных операций.
Приоритеты и качество сервиса (QoS).
Что такое стек (stack)? Что такое очередь (queue)?
Стек — это структура данных, работающая по принципу LIFO (последним пришёл — первым ушёл), где элементы добавляются и удаляются с одного конца. Очередь работает по принципу FIFO (первым пришёл — первым ушёл), где элементы добавляются с одного конца, а удаляются с другого. Обе используются для управления порядком обработки элементов.
В чем разница между выполнением задач на main queue и background queue?
Main queue используется для обновления интерфейса и обработки пользовательских событий. Background queue предназначена для тяжелых и длительных операций. Выполнение тяжелой логики на main queue приводит к зависанию UI. Фоновая очередь не имеет доступа к UI напрямую. Корректное разделение задач критично для производительности.
Как работают зависимости в OperationQueue?
Как можно получить deadlock в serial queue?
Почему deadlock не возникает в concurrent queue?
Какие потенциальные проблемы возможны при sync на concurrent queue?
Какие способы отмены задач существуют в OperationQueue?
Рейтинг:
4
Сложность:
7
OperationQueue позволяет задавать зависимости между операциями. Одна операция может стартовать только после завершения другой. Это делается через метод addDependency. Такой подход упрощает управление сложными сценариями. В отличие от GCD, зависимости здесь встроены.
Рейтинг:
5
Сложность:
7
Deadlock в serial queue возникает, когда очередь ждёт выполнения задачи, которая не может начаться.
Чаще всего это происходит при вызове sync на той же очереди.
Очередь занята текущей задачей и не может выполнить следующую.
В результате приложение зависает.
Рейтинг:
4
Сложность:
6
В concurrent queue может выполняться несколько задач одновременно.
Поэтому очередь не блокируется одной задачей целиком.
Даже если используется sync, другие задачи могут быть выполнены параллельно.
Из-за этого классический deadlock возникает реже.
Рейтинг:
4
Сложность:
7
sync на concurrent queue обычно не приводит к deadlock, но может вызвать другие проблемы.
Возможны гонки данных, приоритетные инверсии и деградация производительности.
Также код становится сложнее для понимания и отладки.
Такие ошибки часто проявляются нестабильно и сложно воспроизводятся.
Рейтинг:
4
Сложность:
6
OperationQueue позволяет отменять отдельные операции или все сразу. Метод cancel() помечает операцию как отмененную. Есть также cancelAllOperations(). Операция должна сама корректно реагировать на отмену.
Рейтинг:
4
Сложность:
8
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
8
Рейтинг:
2
Сложность:
7
Рейтинг:
5
Сложность:
5