Вернуться в видеотеку

Собеседование python junior+ Максим и Артур. Сложная задача

Тренировочное Python-собеседование с теорией SOLID и совместным рефакторингом файлового менеджера. Разбираются границы ответственностей, обработка TXT/CSV и безопасное изменение существующего кода.

Источник: Андрей += Пронин

Открыть на YouTube

Таймлайн

Коротко о видео

Это тренировочное собеседование двух Python junior+ — Максима и Артура — в рамках подготовки студентов Яндекс Практикума, а не реальный найм. Сначала участники отвечают на вопросы о SOLID, ООП, наследовании, генерализации и композиции, затем вместе рефакторят пример файлового менеджера для подсчёта статистики TXT- и CSV-файлов. В финале интервьюеры отмечают уверенную теорию, но советуют больше практиковаться в декомпозиции кода и сначала описывать назначение методов словами.

Затронутые темы

Что взять на заметку

  • Для вопросов по SOLID стоит уметь не только расшифровать принципы, но и показать нарушение SRP на классе, который одновременно читает файл, считает статистику, работает с UI и удаляет данные.
  • Наследование следует объяснять как отношение обобщения и специализации («is-a»), а не как механическое получение методов родителя; для независимой функциональности чаще обсуждают композицию.
  • При рефакторинге файлового менеджера участники выделяют отдельно чтение файла, расчёт статистики, выбор файла пользователем и отображение результата.
  • Взаимодействие с пользователем предлагается вынести из FileStatManager: менеджер должен заниматься обработкой файла, а не запросом пути или сообщениями UI.
  • Для TXT и CSV рассматривается общий контракт обработки файла с разными реализациями подсчёта: CSV дополнительно считает столбцы, TXT — строки.
  • Перед удалением или переименованием существующих методов нужно сохранять работоспособность текущих вызовов: в обсуждаемом рабочем проекте нет тестов, а неизвестные зависимости могут находиться в большой кодовой базе.
  • Для объёмного незнакомого кода интервьюер советует сначала кратко записать назначение каждого метода, затем группировать методы по ответственности, а не пытаться удержать всю логику в памяти.

Рекомендуем посмотреть