Привет! Ты готовишься к собеседованию на Junior Python Developer? Знание переменных и типов данных — это основа, которую проверяют на любом собеседовании. Я собрал для тебя 10 самых частых вопросов и ответов на них.
В этой статье мы разберём:
- 10 вопросов с собеседований
- Ответы с примерами кода
- Объяснения, почему это важно
- Что нужно знать перед началом
- Основная часть
- Вопрос 1. Какие типы данных в Python являются изменяемыми (mutable), а какие — неизменяемыми (immutable)?
- Вопрос 2. Что такое динамическая типизация в Python?
- Вопрос 3. В чём разница между == и is?
- Вопрос 4. Что такое None в Python?
- Вопрос 5. Как преобразовать строку в число и число в строку?
- Вопрос 6. Почему в Python 0.1 + 0.2 не равно 0.3?
- Вопрос 7. Что такое *args и **kwargs?
- Вопрос 8. Как скопировать список, чтобы изменения не затрагивали оригинал?
- Вопрос 9. Как поменять местами значения двух переменных без третьей переменной?
- Вопрос 10. Какая разница между list и tuple?
- Задачи для закрепления
- Частые ошибки на собеседовании
- Ошибка 1: == вместо is None
- Ошибка 2: Путаница между list и tuple
- Ошибка 3: Сравнение float напрямую
- Шпаргалка для собеседования
- КВИЗ
- Заключение
- Что дальше?
Что нужно знать перед началом
Для подготовки тебе понадобится:
- Базовое понимание Python
- Знание переменных, типов данных, изменяемости
Совет: Не просто читай ответы, а проговаривай их вслух. Это поможет запомнить.
Основная часть
Вопрос 1. Какие типы данных в Python являются изменяемыми (mutable), а какие — неизменяемыми (immutable)?
Ответ:
| Изменяемые (mutable) | Неизменяемые (immutable) |
|---|---|
list | int |
dict | float |
set | str |
| (пользовательские классы) | 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] (изменился)Совет: Запомни:
list,dict,set— изменяемые. Всё остальное — неизменяемые.
Вопрос 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?
Ответ:
| Характеристика | list | tuple |
|---|---|---|
| Изменяемость | Да (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() или допуск.
Шпаргалка для собеседования
| Тема | Ключевой ответ |
|---|---|
| Изменяемые типы | list, dict, set |
| Неизменяемые типы | int, str, tuple, float, bool, None |
| Динамическая типизация | Переменная не имеет фиксированного типа |
None | Отсутствие значения |
== vs is | == — значения, is — идентичность |
| Копирование списка | .copy(), [:], list() |
| Обмен значений | a, b = b, a |
КВИЗ
Заключение
Сегодня мы:
- Разобрали 10 вопросов с собеседований
- Подготовили ответы с примерами
- Закрепили ключевые понятия
- Разобрали частые ошибки
Удачи на собеседовании!








