Python

Вопросы Python на собеседовании

На Python-собеседовании смотрят, умеете ли вы объяснять базовые конструкции и писать простой понятный код. От новичка не ждут знания всего языка, но ждут уверенности в типах, коллекциях, функциях, ошибках и работе с файлами

Готовьтесь так: на каждый вопрос держите короткое объяснение, пример кода и одну типичную ошибку

Типы и базовый синтаксис

Частые вопросы:

  • Какие базовые типы данных есть в Python
  • Чем список отличается от кортежа
  • Что такое None
  • Чем is отличается от ==
  • Как работает условие if value
  • Что такое срезы

Пример ответа про is и ==:

== сравнивает значения, а is проверяет, один ли это объект в памяти. Для проверки None обычно используют is None, потому что нас интересует именно специальное значение отсутствия

Код:

name = None

if name is None:
    print("Имя не указано")

Такой ответ показывает не только знание оператора, но и привычный стиль Python

По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы

По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы

Списки, словари и множества

Коллекции — основа большинства задач

Что повторить:

  • list, tuple, dict, set
  • append, extend, pop
  • проверка ключа через in
  • метод get
  • проход по items
  • удаление дубликатов
  • list comprehension

Пример ответа про словарь:

Словарь удобен, когда нужно быстро получать значение по ключу. Например, если есть id пользователя, словарь поможет найти его карточку без перебора всего списка

Код:

users = {
    1: "Anna",
    2: "Ivan",
}

print(users.get(2, "Пользователь не найден"))

Покажите, что понимаете разницу между списком для порядка и словарем для доступа по ключу

Функции

Частые вопросы:

  • Чем return отличается от print
  • Что такое аргументы по умолчанию
  • Почему опасен пустой список как аргумент по умолчанию
  • Что такое args и *kwargs
  • Что такое область видимости
  • Для чего нужны lambda-функции

Классический пример:

def add_item(item, items=[]):
    items.append(item)
    return items

Сильное объяснение:

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

Исправление:

def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

Ошибки и файлы

Что могут спросить:

  • Как работает try/except
  • Когда использовать finally
  • Зачем нужен with open
  • Как обработать отсутствие файла
  • Почему плохо писать пустой except

Пример:

try:
    with open("data.txt", "r", encoding="utf-8") as file:
        lines = file.readlines()
except FileNotFoundError:
    lines = []

Ответ вслух:

with автоматически закрывает файл, даже если внутри блока возникнет ошибка. А FileNotFoundError я обрабатываю отдельно, чтобы не скрыть другие проблемы

ООП в Python

Для junior часто достаточно базы

Вопросы:

  • Что такое класс и объект
  • Для чего нужен __init__
  • Что такое self
  • Чем атрибут объекта отличается от атрибута класса
  • Что такое метод
  • Когда наследование может усложнить код

Пример:

class User:
    def __init__(self, name):
        self.name = name

    def greet(self):
        return f"Привет, {self.name}"

Объяснение:

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

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

Подготовьте такие задачи руками:

  • посчитать частоту слов
  • убрать дубликаты из списка
  • найти максимальное число без max
  • развернуть строку
  • сгруппировать список слов по первой букве
  • прочитать файл и посчитать непустые строки
  • проверить, является ли строка палиндромом

Пример частоты слов:

words = ["cat", "dog", "cat"]
counts = {}

for word in words:
    counts[word] = counts.get(word, 0) + 1

print(counts)

На интервью объясните, что get возвращает текущее количество или ноль для нового слова

Как объяснять код на Python вслух

На интервью важно показать не только решение, но и стиль мышления

Пример задачи:

Есть список слов. Нужно посчитать, сколько раз встречается каждое слово

Хороший ход ответа:

Для подсчета подойдет словарь. Ключом будет слово, значением - количество. Я пройду по списку один раз и для каждого слова увеличу счетчик. Если слова еще нет в словаре, возьму ноль через get

Код:

counts = {}

for word in words:
    counts[word] = counts.get(word, 0) + 1

Такой ответ показывает выбор структуры, алгоритм и понимание метода get

Типичные ошибки новичков

  • путают print и return
  • используют изменяемый список как аргумент по умолчанию
  • не понимают разницу между is и ==
  • перебирают словарь только по ключам, когда нужны и ключи, и значения
  • ловят все ошибки через пустой except
  • забывают закрывать файл или не используют with
  • не проверяют пустой список в задачах

Повторите эти темы с кодом. Большая часть junior-вопросов строится именно вокруг таких ловушек

Как отвечать, если опыта мало

Для Python junior нормально не знать продвинутые темы глубоко. Но нужно уверенно показать базу

Пример:

С декораторами я пока работал мало, но понимаю идею: это функция, которая оборачивает другую функцию и добавляет поведение. Например, можно добавить логирование вызова. В рабочих задачах я пока больше писал код со списками, словарями, файлами и простыми функциями

Такой ответ честный и при этом не обнуляет вашу подготовку

Что подготовить руками

Сделайте маленький файл и решите 10 задач без подсказок

  • развернуть строку
  • посчитать гласные
  • удалить дубликаты
  • найти частоту слов
  • сгруппировать слова по длине
  • прочитать файл
  • обработать отсутствие файла
  • отсортировать список словарей
  • написать функцию с *args
  • исправить функцию с изменяемым аргументом по умолчанию

Если можете объяснить каждую задачу вслух, собеседование пройдет спокойнее

Как подготовить ответы с примерами

Для Python важно иметь несколько маленьких объяснений, которые вы произносите уверенно

Про return и print:

print выводит значение на экран, а return возвращает результат из функции. Если функция должна использоваться дальше в программе, нужен return

Про словарь:

Словарь помогает быстро получать значение по ключу. Например, если у меня есть id пользователя, я могу не перебирать весь список, а обратиться к users[id]

Про ошибки:

Я стараюсь ловить конкретную ошибку, а не все подряд. Если файл не найден, обрабатываю FileNotFoundError. Если ловить все ошибки пустым except, можно скрыть настоящую проблему

Мини-план подготовки на вечер

Если интервью скоро, сделайте так:

  1. Напишите 5 задач на списки и строки
  2. Повторите словари и get
  3. Разберите пример с изменяемым аргументом по умолчанию
  4. Напишите чтение файла через with open
  5. Проговорите вслух, чем is отличается от ==

Этого достаточно, чтобы убрать большую часть неловких пауз на junior-вопросах

Часто задаваемые вопросы

Что повторить в первую очередь?

Типы, списки, словари, функции, ошибки, файлы, простые задачи на строки и коллекции

Нужно ли знать декораторы?

Для junior полезно понимать идею, но чаще важнее уверенная база и практика задач

Как отвечать, если не знаю точный метод?

Скажите, как бы решили задачу простыми средствами. Потом можно уточнить, что в реальном коде проверили бы название метода в документации

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x