Тех собес на middle-senior Data Инженер в ****

Доступно с премиум-подпиской

Оформите премиум-подписку, чтобы получить доступ к:

  • Фильтрации по компаниям
  • Названиям компаний в интервью
  • Видеозаписям собеседований в категории Data Инженер

Посмотреть видео в категории

(2025-10-27)

Теоретический скрининг

  • База python:
    • Типы данных, структуры данных.
    • Классы и объекты.
    • Сложность вставок в словари и списки, краевые случаи (например, когда вставка в список != O(1) а O(n)).
    • Модуль Collections и дополнительные структуры данных.
    • ООП — база по ООП, интерфейсы и абстракции.
    • Декораторы.
    • Функции генераторы и итераторы.
    • Паттерны проектирования.
  • Data:
    • Что такое DWH?
    • Что такое Data Lake?
    • Версионирование данных?
    • Что в моем понятии датасет?
    • КД.

Задача 1

  • Описание задачи: Есть сервис к которому обращаются пользователи, у каждого уникальный id. Нужно написать тротлер который возвращает True если пользователь обращался не более чем max_requests_per_user раз за последние num_recent_requests_to_consider запросов, иначе, если за последние num_recent_requests_to_consider было max_requests_per_user или более обращений с этим же id необходимо вернуть False. Считаем что если мы отклонили запрос то мы не учитываем его при обработке.

  • Предоставленный шаблон кода:

    class Throttler:
        def __init__(
                    self,
                    max_requests_per_user: int,
                    num_recent_requests_to_consider: int
                    ) -> None:
            assert(max_requests_per_user >= 1)
            assert(num_recent_requests_to_consider >= max_requests_per_user)
            self.max_requests_per_user = max_requests_per_user
            self.num_recent_requests_to_consider = num_recent_requests_to_consider
        def throttle(self, user_id: int) -> bool:
            pass
  • Примеры использования (asserts):

    if __name__ == "__main__" :
        throttler = Throttler(max_requests_per_user = 1, num_recent_requests_to_consider = 3)
        assert( throttler.throttle(1))
        assert(not throttler.throttle(1))
        assert(not throttler.throttle(1))
        assert( throttler.throttle(2))
        assert(not throttler.throttle(1))
        assert(not throttler.throttle(2))
        assert( throttler.throttle(3))
        assert( throttler.throttle(4))
        assert( throttler.throttle(1))
        assert(not throttler.throttle(3))
        assert(not throttler.throttle(4))
        assert(not throttler.throttle(1))
        print("ok")