Какие типы данных в Python вы знаете?
В Python есть числовые типы int, float, complex и bool, строки str, последовательности list и tuple, словари dict, множества set и frozenset, бинарные bytes и bytearray.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
В Python есть числовые типы int, float, complex и bool, строки str, последовательности list и tuple, словари dict, множества set и frozenset, бинарные bytes и bytearray.
Читать ответИзменяемый объект можно изменить на месте, сохранив его идентичность. Неизменяемый — нельзя. В Python int неизменяем: присваивание нового значения связывает имя с другим объектом.
Читать ответУточните, где и для каких задач вы использовали Python: в продукте, автоматизации, анализе данных или учебных проектах.
Читать ответОграничить ожидание корутины можно через await asyncio.waitfor(coro(), timeout=5). В Python 3.11+ доступен также контекстный менеджер asyncio.timeout(5).
Читать ответВ asyncio корутины кооперативно делят поток event loop: задача выполняется до приостановки, после чего цикл может продвинуть другие готовые задачи или дождаться событий I/O.
Читать ответawait coroutine выполняет корутину в текущей задаче и ждёт её результата. createtask создаёт отдельную Task, позволяя ей продвигаться конкурентно с другими задачами event loop.
Читать ответСинхронный requests можно выполнить в рабочем потоке, чтобы не занимать event loop. Сам запрос при этом остаётся блокирующим для этого потока.
Читать ответАсинхронный timeout ждёт завершения задачи до дедлайна, затем запрашивает отмену и корректно освобождает ресурсы. Это кооперативная отмена, а не принудительное завершение потока.
Читать ответtime.sleep и синхронный requests блокируют поток event loop. Таймер asyncio.waitfor не сможет вовремя обработать отмену, поэтому такой timeout не гарантирует остановку по настенным часам.
Читать ответДля точного скользящего окна храните очередь времён допущенных вызовов по clientid. Перед новым вызовом удалите события старше окна и сравните оставшееся количество с limit.
Читать ответБлокирующая для event loop операция долго не возвращает ему управление. Это бывает не только при I/O: построение списка из миллиарда элементов также занимает поток и огромный объём памяти.
Читать ответaiohttp интегрирован с event loop и отдаёт управление на ожидании сетевого I/O. requests предоставляет синхронный интерфейс и удерживает вызывающий поток до завершения операции.
Читать ответ