Подготовка к интервью

Банк вопросов с собеседований

Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.

27 вопросов 415 компаний 353 технологии

Усильте резюме перед собеседованием

Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.

Анализ резюме
Сбросить

Каталог

Результаты поиска

Найдено: 27
Теория

Что такое изменяемые и неизменяемые типы данных? Является ли int изменяемым?

Изменяемый объект можно изменить на месте, сохранив его идентичность. Неизменяемый — нельзя. В Python int неизменяем: присваивание нового значения связывает имя с другим объектом.

Читать ответ
Теория

Как устроена асинхронность в Python?

В asyncio корутины кооперативно делят поток event loop: задача выполняется до приостановки, после чего цикл может продвинуть другие готовые задачи или дождаться событий I/O.

Читать ответ
Теория

Что происходит при asyncio.create_task и чем отличается от await coroutine?

await coroutine выполняет корутину в текущей задаче и ждёт её результата. createtask создаёт отдельную Task, позволяя ей продвигаться конкурентно с другими задачами event loop.

Читать ответ
Теория

Можно ли запустить синхронный requests неблокирующе в асинхронном приложении и как это сделать?

Синхронный requests можно выполнить в рабочем потоке, чтобы не занимать event loop. Сам запрос при этом остаётся блокирующим для этого потока.

Читать ответ
Лайвкодинг

Как бы вы реализовали собственный асинхронный таймаут?

Асинхронный timeout ждёт завершения задачи до дедлайна, затем запрашивает отмену и корректно освобождает ресурсы. Это кооперативная отмена, а не принудительное завершение потока.

Читать ответ
Теория

Что произойдёт, если внутри корутины, обёрнутой в asyncio.wait_for с таймаутом, вызвать time.sleep или requests?

time.sleep и синхронный requests блокируют поток event loop. Таймер asyncio.waitfor не сможет вовремя обработать отмену, поэтому такой timeout не гарантирует остановку по настенным часам.

Читать ответ
Лайвкодинг

Реализуйте rate limiter для обработчика: у каждого клиента есть client_id, limit и interval; нужно ограничить число вызовов handler для каждого клиента в скользящем временном окне и выбрасывать RateLimitExceededError.

Для точного скользящего окна храните очередь времён допущенных вызовов по clientid. Перед новым вызовом удалите события старше окна и сравните оставшееся количество с limit.

Читать ответ
Теория

Что считается блокирующей операцией в asyncio? Является ли формирование списка из миллиарда элементов блокирующим?

Блокирующая для event loop операция долго не возвращает ему управление. Это бывает не только при I/O: построение списка из миллиарда элементов также занимает поток и огромный объём памяти.

Читать ответ
Теория

Почему aiohttp может выполнять HTTP-запросы неблокирующе, а requests — нет?

aiohttp интегрирован с event loop и отдаёт управление на ожидании сетевого I/O. requests предоставляет синхронный интерфейс и удерживает вызывающий поток до завершения операции.

Читать ответ