ru
Feedback
Python | Вопросы собесов

Python | Вопросы собесов

Открыть в Telegram

📈 Аналитический обзор Telegram-канала Python | Вопросы собесов

Канал Python | Вопросы собесов (@python_easy_ru) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 13 108 подписчиков, занимая 9 738 место в категории Технологии и приложения и 50 761 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 13 108 подписчиков.

Согласно последним данным от 07 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -52, а за последние 24 часа — -3, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 6.21%. В первые 24 часа после публикации контент обычно набирает 5.90% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 814 просмотров. В течение первых суток публикация набирает 773 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 4.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как ставь, модуль, строка, docker, alice.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky

Благодаря высокой частоте обновлений (последние данные получены 08 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

13 108
Подписчики
-324 часа
-147 дней
-5230 день
Архив постов
🤔 Что делает git commit? Команда git commit используется для фиксации изменений в локальном репозитории Git. Она сохраняет текущие изменения в коде (добавленные, изменённые или удалённые файлы), которые были подготовлены с помощью команды git add. По сути, git commit создаёт "снимок" текущего состояния проекта, который можно использовать для отслеживания истории изменений, их анализа или отката к более ранним версиям. 🚩Как это работает? Когда вы работаете с Git, ваши изменения сначала попадают в рабочую директорию. После этого, чтобы зафиксировать их, вы добавляете их в индекс (staging area) с помощью команды git add. Только те изменения, которые находятся в индексе, будут включены в следующий коммит. Команда git commit фиксирует все изменения из staging area и сохраняет их как новую версию в истории проекта. 🚩Почему это нужно? 🟠История изменений Каждый коммит сохраняет подробную информацию о том, что было изменено, когда и почему. Это позволяет отслеживать развитие проекта. 🟠Версионность Можно вернуться к любой точке в истории и восстановить состояние проекта. 🟠Совместная работа В командной разработке коммиты позволяют другим разработчикам видеть изменения и их причины. 🟠Разделение задач Коммиты разбивают изменения на логические единицы, что упрощает их понимание.
# Шаг 1. Внести изменения в файл
echo "Hello, Git!" > example.txt

# Шаг 2. Добавить изменения в staging area
git add example.txt

# Шаг 3. Зафиксировать изменения
git commit -m "Добавил файл example.txt с приветственным текстом"
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что известно про понятие вычислительной сложности? Это мера, показывающая, как изменяется время (или память), требуемое алгоритму, в зависимости от размера входных данных. Выражается в O-нотации (Big-O), отражающей верхнюю границу роста ресурсоёмкости. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие есть методы чтобы реализовать протокол итерирования данных? Для реализации протокола итерирования данных в Python необходимо использовать два метода: __iter__() и __next__(). 🚩Протокол итератора 🟠Метод `__iter__()` Этот метод должен возвращать объект-итератор. В простом случае он возвращает сам объект, если объект реализует метод __next__(). Метод __iter__() необходим для того, чтобы объект можно было использовать в конструкциях, которые требуют итерируемого объекта, таких как циклы for. 🟠Метод __next__() Этот метод возвращает следующий элемент в последовательности. Когда элементы заканчиваются, метод должен вызвать исключение StopIteration для остановки итерации.
class MyRange:
    def __init__(self, start, end):
        self.start = start
        self.end = end
        self.current = start

    def __iter__(self):
        self.current = self.start  # Перезапуск итератора при каждом вызове
        return self

    def __next__(self):
        if self.current >= self.end:
            raise StopIteration
        else:
            self.current += 1
            return self.current - 1

# Использование
for number in MyRange(1, 5):
    print(number)
🚩Дополнительно: итераторы и генераторы Для упрощения создания итераторов в Python можно использовать генераторы. Генераторы позволяют писать итераторы с использованием ключевого слова yield вместо определения методов __iter__() и __next__() вручную.
def my_range(start, end):
    current = start
    while current < end:
        yield current
        current += 1

# Использование
for number in my_range(1, 5):
    print(number)
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что будет, если сравнить 5 и 5.0? Они будут считаться равными, так как int и float сравниваются по значению, а не по типу. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое git stash? git stash — это команда в Git, которая сохраняет незакоммиченные изменения во временное хранилище (stash) и очищает рабочую директорию. 🚩Когда это полезно? Нужно переключиться на другую ветку, но есть незаконченные изменения. Хочешь сохранить текущую работу, но не коммитить её. Нужно экспериментировать, но без риска потерять код. 🚩Как использовать `git stash`? Сохранить изменения в stash
git stash
Посмотреть список сохранённых изменений
git stash list
Выведет список всех stash-ов
stash@{0}: WIP on main: 1234567 Добавил новую фичу
stash@{1}: WIP on dev: 89abcde Исправил баг
Восстановить сохранённые изменения
git stash pop  # Восстановит изменения и удалит stash
ИЛИ
git stash apply  # Восстановит, но stash останется в списке
Удалить stash после применения
git stash drop stash@{0}  # Удалит конкретный stash
git stash clear  # Удалит все stash'и
🚩Пример использования Сценарий - Ты работаешь в ветке main, но нужно срочно переключиться на dev. - У тебя есть изменения, которые ты не хочешь коммитить. Решение
git stash          # Сохраняем изменения
git checkout dev   # Переключаемся на другую ветку
# Делаем нужную работу...
git checkout main  # Возвращаемся в основную ветку
git stash pop      # Восстанавливаем изменения
Ставь 👍 и забирай 📚 Базу знаний

🤔 Для чего нужен модуль warnings? Он управляет системой предупреждений: позволяет их создавать, фильтровать, подавлять и логировать. Это удобно для устаревших функций или плохих практик. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как работает хеш мап? Хеш-таблица (HashMap) — это структура данных, которая позволяет быстро хранить и искать пары ключ → значение. В Python её аналогом является dict. 🚩Основная идея Ключ проходит через хеш-функцию → превращается в число (индекс). Значение сохраняется в массиве по этому индексу. При поиске: ключ снова хешируется, и мы мгновенно находим нужное значение. 🚩Как это работает в Python? Создание хеш-таблицы (dict)
hash_map = {}  # Пустой словарь
hash_map["apple"] = 10  # Добавляем элемент
hash_map["banana"] = 20

print(hash_map["apple"])  # 10
🟠Хеширование ключа Ключи сначала хешируются с помощью встроенной функции hash().
print(hash("apple"))  # Например: 2837462816
print(hash("banana"))  # Другое число
🟠Разрешение коллизий Иногда разные ключи могут давать одинаковый хеш. Это называется коллизией. Python использует метод цепочек (Chaining): Если у двух ключей один хеш, они хранятся в виде списка в одной ячейке.
hash_map = { "key1": 100, "key2": 200 }
print(hash("key1") % 10)  # Допустим, 4
print(hash("key2") % 10)  # Тоже 4 (коллизия!)

# Python хранит их в одной ячейке как список [(key1, 100), (key2, 200)]
🟠Динамическое расширение При заполнении хеш-таблицы, если она становится слишком загруженной, Python автоматически увеличивает её размер, чтобы избежать замедления.
d = {}  # Создаём пустой dict
for i in range(1000):
    d[i] = i

print(len(d))  # 1000, Python сам расширил таблицу
🟠Удаление элементов Удаление также выполняется за O(1)
del hash_map["apple"]  # Мгновенно удаляем
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какой результат будет Post.objects.all() и какого типа вернёт? Вернёт QuerySet — отложенный список всех объектов модели Post. Он ведёт себя как список, но под капотом это SQL-запрос, который выполняется только при необходимости. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Как без боли найти работу ML-специалисту Привет 👋 Это Богдан, помогаю найти работу в МЛ. Мои выпускники устраиваются в такие
Как без боли найти работу ML-специалисту Привет 👋 Это Богдан, помогаю найти работу в МЛ. Мои выпускники устраиваются в такие бигтехи, как Тинькофф, VK, СБЕР. Средняя зарплата выпускника - 300к. В своём канале делюсь тем, что реально работает на собеседованиях: 🥇 Где тебя реально валят по ROC AUC — по-честному 🥈 5 причин, почему твое резюме не дает откликов 🥉Одни день проект ML Engineer / Data Scientist, или как проходить ML System Design (ч. 1 и 2) 📃 16 июня 18:00 МСК — стрим, на котором расскажу тебе, как эффективно готовиться к алогоритмам, успешно их проходить, и сколько денег ты тереяешь из-за плохой алгосекции 🚨 Вступай сейчас, чтобы не пропустить эфир — кнопка ниже: 😐 ВСТУПИТЬ В КАНАЛ 😐 Увидимся на стриме!

🤔 Как избежать конфликтов при импорте файлов? Когда в проекте много файлов, могут возникать конфликты импортов. Python ищет модули в определённом порядке, и если несколько файлов имеют одинаковые имена или неправильные пути, может возникнуть ошибка. 🚩Способы избежать конфликтов при импорте 🟠Используйте явные пути импорта Вместо
import mymodule  # Может вызвать конфликт, если есть несколько файлов с таким именем
Лучше указывать полный путь в пакетах
from myproject.utils.mymodule import my_function
🟠Избегайте конфликтов имён файлов Если у вас есть файл math.py, импорт import math будет загружать ваш файл, а не стандартный модуль math из Python. - Не называйте файлы именами стандартных модулей: math.py, sys.py, json.py. - Проверьте, какой именно модуль загружается:
  import math
  print(math.__file__)  # Путь к загруженному модулю
  
🟠Добавьте `__init__.py` в пакеты Если у вас есть структура
/myproject
    /utils
        mymodule.py
Решение Добавьте пустой __init__.py в utils/:
/myproject
    /utils
        __init__.py  # Делаем utils пакетом
        mymodule.py
Теперь импорт будет работать
from utils import mymodule
🟠Используйте `sys.path.append()` для указания путей Иногда Python не находит модуль, если он находится вне стандартных путей. Решение Добавьте путь вручную:
import sys
sys.path.append("/path/to/directory")

import mymodule  # Теперь импорт будет работать
🟠Используйте `absolute` и `relative` импорт в пакетах Абсолютный импорт (рекомендуется)
from myproject.utils.mymodule import my_function
Относительный импорт (используется внутри пакетов):
from .mymodule import my_function
🟠Проверяйте `sys.modules` и `sys.path` Если импорт не работает, проверьте, какие модули загружены и где Python ищет файлы
import sys
print(sys.modules.keys())  # Список загруженных модулей
print(sys.path)  # Пути, где Python ищет модули
Ставь 👍 и забирай 📚 Базу знаний

Готовитесь к собеседованию в IT-компанию? 👀 Скачайте курс-гайд «Алгоритмы: roadmap для работы и собеседований» бесплатно. 🎯
Готовитесь к собеседованию в IT-компанию? 👀 Скачайте курс-гайд «Алгоритмы: roadmap для работы и собеседований» бесплатно. 🎯 Готовый план подготовки: алгоритмы, вопросы и советы от эксперта, практика и доп. литература. Скачать курс-гайд бесплатно через бота ➡️ по ссылке

🤔 Виды типизации? – Статическая — тип переменной известен во время компиляции (Java, C++). – Динамическая — тип определяется во время выполнения (Python, JavaScript). – Явная — требуется указание типа (например, int x = 5). – Неявная — тип выводится автоматически (например, x = 5 в Python). – Сильная — строгие правила преобразования типов. – Слабая — возможны неявные преобразования. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие есть операторы ограничений? Ограничения (constraints) в SQL используются для контроля целостности данных в таблицах. Они помогают предотвратить некорректные значения и обеспечить согласованность данных. 🚩`NOT NULL` (Запрещает `NULL`) Используется, если поле обязательно для заполнения
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL  -- Поле name обязательно
);
Нельзя вставить NULL в name
INSERT INTO users (id, name) VALUES (1, NULL);  -- Ошибка!
🚩`UNIQUE` (Гарантирует уникальность значений) Запрещает дубликаты в столбце
CREATE TABLE users (
    id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE  -- Email должен быть уникальным
);
Попытка вставить одинаковый email вызовет ошибку
INSERT INTO users (id, email) VALUES (1, 'test@example.com');
INSERT INTO users (id, email) VALUES (2, 'test@example.com');  -- Ошибка!
Создание UNIQUE на нескольких колонках
CREATE TABLE orders (
    user_id INT,
    product_id INT,
    UNIQUE (user_id, product_id)  -- Запрещает заказывать один товар дважды
);
🚩`PRIMARY KEY` (Главный ключ, уникальный идентификатор) Объединяет NOT NULL + UNIQUE и гарантирует, что строка уникальна.
CREATE TABLE users (
    id INT PRIMARY KEY,  -- Уникальный идентификатор
    name VARCHAR(50)
);
Можно создать PRIMARY KEY на нескольких колонках
CREATE TABLE enrollments (
    student_id INT,
    course_id INT,
    PRIMARY KEY (student_id, course_id)  -- Один студент не может записаться дважды на один курс
);
🚩`FOREIGN KEY` (Связь таблиц) Создаёт связь между таблицами и поддерживает ссылочную целостность. Есть таблица пользователей (users) и таблица заказов (orders), где user_id в orders должен ссылаться на id в users.
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    FOREIGN KEY (user_id) REFERENCES users(id)  -- Связь с таблицей users
);
Что делать при удалении пользователя?
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое View? View может означать: – В базе данных — виртуальная таблица (результат SQL-запроса, сохраняемый как объект). – В Django — функция или класс, обрабатывающий HTTP-запросы и возвращающий ответ. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие есть особенности исключения в Python? В Python исключения (exceptions) — это специальные объекты, которые возникают при ошибках и прерывают выполнение программы, если их не обработать. Все исключения в Python — это объекты, унаследованные от BaseException.
try:
    1 / 0
except ZeroDivisionError as e:
    print(type(e))  # <class 'ZeroDivisionError'>
    print(e)  # division by zero
Все исключения унаследованы от BaseException:
BaseException
 ├── Exception
 │   ├── ArithmeticError
 │   │   ├── ZeroDivisionError
 │   │   ├── OverflowError
 │   ├── ValueError
 │   ├── IndexError
 │   ├── KeyError
 │   ├── TypeError
 ├── SystemExit
 ├── KeyboardInterrupt
Можно перехватывать несколько исключений
try:
    x = int("abc")  # Ошибка ValueError
except (ValueError, TypeError) as e:
    print(f"Ошибка: {e}")
Если не знаем, какая ошибка может произойти:
try:
    x = 1 / 0
except Exception as e:
    print(f"Ошибка: {e}")  # division by zero
finally выполняется всегда
try:
    1 / 0
except ZeroDivisionError:
    print("Ошибка!")
finally:
    print("Этот код выполнится всегда")
raise позволяет выбрасывать исключения вручную
raise ValueError("Ошибка: неверное значение!")
Можно создать свой класс ошибки, унаследованный от Exception:
class MyError(Exception):
    pass

raise MyError("Это моя ошибка!")
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое "многие-ко-многим"? Это тип связи, при котором одна запись в таблице A может быть связана с несколькими записями в таблице B, и наоборот. Пример — студент может быть записан на несколько курсов, и курс может иметь несколько студентов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Можно ли при вызове метода save указать какие поля изменять? Да, в Django ORM можно указать конкретные поля для сохранения, используя параметр update_fields в методе .save(). 🚩Как использовать `update_fields` Пример модели
from django.db import models

class UserProfile(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField()
    age = models.IntegerField()
Обновляем только поле name, не трогая email и age
user = UserProfile.objects.get(id=1)
user.name = "Новый пользователь"
user.save(update_fields=["name"])  # Обновит только поле `name`
🚩Что делает `update_fields`? Генерирует SQL-запрос только для указанных полей, например:
  UPDATE user_profile SET name = 'Новый пользователь' WHERE id = 1;
  
🚩Когда `update_fields` полезен? Уменьшает нагрузку на БД, так как обновляет только нужные поля. Полезен, если нужно изменить одно поле, а не всю запись. Избегает ненужных изменений в auto_now и auto_now_add полях (DateTimeField). 🚩Ограничения `update_fields` Нельзя использовать при создании объекта (save() с update_fields не работает для .create()).
user = UserProfile(name="Alice", email="alice@example.com")
user.save(update_fields=["name"])  # ❌ Ошибка, объект ещё не в базе!
Не обновляет auto_now-поля (DateTimeField) автоматически!
updated_at = models.DateTimeField(auto_now=True)  # Не обновится с `update_fields`
Решение: обновить вручную:
user.updated_at = timezone.now()
user.save(update_fields=["name", "updated_at"])
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие есть опции в свойстве on_delete? on_delete в Django определяет поведение при удалении связанного объекта (например, ForeignKey). Варианты: - CASCADE — удаляет все связанные объекты. - PROTECT — вызывает исключение, если есть связанные объекты. - SET_NULL — обнуляет значение поля (если null=True). - SET_DEFAULT — устанавливает значение по умолчанию. - SET(...) — можно передать функцию или значение. - DO_NOTHING — ничего не делает (может привести к ошибке на уровне БД). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое SDLC? Это методология управления процессом создания программного обеспечения, которая включает в себя последовательность этапов и действий, необходимых для разработки, тестирования, развертывания и поддержки программных продуктов. Цель SDLC — обеспечить структурированный и эффективный подход к разработке ПО, минимизируя риски и повышая качество конечного продукта. 🚩Основные этапы SDLC 🟠Планирование и анализ требований (Planning and Requirements Analysis) На этом этапе определяются цели проекта, анализируются потребности и требования к системе. Включает сбор требований от заинтересованных сторон, анализ бизнес-процессов и создание документации с описанием требований. Встречи с клиентами и пользователями для определения функций системы. Документирование функциональных и нефункциональных требований. 🟠Проектирование (Design) На этапе проектирования разрабатывается архитектура системы и ее компоненты. Создаются технические спецификации, включая схемы базы данных, диаграммы классов и интерфейсов, а также детализируется план реализации.Разработка диаграмм UML.Создание прототипов пользовательского интерфейса.Проектирование архитектуры системы. 🟠Разработка (Implementation or Coding) На этом этапе осуществляется непосредственная разработка программного обеспечения на основе спецификаций, созданных на предыдущем этапе. Кодирование выполняется в соответствии с выбранными языками программирования и инструментами разработки. Написание кода для модулей и компонентов системы. Интеграция различных компонентов системы. Регулярное использование систем контроля версий (например, Git). 🟠Тестирование (Testing) Этап тестирования включает проверку и валидацию системы для обнаружения и исправления ошибок. Тестирование проводится в различных формах, включая юнит-тестирование, интеграционное тестирование, системное тестирование и приемочное тестирование. Автоматизированное тестирование с использованием фреймворков, таких как pytest или JUnit. Ручное тестирование функциональности и пользовательского интерфейса. Тестирование производительности и безопасности. 🟠Развертывание (Deployment) На этом этапе программное обеспечение разворачивается в рабочей среде и становится доступным пользователям. Включает настройку серверов, развертывание баз данных и настройку инфраструктуры. Развертывание на облачных платформах, таких как AWS или Azure. Настройка и конфигурация серверов и сетей. Миграция данных и начальная загрузка данных. 🟠Поддержка и сопровождение (Maintenance) Этап поддержки и сопровождения включает в себя обслуживание и улучшение системы после ее развертывания. Включает исправление ошибок, обновление функциональности и оптимизацию производительности. Обновление системы безопасности. Внесение изменений на основе отзывов пользователей. Обслуживание серверов и баз данных. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое сигналы? Это механизм обратного вызова (callback), позволяющий реагировать на события в Django. Они используются для: - Действий после сохранения объекта (post_save) - Удаления объектов (post_delete) - Изменения данных пользователей (user_logged_in) Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний