Вопросы на собеседовании в Татнефть Цифровые Технологии
10 вопросов с собеседований в Татнефть Цифровые Технологии
10 вопросов422 компании353 технологии
Что проверяют на интервью
Как устроена подборка
Подборка объединяет вопросы, отмеченные на этапах интервью в Татнефть Цифровые Технологии. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: Python, python, asyncio.
Опишите реальные границы сервисов, владение данными и контракты взаимодействия. Объясните, где требовался синхронный ответ, а где использовались события и очереди.
Ограничить ожидание корутины можно через await asyncio.waitfor(coro(), timeout=5). В Python 3.11+ доступен также контекстный менеджер asyncio.timeout(5).
В asyncio корутины кооперативно делят поток event loop: задача выполняется до приостановки, после чего цикл может продвинуть другие готовые задачи или дождаться событий I/O.
await coroutine выполняет корутину в текущей задаче и ждёт её результата. createtask создаёт отдельную Task, позволяя ей продвигаться конкурентно с другими задачами event loop.
Асинхронный timeout ждёт завершения задачи до дедлайна, затем запрашивает отмену и корректно освобождает ресурсы. Это кооперативная отмена, а не принудительное завершение потока.
time.sleep и синхронный requests блокируют поток event loop. Таймер asyncio.waitfor не сможет вовремя обработать отмену, поэтому такой timeout не гарантирует остановку по настенным часам.
Для точного скользящего окна храните очередь времён допущенных вызовов по clientid. Перед новым вызовом удалите события старше окна и сравните оставшееся количество с limit.
Блокирующая для event loop операция долго не возвращает ему управление. Это бывает не только при I/O: построение списка из миллиарда элементов также занимает поток и огромный объём памяти.
aiohttp интегрирован с event loop и отдаёт управление на ожидании сетевого I/O. requests предоставляет синхронный интерфейс и удерживает вызывающий поток до завершения операции.