Встречается на собеседованиях • сегодня

Приведи пример сложной задачи на проекте

Одна из сложных задач, с которой я столкнулся — реализация асинхронного парсинга большого объема данных с ограничениями по частоте запросов.

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

Решение:
Использовал aiohttp для асинхронных запросов и asyncio.Semaphore для контроля скорости. Для отказоустойчивости добавил retry-логику и очередь задач.

python
import aiohttp
import asyncio

async def fetch(session, url, semaphore):
    async with semaphore:
        try:
            async with session.get(url) as response:
                return await response.json()
        except Exception as e:
            print(f"Error fetching {url}: {e}")
            return None

async def main(urls, max_concurrent=5):
    semaphore = asyncio.Semaphore(max_concurrent)
    async with aiohttp.ClientSession() as session:
        tasks = [fetch(session, url, semaphore) for url in urls]
        return await asyncio.gather(*tasks)

Сложности:

  • Баланс между скоростью и ограничениями API.
  • Обработка частичных сбоев без остановки всего процесса.
  • Оптимизация использования памяти при большом объеме данных.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы