Топ-10 вопросов о переменных и типах данных на собеседовании

Топ-10 вопросов о переменных и типах данных на собеседовании Переменные и типы данных

Привет! Ты готовишься к собеседованию на Junior Python Developer? Знание переменных и типов данных — это основа, которую проверяют на любом собеседовании. Я собрал для тебя 10 самых частых вопросов и ответов на них.

В этой статье мы разберём:

  • 10 вопросов с собеседований
  • Ответы с примерами кода
  • Объяснения, почему это важно

Что нужно знать перед началом

Для подготовки тебе понадобится:

  • Базовое понимание Python
  • Знание переменных, типов данных, изменяемости

Совет: Не просто читай ответы, а проговаривай их вслух. Это поможет запомнить.

Основная часть

Вопрос 1. Какие типы данных в Python являются изменяемыми (mutable), а какие — неизменяемыми (immutable)?

Ответ:

Изменяемые (mutable)Неизменяемые (immutable)
listint
dictfloat
setstr
(пользовательские классы)bool
tuple
None

Пример:

# Неизменяемый (int)
x = 5
y = x
y = 10
print(x)   # 5 (не изменился)

# Изменяемый (list)
a = [1, 2, 3]
b = a
b.append(4)
print(a)   # [1, 2, 3, 4] (изменился)

Совет: Запомни: listdictset — изменяемые. Всё остальное — неизменяемые.

Вопрос 2. Что такое динамическая типизация в Python?

Ответ:

В Python переменная не имеет фиксированного типа. Она просто ссылается на объект. Тип определяется во время выполнения программы.

Пример:

x = 10
print(type(x))   # <class 'int'>

x = "hello"
print(type(x))   # <class 'str'>

x = [1, 2, 3]
print(type(x))   # <class 'list'>

Совет: Это даёт гибкость, но требует внимательности — ошибки типов выявляются позже.

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

Ответ:

  • == — сравнивает значения объектов
  • is — сравнивает идентичность объектов (адреса в памяти)

Пример:

a = [1, 2, 3]
b = [1, 2, 3]
c = a

print(a == b)   # True (значения равны)
print(a is b)   # False (разные объекты)
print(a is c)   # True (один и тот же объект)

Совет: Для проверки на None всегда используй is None.

Вопрос 4. Что такое None в Python?

Ответ:

None — это специальное значение, обозначающее «ничего», «отсутствие значения». Имеет тип NoneType.

Пример:

x = None
if x is None:
    print("x равен None")

Совет: None не равен 0"" или False. Это отдельный тип.

Вопрос 5. Как преобразовать строку в число и число в строку?

Ответ:

  • int() — преобразует в целое число
  • float() — преобразует в дробное число
  • str() — преобразует в строку

Пример:

# Строка → число
s = "123"
num = int(s)

# Число → строка
n = 456
s = str(n)

# Дробное → целое
f = 3.99
i = int(f)   # 3 (не округляет, а отбрасывает)

Совет: int() не округляет, а отбрасывает дробную часть.

Вопрос 6. Почему в Python 0.1 + 0.2 не равно 0.3?

Ответ:

Из-за особенностей хранения чисел с плавающей точкой в двоичной системе (IEEE 754). Некоторые десятичные дроби не могут быть точно представлены.

Пример:

print(0.1 + 0.2)   # 0.30000000000000004
print(0.1 + 0.2 == 0.3)   # False

Совет: Для сравнения float используй math.isclose() или допуск.

import math
print(math.isclose(0.1 + 0.2, 0.3))   # True

Вопрос 7. Что такое *args и **kwargs?

Ответ:

  • *args — собирает все позиционные аргументы в кортеж
  • **kwargs — собирает все именованные аргументы в словарь

Пример:

def func(*args, **kwargs):
    print(f"args: {args}")
    print(f"kwargs: {kwargs}")

func(1, 2, 3, a=4, b=5)
# args: (1, 2, 3)
# kwargs: {'a': 4, 'b': 5}

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

Вопрос 8. Как скопировать список, чтобы изменения не затрагивали оригинал?

Ответ:

  • list.copy()
  • Срез [:]
  • list(original)

Пример:

original = [1, 2, 3]

# Способ 1
copy1 = original.copy()

# Способ 2
copy2 = original[:]

# Способ 3
copy3 = list(original)

copy1.append(4)
print(original)   # [1, 2, 3] (не изменился)

Важно: Для вложенных списков нужно использовать copy.deepcopy().

Вопрос 9. Как поменять местами значения двух переменных без третьей переменной?

Ответ:

Используй множественное присваивание:

a = 5
b = 10
a, b = b, a
print(a, b)   # 10 5

Совет: Это работает благодаря тому, что Python сначала вычисляет все значения справа, а потом присваивает.

Вопрос 10. Какая разница между list и tuple?

Ответ:

Характеристикаlisttuple
ИзменяемостьДа (mutable)Нет (immutable)
Синтаксис[1, 2, 3](1, 2, 3)
ИспользованиеЕсли данные могут менятьсяЕсли данные не должны меняться

Пример:

# list (изменяемый)
my_list = [1, 2, 3]
my_list[0] = 10   # OK

# tuple (неизменяемый)
my_tuple = (1, 2, 3)
# my_tuple[0] = 10   # TypeError

Совет: Используй tuple для ключей словаря (они неизменяемы) и для данных, которые не должны меняться.

Задачи для закрепления

Задача 1. Что выведет код?

a = [1, 2, 3]
b = a
b.append(4)
print(a)

Задача 2. Что выведет код?

x = 5
y = x
y = 10
print(x)

Задача 3. Как проверить, что переменная равна None?

Задача 4. Как преобразовать строку "3.14" в целое число?

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

Ответы:

Задача 1.

# [1, 2, 3, 4] (a и b ссылаются на один список)

Задача 2.

# 5 (числа неизменяемы)

Задача 3.

if x is None:
    print("x равен None")

Задача 4.

int(float("3.14"))   # 3

Задача 5.

# == — сравнение значений
# is — сравнение идентичности (адресов в памяти)

Частые ошибки на собеседовании

Ошибка 1: == вместо is None

Для проверки на None всегда используй is None.

Ошибка 2: Путаница между list и tuple

Запомни: list — изменяемый, tuple — неизменяемый.

Ошибка 3: Сравнение float напрямую

Используй math.isclose() или допуск.

Шпаргалка для собеседования

ТемаКлючевой ответ
Изменяемые типыlistdictset
Неизменяемые типыintstrtuplefloatboolNone
Динамическая типизацияПеременная не имеет фиксированного типа
NoneОтсутствие значения
== vs is== — значения, is — идентичность
Копирование списка.copy()[:]list()
Обмен значенийa, b = b, a

КВИЗ

Заключение

Сегодня мы:

  • Разобрали 10 вопросов с собеседований
  • Подготовили ответы с примерами
  • Закрепили ключевые понятия
  • Разобрали частые ошибки

Удачи на собеседовании!

Что дальше?

Оцените статью
IMI-DS - PYTHON LERNEN
Содержание
Оглавление ×