Logo
TGCATALOG
Каталог Подборки Блог
Python Вопросы собесов - тесты

Python Вопросы собесов - тесты

Вопросы, тесты и задачи для Python собеседований.

Нет оценок
599
29.10.2026
599
29.10.2026
Нет оценок
599
29.10.2026
Безопасный переход через бот
О канале

Вопросы, тесты и задачи для Python собеседований.

Подписчиков 12,569
Тематика Технологии
Язык Русский
Ссылка t.me/python_easy_ru

Также рекомендуем

Kekaton AI | Озвучка и клон голоса
Kekaton AI | Озвучка и клон голоса
Бот

AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.

Описание

Канал с вопросами для собеседований по Python. Тесты, задачи и материалы для подготовки.

Последние посты

Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 В чем отличие изменяемые / неизменяемые? В Python все данные делятся на изменяемые (mutable) и неизменяемые (immutable) 🚩Неизменяемые (`immutable`) типы После создания их нельзя изменить! x = 10 print(id(x)) # 140735598722544 (адрес в памяти) x = x + 5 # Создаётся новый объект! print(id(x)) # 140735598722704 (новый адрес) Пример: str неизменяемая s = "hello" print(id(s)) # 140735598723664 s = s + " world" # Создаётся новая строка! print(id(s)) # 140735598724240 (новый адрес) 🚩Изменяемые (`mutable`) типы Можно менять их содержимое без создания нового объекта. lst = [1, 2, 3] print(id(lst)) # 140735598722544 lst.append(4) # Изменяем список print(id(lst)) # 140735598722544 (адрес остался тот же!) Пример: dict изменяемый d = {"name": "Alice"} print(id(d)) # 140735598723664 d["age"] = 25 # Добавляем ключ print(id(d)) # 140735598723664 (адрес не изменился!) 🚩Почему это важно? Неизменяемые объекты безопаснее для ключей dict и set d = {} d[[1, 2, 3]] = "Ошибка!" # ❌ TypeError: unhashable type: 'list' Используем tuple вместо list (он неизменяемый) d[(1, 2, 3)] = "OK" Ошибки с изменяемыми значениями по умолчанию def add_item(lst=[]): # ❌ Опасный код! lst.append(1) return lst print(add_item()) # [1] print(add_item()) # [1, 1] ❌ Список не создаётся заново! Используем None вместо списка def add_item(lst=None): if lst is None: lst = [] lst.append(1) return lst 🚩Копирование объектов (`copy()` vs `deepcopy()`) copy() делает поверхностную копию (новый объект, но старые вложенные элементы). deepcopy() делает глубокую копию (всё новое). import copy lst1 = [[1, 2, 3], [4, 5, 6]] lst2 = copy.copy(lst1) # Поверхностная копия lst2[0][0] = 99 print(lst1) # [[99, 2, 3], [4, 5, 6]] ❌ Исходный список изменился! Используем deepcopy() для полной независимой копии lst3 = copy.deepcopy(lst1) lst3[0][0] = 100 print(lst1) # [[99, 2, 3], [4, 5, 6]] ✅ Не изменился! Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🔍Тестовое собеседование на Middle Python с разработчиком из Авито завтра вечером Уже завтра вечером в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика. Как это будет: 📂 Даня, старший разработчик в Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Дане Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. О рекламодателе.
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Что такое dict comprehensions? dict comprehension (генератор словаря) — это способ быстро создать словарь с помощью компактного синтаксиса, похожего на list comprehension. 🚩Простейший пример `dict comprehension` squares = {x: x**2 for x in range(1, 6)} print(squares) Вывод {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} 🚩`dict comprehension` с условием (`if`) Оставляем только чётные числа: squares = {x: x**2 for x in range(1, 11) if x % 2 == 0} print(squares) Вывод {2: 4, 4: 16, 6: 36, 8: 64, 10: 100} 🚩Преобразование списка в словарь Создаём словарь из списка пар (name → длина слова) names = ["Alice", "Bob", "Charlie"] name_lengths = {name: len(name) for name in names} print(name_lengths) Вывод {'Alice': 5, 'Bob': 3, 'Charlie': 7} 🚩Обратный словарь (ключи и значения меняются местами) Инвертируем словарь {ключ: значение} → {значение: ключ} original = {"a": 1, "b": 2, "c": 3} inverted = {v: k for k, v in original.items()} print(inverted) Вывод {1: 'a', 2: 'b', 3: 'c'} 🚩Генерация словаря из `zip()` Объединяем два списка в словарь keys = ["name", "age", "city"] values = ["Alice", 25, "New York"] person = {k: v for k, v in zip(keys, values)} print(person) Вывод {'name': 'Alice', 'age': 25, 'city': 'New York'} 🚩`dict comprehension` с `if-else` Разделяем числа на чётные и нечётные numbers = range(1, 6) parity = {x: "чётное" if x % 2 == 0 else "нечётное" for x in numbers} print(parity) Вывод {1: 'нечётное', 2: 'чётное', 3: 'нечётное', 4: 'чётное', 5: 'нечётное'} Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Зачем нужен volume в docker? В Docker volume (том) — это специальное место для хранения данных контейнера, которое не исчезает при перезапуске или удалении контейнера. 🚩Зачем нужен `volume`? Данные не теряются при удалении контейнера Общий доступ: несколько контейнеров могут использовать один и тот же volume Производительность: тома быстрее, чем хранение внутри контейнера Разделение кода и данных: удобно для баз данных и логов 🚩Как создать `volume`? Способ 1: Автоматическое создание при запуске контейнера docker run -d -v my_volume:/app/data my_container Способ 2: Создать том отдельно и подключить его docker volume create my_volume docker run -d -v my_volume:/app/data my_container Способ 3: Использовать путь на хосте (bind-mount) docker run -d -v /home/user/data:/app/data my_container 🚩Как посмотреть список томов? docker volume ls # Покажет все тома docker volume inspect my_volume # Информация о томе 🚩Как удалить `volume`? Важно: при удалении тома данные удаляются безвозвратно! docker volume rm my_volume # Удаление одного тома docker volume prune # Удаление всех неиспользуемых томов Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Какие основные функции Python есть? Встроенные функции Python включают такие базовые инструменты, как len, type, print, input, int, str, list, dict, sum, max, min, zip, enumerate, range, map, filter и многие другие. Они обеспечивают широкий функционал без необходимости импортировать внешние библиотеки. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Что такое паттерн Мост (Bridge)? Паттерн "Мост" (Bridge) является структурным паттерном проектирования, который предназначен для разделения абстракции и реализации так, чтобы они могли изменяться независимо друг от друга. Этот паттерн полезен, когда класс должен работать с различными платформами или когда нужно избежать жесткой связки между абстракцией и ее реализацией. 🚩 Зачем нужен 🟠Разделение абстракции и реализации: Он позволяет отделить абстракцию от ее реализации, что упрощает поддержку и расширение системы. 🟠Уменьшение количества подклассов: Без применения этого паттерна, если у нас есть несколько вариантов абстракции и несколько вариантов реализации, то нам пришлось бы создавать классы для всех возможных комбинаций, что приводит к взрывному росту количества классов. 🟠Гибкость: Это позволяет изменять и абстракцию, и реализацию независимо друг от друга. 🚩Как используется 🟠Абстракция (Abstraction): Определяет интерфейс и хранит ссылку на объект Implementor. 🟠Расширенная абстракция (RefinedAbstraction): Наследует Abstraction и расширяет интерфейс. 🟠Реализатор (Implementor): Определяет интерфейс для всех реализаций. 🟠Конкретный реализатор (ConcreteImplementor): Реализует интерфейс Implementor. Допустим, у нас есть программа для управления различными типами устройств (например, телевизор и радио), которые можно включать и выключать. Мы хотим, чтобы способ управления устройствами мог изменяться независимо от типов устройств. # Implementor class Device: def is_enabled(self): pass def enable(self): pass def disable(self): pass # ConcreteImplementor class TV(Device): def __init__(self): self._on = False def is_enabled(self): return self._on def enable(self): self._on = True def disable(self): self._on = False class Radio(Device): def __init__(self): self._on = False def is_enabled(self): return self._on def enable(self): self._on = True def disable(self): self._on = False # Abstraction class RemoteControl: def __init__(self, device): self._device = device def toggle_power(self): if self._device.is_enabled(): self._device.disable() else: self._device.enable() # RefinedAbstraction class AdvancedRemoteControl(RemoteControl): def mute(self): print("Device is muted.") # Клиентский код tv = TV() remote = RemoteControl(tv) remote.toggle_power() # Включает TV radio = Radio() advanced_remote = AdvancedRemoteControl(radio) advanced_remote.toggle_power() # Включает Radio advanced_remote.mute() # Заглушает Radio Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Какая сложность у пузырьковой сортировки? Пузырьковая сортировка (Bubble Sort) — это один из самых простых, но неэффективных алгоритмов сортировки. 🚩Как работает пузырьковая сортировка? 1. Проходим по массиву несколько раз. 2. На каждой итерации сравниваем соседние элементы и меняем их местами, если они идут не в том порядке. 3. После первого прохода наибольший элемент оказывается в конце массива. 4. Повторяем процесс, пока массив не отсортируется. 🚩Рассчёт сложности (`O(n²)`) Количество сравнений в худшем случае: - На первой итерации: n-1 сравнений - На второй: n-2 сравнений - На третьей: n-3 сравнений - … - Всего: (n-1) + (n-2) + ... + 1 = O(n²) Количество обменов (swap) в худшем случае: - Если массив полностью перевёрнут, на каждой итерации будет максимальное количество перестановок → O(n²). 🚩Оптимизированная пузырьковая сортировка (`O(n)`) Если на проходе по массиву не было перестановок, значит массив уже отсортирован. def bubble_sort(arr): n = len(arr) for i in range(n): swapped = False # Флаг, отслеживающий перестановки for j in range(n - i - 1): if arr[j] > arr[j + 1]: # Если элементы в неправильном порядке, меняем местами arr[j], arr[j + 1] = arr[j + 1], arr[j] swapped = True if not swapped: break # Если перестановок не было, завершаем сортировку arr = [1, 2, 3, 4, 5] # Уже отсортированный массив bubble_sort(arr) print(arr) # [1, 2, 3, 4, 5] Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Что такое хранитель (Memento)? Это поведенческий паттерн проектирования, который позволяет сохранять и восстанавливать предыдущее состояние объекта без нарушения инкапсуляции. Этот паттерн особенно полезен для реализации операций отмены и повтора, так как он позволяет хранить состояния объектов и возвращать их к этим состояниям по необходимости. 🚩Зачем нужен? 🟠Сохранение состояния: Позволяет сохранять текущее состояние объекта и восстанавливать его позже. 🟠Инкапсуляция: Обеспечивает сохранение состояния объекта без нарушения его инкапсуляции. Внутренние детали объекта остаются скрытыми от других объектов. 🟠Отмена и повтор операций: Поддерживает функциональность отмены и повтора операций, так как позволяет возвращать объект к предыдущим состояниям. Пример реализации class Memento: def __init__(self, state: str): self._state = state def get_state(self) -> str: return self._state class TextEditor: def __init__(self): self._state = "" self._history = [] def type(self, text: str): self._save_state() self._state += text def _save_state(self): self._history.append(Memento(self._state)) def undo(self): if not self._history: return memento = self._history.pop() self._state = memento.get_state() def get_content(self) -> str: return self._state # Клиентский код для использования паттерна Хранитель def main(): editor = TextEditor() editor.type("Hello, ") editor.type("world!") print(editor.get_content()) # Hello, world! editor.undo() print(editor.get_content()) # Hello, editor.undo() print(editor.get_content()) # if __name__ == "__main__": main() 1⃣`Memento`: Сохраняет состояние объекта. Он предоставляет методы для получения сохраненного состояния, но не предоставляет методов для изменения состояния, что обеспечивает неизменность. 2⃣`TextEditor`: Создает и использует объекты Memento для сохранения и восстановления своего состояния. Методы type и undo позволяют редактировать текст и отменять изменения. 3⃣`_save_state`: Сохраняет текущее состояние редактора в истории перед каждым изменением. 4⃣`undo`: Восстанавливает предыдущее состояние редактора из истории. Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Что такое итерабельный объект? Это объект, у которого есть метод iter, возвращающий итератор. Такие объекты можно перебирать в цикле for. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Динамика подписчиков
+-1.0% за 30 дней
Текущие
12,569
Месяц назад
12,700
Средний рост
+-4 / день
Обновлено
21 час назад

Отзывы о канале Python Вопросы собесов - тесты

Авторизуйтесь, чтобы оставить отзыв

Только зарегистрированные пользователи могут делиться своим мнением.

Пока нет отзывов

Станьте первым, кто поделится своим впечатлением об этом ресурсе!

Похожие ресурсы

Loading
Переход на светлую тему
Главная Каталог Подборки Блог Вход