Специализация
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 (Global Interpreter Lock) — это механизм, который ограничивает выполнение нескольких потоков Python в один момент времени. Он гарантирует, что только один поток может исполнять байт-код Python, что делает многозадачность в Python с потоками неэффективной для вычислительно интенсивных задач.
Почему IO-bound задачи не блокируют поток из-за GIL?
IO-bound задачи не блокируют поток из-за GIL, потому что во время операций ввода-вывода (например, сетевых запросов или чтения файлов) поток отпускает GIL, позволяя другим потокам выполняться. Это делает многопоточность эффективной для IO-bound задач, даже несмотря на наличие GIL.
Как интегрировать сбор требований с Agile в 1С-проектах?
В Agile 1С-проектах сбор требований интегрируется через создание и поддержку бэклога продукта, регулярное проведение grooming сессий и использование итеративного подхода к уточнению требований. Это позволяет адаптироваться к изменениям и постепенно детализировать требования по мере развития проекта.
Как интегрировать тестирование с Agile?
В Agile тестирование интегрируется в каждый спринт, а не является отдельной фазой в конце. Тестировщик участвует в планировании спринта, помогает формулировать критерии приемки для пользовательских историй и начинает тестировать функциональность сразу после её готовности. Цель — получить быструю обратную связь и обеспечить, что по окончании каждого спринта есть протестированный и потенциально готовый к выпуску инкремент продукта.
Что произойдет, если задача, выполняемая под GIL, завершится с ошибкой (упадет)?
Если поток завершится с ошибкой, GIL будет корректно освобожден. Интерпретатор Python обрабатывает исключения в потоках и гарантирует освобождение ресурсов, включая GIL. Другие потоки продолжат работу нормально. Однако, если исключение не будет обработано, весь процесс Python может завершиться, если это главный поток, или только проблемный поток остановится, если это дочерний поток. Сам GIL при этом не повреждается и продолжает функционировать для остальных потоков.
Закрывает ли GIL соединение с базой данных при аварийном завершении задачи?
Какие подходы командной работы применяются при разработке программного обеспечения и какие шаблоны и процессы используются в методологиях Agile?
Какие стадии и рабочие статусы присутствуют в Agile-процессах и как они интерпретируются?
Как GIL влияет на многопоточность в Python?
Зачем нужны примитивы синхронизации даже при наличии GIL?
Рейтинг:
2
Сложность:
5
Нет, GIL не закрывает соединения с базой данных при аварийном завершении задачи. GIL отвечает только за синхронизацию доступа к объектам Python и не управляет внешними ресурсами. Соединения с БД должны закрываться явно или через контекстные менеджеры. При аварийном завершении потока соединение может остаться открытым, что приведет к утечке ресурсов на стороне базы данных. Для предотвращения этого следует использовать блоки try-finally или контекстные менеджеры для гарантированного закрытия соединений.
Рейтинг:
5
Сложность:
5
В командной работе используются подходы Agile, включающие такие процессы, как Scrum, Kanban, XP и Lean. Agile помогает командам работать итеративно, адаптироваться к изменениям и регулярно поставлять ценность. Основные шаблоны Agile — daily stand-up, sprint planning, retrospective, backlog grooming. Также активно применяются код-ревью, Git-flow, CI/CD и практика маленьких инкрементальных задач. Agile-философия направлена на гибкость, прозрачность и быструю обратную связь.
Рейтинг:
4
Сложность:
4
В Agile задачи обычно проходят стадии: Backlog, Ready, In Progress, In Review, In Testing, Done. Каждая стадия означает этап жизненного цикла задачи: от идеи до полностью готовой функциональности. Scrum использует похожие статусы в рамках спринта. Kanban опирается на поток: задача перемещается справа налево, пока не будет завершена. Эти статусы помогают управлять работой, контролировать загрузку команды и обеспечивать прозрачность процессов.
Рейтинг:
5
Сложность:
6
GIL (Global Interpreter Lock) — это глобальная блокировка интерпретатора в CPython, которая позволяет одновременно исполняться только одному потоку Python-байткода. Из-за этого многопоточность в Python не ускоряет CPU-ёмкие задачи, так как потоки вынуждены по очереди получать GIL и выполнять код. Однако для I/O-операций потоки всё ещё полезны: когда поток блокируется на ввод-выводе, GIL освобождается, и другой поток может выполняться. Для обхода ограничений GIL используют многопроцессность (multiprocessing), нативные расширения на C или асинхронность (asyncio) для I/O-сценариев.
Рейтинг:
5
Сложность:
6
GIL не защищает ваши данные — он защищает только внутренние структуры CPython. Потоки по-прежнему могут читать и изменять общие объекты почти одновременно, вызывая race conditions. Поэтому для корректного доступа к shared state используют Lock, RLock, Semaphore, Event, очереди сообщений и другие инструменты. Эти примитивы обеспечивают безопасную последовательность выполнения и гарантируют консистентность данных.
Рейтинг:
3
Сложность:
8
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
5