Подборка объединяет вопросы, отмеченные на этапах интервью в МТС. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: python, backend, devops.
Поиск по ключу в Python dict в среднем занимает O(1), а в худшем случае — O(n). Оценка предполагает приемлемое распределение хешей и обычную стоимость сравнения ключей.
Python использует динамическую типизацию: тип принадлежит объекту и проверяется во время выполнения. Имя переменной может последовательно ссылаться на объекты разных типов.
Функция уже использует линейный поиск с ранним выходом. Рефакторинг может улучшить имена и убрать повторное индексирование, но сам по себе не меняет сложность O(n).
Нужно полное определение Entity в месте создания и вызова метода, RAII-владение объектом и возврат результата callMethod. По одному forward declaration нельзя ни выполнить new Entity, ни вызвать его метод.
Используйте ROW_NUMBER с PARTITION BY id и порядком raw_dt DESC, load_id DESC. Во внешнем запросе оставьте rn = 2: это предпоследняя запись, а не предпоследняя уникальная дата.
По журналу звонков и SMS дату рождения достоверно определить нельзя. Можно ранжировать дни по необычному росту входящих поздравительных контактов, но это лишь гипотеза.
Результаты отличаются: условие в ON сохраняет все строки A, подставляя NULL для отсутствующего совпадения B; условие в WHERE отбрасывает эти строки и оставляет только id = 1.
Продажу нужно связать с категорией продукта, действовавшей в дату продажи, затем сложить price × cnt по категории. Соединение только по названию продукта размножит исторические версии.
Это вероятностная оценка совместного проживания, а не установление факта. Основной сигнал — устойчивое совпадение предполагаемой домашней локации по ночам на протяжении нескольких недель.