Подборка объединяет вопросы, отмеченные на этапах интервью в Т-Банк. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: database, backend, api.
Проверяйте бизнес-решение на границе возраста: непосредственно до порога, в день его достижения и после. Используйте корректные даты рождения, не уходя в валидацию формы.
Найдите первую содержательную ошибку, определите упавший шаг и сравните окружение с последней успешной сборкой. Итоговая строка job failed обычно лишь следствие.
Интерфейс Browser задаёт общий контракт, чтобы клиентский код работал с Chrome и Firefox без зависимости от конкретной реализации и мог подменять браузер в тестах.
Если требуются соседние элементы, возрастающие на единицу, достаточно считать длину текущей серии и вернуть true при достижении трёх. Время O(n), память O(1).
Для конечного итерируемого объекта запоминайте элементы первого прохода, затем бесконечно повторяйте сохранённую последовательность. Пустой вход должен завершаться, иначе возникнет бесполезный бесконечный цикл.
Используйте first_dict.setdefault(key, value): метод добавляет значение только при отсутствии ключа. Существующее значение, даже None или 0, останется неизменным.
В __exit__ возвращайте True только тогда, когда тип возникшего исключения входит в заданные классы или наследуется от них. Возврат False оставляет исключение неподавленным.
Данная функция уже сортирует по последнему символу через sorted(..., key=lambda w: w[-1]). Нужно определить поведение для пустых строк: исходная версия на них вызовет IndexError.
Сделайте фабрику декоратора с единицей времени и измеряйте интервал через time.perf_counter(). Для миллисекунд умножайте секунды на 1000; finally позволит записать длительность и при исключении.
Храните результаты в словаре по ключу из аргументов и используйте wraps для сохранения метаданных функции. Простой вариант требует хешируемых аргументов и подходит для чистых синхронных функций.