CCareerLab
Главная/База знаний/Собеседование/50 вопросов на собеседовании Junior Python с ответами (2026)
Собеседование
Новоеjunior

50 вопросов на собеседовании Junior Python с ответами (2026)

50 реальных вопросов на собеседовании Python Junior с развёрнутыми ответами. Базовый синтаксис, ООП, работа с данными, async — готовьтесь эффективно.

Время чтения7 минут
Обновленомай 2026 г.
Уровеньjunior
Главная мысль
50 реальных вопросов на собеседовании Python Junior с развёрнутыми ответами. Базовый синтаксис, ООП, работа с данными, async — готовьтесь эффективно.

Собеседование Python Junior — это прежде всего проверка понимания языка, а не знания синтаксиса наизусть. Ниже — 50 вопросов, которые реально задают на интервью, с краткими и понятными ответами.

Как подготовиться к собеседованию junior

Базовый Python (вопросы 1–15)

1. Чем list отличается от tuple?
List — изменяемый (mutable), tuple — неизменяемый (immutable). Tuple быстрее и занимает меньше памяти, используется для данных, которые не должны меняться.

2. Что такое dict и как он работает внутри?
Словарь — хеш-таблица. Ключи хешируются, и по хешу происходит поиск за O(1). Ключи должны быть хешируемыми (immutable).

3. В чём разница между `==` и `is`?
`==` сравнивает значения, `is` — идентичность объектов (один ли это объект в памяти). `a == b` может быть True, даже если `a is not b`.

4. Что такое GIL?
Global Interpreter Lock — мьютекс, который позволяет только одному потоку выполнять байт-код Python одновременно. Из-за GIL многопоточность в Python не ускоряет CPU-bound задачи. Для параллелизма используют multiprocessing или async.

5. Что такое декоратор?
Функция, которая принимает другую функцию и возвращает изменённую версию. Используется для логирования, кеширования, проверки прав. Синтаксис: `@decorator`.

6. Что такое генератор? Чем отличается от списка?
Генератор — объект, который возвращает элементы по одному при вызове `next()`. Не хранит все элементы в памяти. Создаётся через `yield` или генераторное выражение `(x for x in range(10))`.

7. Что такое list comprehension?
Краткий синтаксис создания списка: `[x*2 for x in range(10) if x % 2 == 0]`. Быстрее обычного цикла с `append`.

8. Как работает `args` и `kwargs`?
`args` принимает произвольное количество позиционных аргументов как кортеж. `*kwargs` — произвольное количество именованных аргументов как словарь.

9. Что такое `lambda`?
Анонимная функция в одну строку: `lambda x, y: x + y`. Используется для простых функций, чаще всего как аргумент в `map`, `filter`, `sorted`.

10. Что такое замыкание (closure)?
Функция, которая «помнит» переменные из своего внешнего окружения, даже когда это окружение уже завершило выполнение.

11. Что делает `__init__`?
Инициализирует объект при создании. Вызывается автоматически при `MyClass()`. Не создаёт объект — это делает `__new__`.

12. В чём разница между `append` и `extend`?
`append` добавляет один элемент (в том числе список как один элемент). `extend` разворачивает итерируемый объект и добавляет каждый элемент по отдельности.

13. Как скопировать список?
`copy()`, срез `a[:]`, `list(a)` — поверхностная копия. `copy.deepcopy(a)` — глубокая копия (копирует вложенные объекты).

14. Что такое mutable и immutable типы?
Mutable — изменяемые после создания: list, dict, set. Immutable — неизменяемые: int, float, str, tuple, frozenset.

15. Что такое `None` в Python?
Специальный объект типа `NoneType`, обозначает отсутствие значения. Проверяется через `is None`, не через `== None`.

ООП в Python (вопросы 16–25)

16. Четыре принципа ООП?
Инкапсуляция (скрытие данных), наследование (дочерний класс получает атрибуты родителя), полиморфизм (один интерфейс — разные реализации), абстракция (скрытие деталей реализации).

17. Что такое `@classmethod` и `@staticmethod`?
`@classmethod` получает класс как первый аргумент (`cls`), не экземпляр. `@staticmethod` не получает ни класс, ни экземпляр — обычная функция в пространстве имён класса.

18. Что такое `@property`?
Декоратор, позволяющий вызывать метод как атрибут. Используется для геттеров и сеттеров с валидацией.

19. Что такое MRO (Method Resolution Order)?
Порядок, в котором Python ищет методы при множественном наследовании. Используется алгоритм C3-линеаризации. Посмотреть: `MyClass.__mro__`.

20. Что такое `__str__` и `__repr__`?
`__str__` — «человекочитаемое» представление, вызывается через `str()` и `print()`. `__repr__` — «техническое» представление для отладки, вызывается через `repr()`.

21. Что такое абстрактный класс?
Класс с абстрактными методами, которые обязаны переопределить дочерние классы. Создаётся через `ABC` из модуля `abc`. Нельзя инстанциировать напрямую.

22. Чем `__slots__` отличается от обычного класса?
`__slots__` фиксирует набор атрибутов экземпляра, запрещая динамическое добавление. Экономит память, так как не создаётся `__dict__` для каждого объекта.

23. Что такое dataclass?
Декоратор `@dataclass` автоматически генерирует `__init__`, `__repr__`, `__eq__` и другие методы на основе аннотаций типов. Удобен для структур данных без поведения.

24. Как реализовать паттерн Singleton в Python?
Через `__new__`: если экземпляр уже создан — возвращать его. Или через декоратор, или через модуль (модуль в Python — Singleton по природе).

25. Что такое метакласс?
Класс, экземпляром которого является другой класс. Используется для изменения поведения при создании класса. Базовый метакласс — `type`.

Работа с данными и инструменты (вопросы 26–35)

26. Что такое `map`, `filter`, `reduce`?
`map(func, iterable)` — применяет функцию к каждому элементу. `filter(func, iterable)` — оставляет элементы, где функция вернула True. `reduce(func, iterable)` — последовательно применяет функцию, сворачивая в одно значение (из `functools`).

27. Как работает `sorted` и `sort`?
`sort()` — сортирует список на месте, возвращает None. `sorted()` — возвращает новый отсортированный список. Оба принимают `key=` и `reverse=`.

28. Что такое `defaultdict`?
Словарь из `collections`, у которого есть фабрика для значений по умолчанию. При обращении к несуществующему ключу создаёт его автоматически: `defaultdict(list)`.

29. Что такое `Counter`?
Класс из `collections` для подсчёта элементов. `Counter("aabbcc")` → `{'a': 2, 'b': 2, 'c': 2}`.

30. Как открыть файл безопасно?
Через контекстный менеджер `with open('file.txt', 'r') as f:` — файл автоматически закроется даже при исключении.

31. Что такое `pickle`?
Модуль для сериализации Python-объектов в байты и обратно. Важно: `pickle` небезопасен для данных из ненадёжных источников.

32. Как работать с JSON в Python?
`import json`. `json.dumps(obj)` — объект в строку. `json.loads(str)` — строка в объект. `json.dump/load` — для работы с файлами.

33. Что такое `enumerate`?
Функция, добавляющая счётчик к итерируемому: `for i, val in enumerate(lst)`. Избавляет от `range(len(lst))`.

34. Что такое `zip`?
Объединяет несколько итерируемых поэлементно: `list(zip([1,2], ['a','b']))` → `[(1,'a'), (2,'b')]`.

35. Как обработать исключение?
`try/except/else/finally`. `else` выполняется, если исключения не было. `finally` выполняется всегда. Можно ловить конкретный тип: `except ValueError as e`.

Async и продвинутые темы (вопросы 36–45)

36. Что такое `async/await`?
Синтаксис для асинхронного программирования. `async def` определяет корутину, `await` приостанавливает её до завершения другой корутины. Работает в event loop.

37. Чем asyncio отличается от threading?
asyncio — кооперативная многозадачность в одном потоке (переключение по `await`). threading — вытесняющая многозадачность, ограниченная GIL для CPU-задач.

38. Что такое `typing` и аннотации типов?
Модуль для статической типизации. `def func(x: int) -> str:` — аннотации. Python не проверяет типы в runtime, но это помогает IDE и инструментам (`mypy`).

39. Что такое `contextlib` и `contextmanager`?
Инструменты для создания контекстных менеджеров. `@contextmanager` позволяет написать менеджер через генератор с `yield`.

40. Что такое `functools.lru_cache`?
Декоратор для мемоизации — кеширует результаты функции по аргументам. Ускоряет повторные вызовы с теми же аргументами.

41. Что такое virtual environment?
Изолированное Python-окружение с собственным набором пакетов. Создаётся через `python -m venv venv`. Нужно, чтобы зависимости разных проектов не конфликтовали.

42. Что такое `requirements.txt`?
Файл со списком зависимостей проекта. `pip freeze > requirements.txt` — экспорт. `pip install -r requirements.txt` — установка.

43. Как работает `__enter__` и `__exit__`?
Методы протокола контекстного менеджера. `__enter__` вызывается при входе в `with`, `__exit__` — при выходе (в том числе при исключении).

44. Что такое дескрипторы?
Объекты, реализующие `__get__`, `__set__`, `__delete__`. Используются внутри `@property`. Позволяют контролировать доступ к атрибутам класса.

45. Что такое `__all__` в модуле?
Список имён, которые экспортируются при `from module import *`. Явно задаёт публичный интерфейс модуля.

Практические вопросы (вопросы 46–50)

46. Как проверить тип объекта?
`isinstance(obj, int)` — предпочтительно (учитывает наследование). `type(obj) == int` — строгая проверка без наследования.

47. Чем `is` отличается от `==` для строк?
Для коротких строк Python кеширует объекты (интернирование), поэтому `is` может давать True. Но это деталь реализации — всегда используйте `==` для сравнения значений строк.

48. Как найти все уникальные элементы в списке?
`list(set(lst))` — быстро, но порядок теряется. `list(dict.fromkeys(lst))` — сохраняет порядок (Python 3.7+).

49. Как отсортировать список словарей по ключу?
`sorted(lst, key=lambda x: x['age'])` или `lst.sort(key=lambda x: x['age'])`.

50. Напишите функцию, которая определяет, является ли число простым.
```python

def is_prime(n):

if n < 2:

return False

for i in range(2, int(n**0.5) + 1):

if n % i == 0:

return False

return True

```

FAQ

Насколько глубоко нужно знать Python для junior?
Уверенно — разделы 1–35 этой статьи. Async и дескрипторы — плюс, не обязательно.

Спрашивают ли алгоритмы на Python junior?
В большинстве компаний — да, базовые задачи. В продуктовых компаниях уровня Яндекс — серьёзно.

Нужно ли знать Django или FastAPI для junior Python?
Зависит от вакансии. Если позиция backend — да. Если data — нет. Смотрите требования в вакансии.

---