Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
Все статьи/Python

Собеседование Junior Python-разработчика: вопросы и план подготовки

40 вопросов по темам, которые чаще всего разбирают на техническом собеседовании Junior Python-разработчика: структуры данных, ООП, асинхронность, тестирование и типичные ловушки.

Константин Потапов15 марта 2026 г.18 мин
Обложка статьи «Собеседование Junior Python-разработчика: вопросы и план подготовки»
Оглавление
  • Почему именно эти вопросы
  • Базовые типы и структуры данных
  • Строки и встроенные функции
  • ООП
  • Функции и замыкания
  • Генераторы и итераторы
  • Асинхронность
  • Обработка ошибок
  • Тестирование
  • Типы и аннотации
  • Производительность и инструменты
  • Практические задачи
  • Как готовиться дальше

На этой странице

  • Почему именно эти вопросы
  • Базовые типы и структуры данных
  • Строки и встроенные функции
  • ООП
  • Функции и замыкания
  • Генераторы и итераторы
  • Асинхронность
  • Обработка ошибок
  • Тестирование
  • Типы и аннотации
  • Производительность и инструменты
  • Практические задачи
  • Как готовиться дальше

Почему именно эти вопросы

Список закрывает темы, которые регулярно всплывают на техническом собеседовании Junior Python-разработчика: изменяемые и неизменяемые объекты, ООП, генераторы, декораторы, асинхронность. Джуниоры чаще срезаются не на сложных алгоритмах, а именно на этих базовых вещах — если объяснение звучит неуверенно, интервьюер обычно копает глубже именно здесь.

Каждый вопрос — с коротким объяснением, которое можно проверить и воспроизвести своими словами на собеседовании. Пройдитесь по списку и отметьте, где ответ дался не сразу — это и есть тема для повторения.


Базовые типы и структуры данных

1. В чём разница между list и tuple?

list — изменяемый (mutable), tuple — неизменяемый (immutable). Это влияет на хеширование: tuple можно использовать как ключ словаря, list — нет.

2. Как работает dict в Python 3.7+?

С Python 3.7 словари гарантированно сохраняют порядок вставки. Внутри — хеш-таблица с открытой адресацией. Среднее время операций — O(1).

3. В чём разница между is и ==?

== сравнивает значения, is сравнивает идентичность объектов (один ли это объект в памяти).

4. Что такое None, True, False в Python?

Синглтоны — существуют в единственном экземпляре. Поэтому правильно писать if x is None, а не if x == None.

5. Как устроен set?

Неупорядоченная коллекция уникальных элементов. Под капотом — хеш-таблица. Поиск и вставка — O(1). Элементы должны быть хешируемыми.

Подробный разбор — в теме «Базовые типы данных» Python-курса.


Строки и встроенные функции

6. Почему конкатенация строк в цикле неэффективна?

Строки иммутабельны — каждая конкатенация создаёт новый объект. Правильный подход — ''.join(list).

7. Чем f-string лучше .format()?

Быстрее и читаемее. f-string вычисляется в момент определения, .format() — в момент вызова. В Python 3.12+ f-string ещё более гибкие.

Больше примеров — в теме «Строки и форматирование».


ООП

8. Что такое __init__ и __new__?

__new__ создаёт экземпляр класса, __init__ его инициализирует. В 99% случаев переопределяют только __init__. __new__ нужен при работе с иммутабельными типами или паттерном Singleton.

9. Что такое MRO (Method Resolution Order)?

Порядок, в котором Python ищет метод в иерархии классов при множественном наследовании. Использует алгоритм C3 linearization. Посмотреть можно через ClassName.__mro__.

10. В чём разница между @classmethod и @staticmethod?

  • @classmethod получает класс (cls) первым аргументом — используется для фабричных методов
  • @staticmethod не получает ни класс, ни экземпляр — обычная функция в пространстве имён класса

11. Что такое __slots__?

Оптимизация памяти: запрещает создание __dict__ у экземпляра, фиксирует список атрибутов. Снижает потребление памяти на 40–50% при большом количестве объектов.

12. Что такое дескриптор?

Объект, реализующий __get__, __set__ или __delete__. Именно на дескрипторах работают property, classmethod, staticmethod.

Разбор с примерами кода — в теме «ООП» Python-курса.


Функции и замыкания

13. Что такое замыкание (closure)?

Функция, которая запоминает переменные из внешней области видимости, даже после завершения этой функции.

14. Что такое декоратор и как написать свой?

Функция, которая принимает функцию и возвращает новую функцию. Используется для логирования, кеширования, авторизации.

15. Что делает functools.wraps?

Копирует метаданные оригинальной функции (__name__, __doc__) на функцию-обёртку. Без него my_func.__name__ вернёт 'wrapper'.

16. Типичная ловушка: мутабельный дефолтный аргумент

Полный разбор замыканий и декораторов — в теме «Замыкания и декораторы».


Генераторы и итераторы

17. Чем генератор отличается от списка?

Генератор вычисляет значения лениво (по одному), не хранит все элементы в памяти. Идеален для больших последовательностей.

18. Что такое yield from?

Делегирует итерацию вложенному генератору. Появился в Python 3.3.

19. Что такое send() у генератора?

Позволяет передавать значения внутрь генератора. Основа для корутин до появления async/await.

Больше практики — в теме «Итераторы и генераторы».


Асинхронность

20. В чём разница между threading и asyncio?

  • threading — настоящие потоки ОС, но GIL не даёт запускать Python-код параллельно (только I/O параллельно)
  • asyncio — один поток, кооперативная многозадачность, эффективнее для I/O-bound задач

21. Когда использовать asyncio, а когда threading?

  • asyncio — для I/O-bound задач (HTTP-запросы, работа с БД, файловый ввод-вывод)
  • threading или multiprocessing — для CPU-bound задач

22. Что такое event loop?

Цикл обработки событий — ядро asyncio. Поочерёдно выполняет корутины, когда они ожидают I/O-операций.

23. Что делает asyncio.gather()?

Запускает несколько корутин конкурентно и ждёт завершения всех.

Разбор event loop и корутин с примерами — в теме «Асинхронный Python».


Обработка ошибок

24. В чём разница между Exception и BaseException?

BaseException — базовый класс всех исключений, включая KeyboardInterrupt и SystemExit. Exception — базовый класс для обычных ошибок. Перехватывать BaseException стоит только в крайних случаях.

25. Что такое finally?

Блок, который выполняется всегда — даже при исключении или return. Используется для освобождения ресурсов.

26. Как правильно логировать исключения?

Больше о видах исключений и обработке — в теме «Исключения».


Тестирование

27. В чём разница между unittest и pytest?

pytest лаконичнее (нет классов, нет self), мощнее (фикстуры, параметризация), лучше читается. unittest стандартная библиотека, не нужно ставить.

28. Что такое фикстура в pytest?

Функция, которая подготавливает окружение для теста. Управляет созданием и удалением ресурсов.

29. Что такое mock и когда его использовать?

Заглушка для внешних зависимостей (API, БД, файловая система). Позволяет тестировать логику в изоляции.

Подробнее о fixtures, параметризации и моках — в теме «Тестирование в Python».


Типы и аннотации

30. Зачем нужны type hints?

Документируют интерфейс функции, помогают IDE и линтерам находить ошибки, улучшают читаемость. Не влияют на выполнение программы — только подсказки.

31. Чем Optional[X] отличается от X | None?

Это одно и то же, начиная с Python 3.10. X | None — более современный синтаксис.

32. Что такое TypeVar?

Переменная типа для обобщённых функций.

Больше про систему типов — в теме «Система типов».


Производительность и инструменты

33. Что такое GIL и как он влияет на многопоточность?

Global Interpreter Lock — мьютекс, который позволяет только одному потоку исполнять Python-байткод в момент времени. Это делает CPU-bound задачи неэффективными в threading.

34. Как профилировать Python-код?

  • cProfile — встроенный профайлер
  • py-spy — low-overhead sampling profiler для production
  • memory_profiler — профилирование памяти

35. Что такое __pycache__ и .pyc файлы?

Скомпилированный байткод Python. Ускоряет повторный запуск скрипта — не нужно парсить исходник заново.

Больше про профилирование — в теме «Профилирование и оптимизация».


Практические задачи

36. Реверс строки

37. Найти дубликаты в списке

38. FizzBuzz

39. Проверить, является ли строка палиндромом

40. Flatten вложенного списка


Как готовиться дальше

Знание ответов на эти вопросы — минимум. Интервьюеры часто задают follow-up: "А что если... ?", "Почему именно так?", "Что будет, если использовать в многопоточном контексте?"

Дальнейшие шаги:

  1. Пройдите тест по Python — 20 случайных вопросов с уровнями Junior/Middle/Senior и разбором каждого ответа. Тест покажет, какие темы из этого списка стоит повторить в первую очередь.
  2. Потренируйте устный ответ на голосовом мок-интервью — там нужно не просто знать ответ, а сформулировать его вслух и получить разбор сразу после вопроса.

Продолжить по теме

Python · 13 мин

Собеседование Middle Python-разработчика: темы, вопросы и примеры ответов

Python · 12 мин

Собеседование Senior Python-разработчика: архитектура, код и лидерство

Python · 8 мин

Мок-собеседование Python-разработчика: сценарий, вопросы и разбор

К списку статей