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

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

الذهاب إلى القناة على Telegram

📈 نظرة تحليلية على قناة تيليجرام Python | Вопросы собесов

تُعد قناة Python | Вопросы собесов (@python_easy_ru) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 13 107 مشتركاً، محتلاً المرتبة 9 737 في فئة التكنولوجيات والتطبيقات والمرتبة 50 735 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 13 107 مشتركاً.

بحسب آخر البيانات بتاريخ 08 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -51، وفي آخر 24 ساعة بمقدار 1، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 8.36‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 5.74‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 1 096 مشاهدة. وخلال اليوم الأول يجمع عادةً 752 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 4.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل ставь, модуль, строка, docker, alice.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 09 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

13 107
المشتركون
+124 ساعات
-97 أيام
-5130 أيام
أرشيف المشاركات
🤔 Как выбрать данные из двух таблиц без метода join()? В SQL можно объединять данные из двух таблиц без использования JOIN, используя альтернативные методы. 🚩Использование подзапросов (`SELECT` внутри `SELECT`) Подзапрос (subquery) позволяет выбрать данные из одной таблицы, используя данные из другой. Допустим, у нас есть две таблицы: employees (id, name, department_id) departments (id, name)
SELECT name, 
       (SELECT name FROM departments WHERE id = employees.department_id) AS department_name
FROM employees;
🚩Использование `IN` или `EXISTS` Можно фильтровать данные из одной таблицы, проверяя наличие значений в другой.
SELECT name 
FROM employees 
WHERE department_id IN (SELECT id FROM departments);
🚩Объединение данных через `UNION` Если таблицы имеют схожие колонки, можно объединить их с UNION.
SELECT id, name, email FROM users_old
UNION
SELECT id, name, email FROM users_new;
🚩Использование `CROSS JOIN` через `WHERE` Хотя CROSS JOIN делает декартово произведение, его можно фильтровать WHERE, имитируя INNER JOIN.
SELECT e.name, d.name AS department
FROM employees e, departments d
WHERE e.department_id = d.id;
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие типы HTTP запросов знаешь? В чем их отличия? Типы: GET (получение данных), POST (отправка данных), PUT (обновление ресурса), DELETE (удаление ресурса), PATCH (частичное обновление). GET передаёт параметры в URL, а POST отправляет данные в теле запроса. PUT и DELETE изменяют состояние сервера, а PATCH обновляет только указанные части ресурса. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое пакет? Пакет (package) в Python — это набор модулей, объединённых в одну директорию. Главное отличие от обычной папки — наличие файла __init__.py, который делает директорию пакетом. 🚩Как создать пакет? Допустим, мы хотим создать пакет math_utils с модулями для работы с числами.
/my_project
    /math_utils  ← Это пакет
        __init__.py  ← Делаем директорию пакетом
        arithmetic.py  ← Модуль с функциями сложения/вычитания
        geometry.py  ← Модуль с функциями для работы с фигурами
    main.py  ← Основной файл программы
Код в arithmetic.py
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b
Код в geometry.py
def square_area(side):
    return side * side
Код в __init__.py
from .arithmetic import add, subtract
from .geometry import square_area
Теперь можно импортировать функции прямо из пакета:
from math_utils import add, square_area

print(add(2, 3))  # 5
print(square_area(4))  # 16
🚩Импорт модулей из пакета Импортируем весь пакет (с __init__.py)
from math_utils import add, square_area
Импортируем конкретный модуль
from math_utils import arithmetic
print(arithmetic.add(3, 5))
Импортируем конкретную функцию из модуля
from math_utils.arithmetic import add
print(add(3, 5))
🚩Как работают пакеты в Python? Python ищет пакеты по sys.path
import sys
print(sys.path)  # Пути, где Python ищет модули
Если Python не находит пакет, можно добавить путь вручную:
import sys
sys.path.append("/path/to/my_project")
Можно создавать вложенные пакеты
/my_project
    /math_utils
        __init__.py
        /advanced
            __init__.py
            calculus.py
Импорт:
from math_utils.advanced.calculus import derivative
Ставь 👍 и забирай 📚 Базу знаний

🤔 I - Interface Segregation Principle - принцип разделения интерфейсов Интерфейсы должны быть узкоспециализированными, чтобы классы не реализовывали лишние методы. Это делает интерфейсы проще в использовании и реализации. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как проверить, что значение есть в словаре в Python? В Python можно проверять наличие ключа или значения в словаре разными способами. 🟠Проверка наличия ключа (`in`) Самый быстрый и правильный способ — проверять ключи (keys), так как доступ к ним O(1).
data = {"name": "Alice", "age": 25, "city": "New York"}

# Проверяем, есть ли ключ "age"
if "age" in data:
    print("Ключ найден!")
Вывод
Ключ найден!
Не надо проверять так
if data.get("age") is not None:  # ❌ Работает, но `in` быстрее
🟠Проверка наличия значения (`in values()`) Если нужно проверить значение, используем values()
if 25 in data.values():
    print("Значение найдено!")
Вывод
Значение найдено!
🟠Проверка и ключа, и значения (`items()`) Если нужно проверить пару (ключ, значение)
if ("age", 25) in data.items():
    print("Пара (ключ, значение) найдена!")
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое dunder методы? Это специальные методы, обрамлённые двойными подчёркиваниями. 1. Пример: init, str, add. 2. Они позволяют изменять поведение встроенных операций, таких как создание объектов или арифметика. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как работает функция filter()? filter() — это встроенная функция Python, которая отбирает элементы из последовательности по заданному условию.
filter(function, iterable)
🚩Как работает `filter()`? Пример 1: Фильтрация чётных чисел
numbers = [1, 2, 3, 4, 5, 6]

# Оставляем только чётные числа
even_numbers = filter(lambda x: x % 2 == 0, numbers)

print(list(even_numbers))  # [2, 4, 6]
Пример 2: Фильтрация строк по длине
words = ["apple", "kiwi", "banana", "cherry"]

# Оставляем только слова длиной больше 5 символов
long_words = filter(lambda word: len(word) > 5, words)

print(list(long_words))  # ['banana', 'cherry']
Пример 3: Фильтрация None и пустых значений
values = [None, 0, "", "hello", 42, [], {}]

# Оставляем только "истинные" значения
filtered_values = filter(None, values)

print(list(filtered_values))  # ['hello', 42]
Пример 4: Использование filter() с def
def is_positive(n):
    return n > 0

numbers = [-5, -2, 0, 3, 7, -1]
positive_numbers = filter(is_positive, numbers)

print(list(positive_numbers))  # [3, 7]
🚩Чем `filter()` лучше `for` + `if`? Более короткий и читаемый код
# С `filter()`
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

# С `for` + `if`
even_numbers = [x for x in numbers if x % 2 == 0]
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что может быть ключем в словаре? Ключем в словаре (dict) в Python может быть любой неизменяемый тип данных, такой как строки, числа, кортежи или булевы значения. Ключи должны быть уникальными, так как они используются для быстрой индексации и поиска значений в словаре. Попытка использования изменяемого объекта, такого как список или словарь, в качестве ключа вызовет ошибку. Ключи словаря должны быть хешируемыми, чтобы поддерживать эффективный поиск. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Repost from Идущий к IT
Привет ребята, мне на easyoffer.ru нужен: 🐍 Middle/Senior Python Developer Стек: DRF, PostgreSQL, Redis, Celery, Docker, Sentry Задачи: 🟠Разработка и поддержка REST API для новых фичей 🟠Интеграция с веб-сервисами и внешними API 🟠Подключение и поддержка платежных систем 🟠Написание юнит- и интеграционных тестов 🟠Оптимизация производительности и масштабирование 🟠Взаимодействие с ML-моделями — будет плюсом Ожидания: 🟠2+ лет опыта DRF 🟠Опыт интеграций платежных систем 🟠Опыт работы с PostgreSQL, Celery, Redis, Docker 🟠Умение проектировать архитектуру REST-API 🟠Ответственный подход к качеству кода и тестированию Опыт в стартапах и небольших командах будет плюсом Условия: – Частичная занятость (2-3 часа в день) – Удаленная работа – Свободный график – Почасовая оплата ✈ Если вас заинтересовала вакансия, напишите мне @kivaiko 1. Резюме 2. Ссылку на github 3. Комфортную ставку за час

🤔 Как понять, какие виды тестов нужны именно сейчас? Выбор типа тестирования зависит от целей, стадии разработки и текущих проблем. Чтобы определить, какие тесты нужны, стоит ответить на вопросы: Что тестируем? (код, API, UI, производительность и т. д.) Какие риски? (где может сломаться, критичность ошибки) Какой этап разработки? (новый код, рефакторинг, релиз) 🚩Как определить нужные тесты прямо сейчас? 🟠Только написали новый код Нужны: Юнит-тесты Тестируем функции и классы отдельно.
def add(a, b):
    return a + b

def test_add():
    assert add(2, 3) == 5  # ✅ Юнит-тест
🟠Соединяем модули или работаем с API Нужны: Интеграционные тесты Проверяем работу всей системы вместе.
def test_api():
    response = requests.get("https://api.example.com/data")
    assert response.status_code == 200
🟠Перед релизом или деплоем Нужны: Функциональные и регрессионные тесты Проверяем ключевые сценарии и старый функционал.
def test_login():
    assert login("user", "password") == "Success"
🟠Изменили UI (например, фронтенд на React) Нужны: UI-тесты (Selenium, Playwright) Проверяем нажатие кнопок, формы и отображение страниц.
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")
assert "Example" in driver.title
🟠Если проект должен выдерживать большую нагрузку Нужны: Нагрузочные тесты (Load Testing) Используем locust, JMeter, k6, чтобы проверить сколько пользователей выдержит сервер.
from locust import HttpUser, task

class MyUser(HttpUser):
    @task
    def test_homepage(self):
        self.client.get("/")
Ставь 👍 и забирай 📚 Базу знаний

😮 92% подписчиков этих каналов не просто мечтатели, а реальные python-программисты, которые каждый день пишут код для реальных проектов! Вот эти каналы, где реально полезная инфа на каждый день: 👩‍💻 Python — каждый день новые знания для кодера любого уровня 👩‍💻 Backendмастхев канал для бекендера 👩‍💻 Code Tests — идеальные тесты для проверки знаний 🔒Сделали бесплатный вход только на 48 часов, успей залететь!

🤔 Как реализовывать views: функцией или классом? Представления (views) можно реализовать двумя способами: - Функциональные представления (FBV, Function-Based Views) - Обычные Python-функции, принимающие request и возвращающие HttpResponse - Просты в использовании, но плохо масштабируются - Классовые представления (CBV, Class-Based Views) - Основаны на views.View, позволяют переопределять get(), post() - Поддерживают миксин-классы, упрощают повторное использование кода Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

⚡ Новые каналы с вакансиями и стажировками для джунов В этих каналах публикуются все свежие вакансии и стажировки 🔺 ВАКАНСИИ
Новые каналы с вакансиями и стажировками для джунов В этих каналах публикуются все свежие вакансии и стажировки 🔺 ВАКАНСИИ
Горячие вакансии с привлекательными офферами для джуниор разработчиков, аналитиков, дизайнеров и QA-специалистов.
👉 ПОДПИСАТЬСЯ 🔺СТАЖИРОВКИ
Стажировки для начинающих специалистов в IT независимо от возраста!
👉 ПОДПИСАТЬСЯ 🔺IT interns
Свежие стажировки для junior специалистов в топовых компании России и мира
👉 ПОДПИСАТЬСЯ 🔺Junojobs
Вакансии и стажировки для junior-разработчиков на удалёнке.
👉 ПОДПИСАТЬСЯ 🔺БИГТЕХ
Junior вакансии и стажировки в крупнейших IT-компаниях мира: NVidia, Apple, T-банк, Яндекс, Google и т. д.
👉 ПОДПИСАТЬСЯ 🔺Ква инженер - QA junior
Отборные джун вакансии и стажировки для QA, тестировщиков.
👉 ПОДПИСАТЬСЯ

🤔 Как в питоне реализуется многопоточность. Какими модулями? Многопоточность в Python реализуется с помощью модуля threading, но из-за GIL (Global Interpreter Lock) потоки не могут выполняться параллельно на нескольких ядрах. 🟠Модуль `threading` (многопоточность, но с GIL) Модуль threading позволяет запускать несколько потоков (threads) в одном процессе.
import threading
import time

def task(name):
    print(f"{name} начал работу")
    time.sleep(2)  # Имитация задержки
    print(f"{name} завершил работу")

# Создаём два потока
t1 = threading.Thread(target=task, args=("Поток 1",))
t2 = threading.Thread(target=task, args=("Поток 2",))

t1.start()
t2.start()

t1.join()
t2.join()
print("Все потоки завершены")
Вывод
Поток 1 начал работу
Поток 2 начал работу
(пауза 2 секунды)
Поток 1 завершил работу
Поток 2 завершил работу
Все потоки завершены
🟠Модуль `multiprocessing` (настоящая параллельность) В отличие от threading, модуль multiprocessing создаёт отдельные процессы, которые могут выполняться на разных ядрах процессора.
import multiprocessing
import time

def task(name):
    print(f"{name} начал работу")
    time.sleep(2)
    print(f"{name} завершил работу")

if __name__ == "__main__":
    p1 = multiprocessing.Process(target=task, args=("Процесс 1",))
    p2 = multiprocessing.Process(target=task, args=("Процесс 2",))

    p1.start()
    p2.start()

    p1.join()
    p2.join()
    print("Все процессы завершены")
🟠Модуль `concurrent.futures` (более удобный API) Этот модуль позволяет легко управлять потоками (ThreadPoolExecutor) и процессами (ProcessPoolExecutor).
from concurrent.futures import ThreadPoolExecutor
import time

def task(n):
    time.sleep(2)
    return f"Готово: {n}"

with ThreadPoolExecutor(max_workers=2) as executor:
    results = executor.map(task, [1, 2, 3])
    
for result in results:
    print(result)
Пример ProcessPoolExecutor (процессы)
from concurrent.futures import ProcessPoolExecutor

def square(n):
    return n * n

with ProcessPoolExecutor() as executor:
    results = executor.map(square, [1, 2, 3, 4])

print(list(results))  # [1, 4, 9, 16]
🟠Модуль `asyncio` (асинхронность, не потоки!) Модуль asyncio не создаёт потоки или процессы, а работает через "корутины" и цикл событий (event loop).
import asyncio

async def task():
    print("Начало")
    await asyncio.sleep(2)  # Не блокирует другие задачи
    print("Конец")

async def main():
    await asyncio.gather(task(), task())

asyncio.run(main())
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое класс BaseView? Это базовый класс для создания представлений. Django предлагает два типа представлений: - Функциональные (function-based views, FBV) - Классовые (class-based views, CBV) Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое конструктор класса ? Это специальный метод, который вызывается при создании нового экземпляра класса. В языках ООП конструкторы используются для инициализации объектов, устанавливая начальные значения атрибутов и выполняя любые необходимые действия при создании экземпляра. 🚩Конструктор Называется __init__. Этот метод вызывается автоматически при создании нового объекта класса и используется для инициализации атрибутов объекта.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def display(self):
        print(f"Name: {self.name}, Age: {self.age}")

# Создание экземпляра класса Person
person1 = Person("Alice", 30)
person1.display()  # Вывод: Name: Alice, Age: 30

person2 = Person("Bob", 25)
person2.display()  # Вывод: Name: Bob, Age: 25
🚩Основные функции 🟠Инициализация атрибутов Инициализирует атрибуты объекта начальными значениями. 🟠Выполнение необходимой логики Может выполнять любые действия, необходимые при создании объекта (например, проверка входных данных). 🟠Управление ресурсами Может выполнять действия по управлению ресурсами, такие как открытие файлов или подключение к базе данных. 🚩Перегрузка Перегрузка конструктора не поддерживается напрямую, но можно использовать аргументы по умолчанию или конструкцию args и kwargs для имитации перегрузки.
#include <iostream>
using namespace std;

class Person {
public:
    string name;
    int age;

    // Конструктор по умолчанию
    Person() {
        name = "Unknown";
        age = 0;
    }

    // Конструктор с параметрами
    Person(string n, int a) {
        name = n;
        age = a;
    }

    void display() {
        cout << "Name: " << name << ", Age: " << age << endl;
    }
};

int main() {
    Person person1;
    person1.display();  // Вывод: Name: Unknown, Age: 0

    Person person2("Alice", 30);
    person2.display();  // Вывод: Name: Alice, Age: 30

    return 0;
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 В чем суть принципа REST? REST (Representational State Transfer) — это архитектурный стиль для разработки веб-сервисов, который использует стандартные методы HTTP для взаимодействия между клиентом и сервером. В REST каждая операция выполняется с использованием определённого HTTP-метода: GET для получения данных, POST для создания, PUT для обновления и DELETE для удаления. RESTful API использует унифицированные ресурсы и URL для представления данных, а также статeless-коммуникацию между клиентом и сервером. Основной принцип REST — это простота и масштабируемость. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Repost from easyoffer
Я поставил целью сбора скромные 300 тыс. рублей, но ребята, вы накидали больше млн. всего за 1 день. Это просто невероятно! Б
Я поставил целью сбора скромные 300 тыс. рублей, но ребята, вы накидали больше млн. всего за 1 день. Это просто невероятно! Благодаря вашей поддержке, я смогу привлечь еще больше людей для разработки сайта и обработки собеседований. Ваш вклад сделает проект качественнее и ускорит его выход! Огромное вам спасибо! Краудфандинг будет продолжаться еще 31 день и все кто поддержать проект сейчас, до его выхода, смогут получить: 🚀 PRO-тариф на 1 год, по цене месячной подписки на релизе. ➕ Доступ к закрытому бета-тесту easyoffer 2.0 (середина–конец мая) Поддержать проект можно здесь: https://planeta.ru/campaigns/easyoffer Огромное спасибо за вашу поддержку! 🤝

Repost from easyoffer
🎉 Краудфандинг easyoffer 2.0 стартовал! Друзья, с этого момента вы можете поддержать проект и получить существенный бонус: �
🎉 Краудфандинг easyoffer 2.0 стартовал! Друзья, с этого момента вы можете поддержать проект и получить существенный бонус: 🚀 PRO-тариф на 1 год, по цене месячной подписки на релизе. ➕ Доступ к закрытому бета-тесту easyoffer 2.0 (середина–конец мая) Поддержать проект можно здесь: https://planeta.ru/campaigns/easyoffer 📌 Если не получается оплатить через карту РФ — напишите мне @kivaiko, и мы найдём удобный способ

🤔 Как на уровне Python реализован декоратор? В Python декораторы — это функции, которые оборачивают другие функции. Они добавляют или изменяют поведение функции без изменения её кода. 🟠Реализация простого декоратора вручную Простейший декоратор, который добавляет текст перед выполнением функции
def my_decorator(func):  
    def wrapper():  
        print("Декоратор сработал!")  
        return func()  # Вызываем исходную функцию  
    return wrapper  # Возвращаем обёрнутую функцию

def say_hello():
    print("Hello!")

say_hello = my_decorator(say_hello)  # Оборачиваем вручную
say_hello()
Вывод
Декоратор сработал!
Hello!
🟠Реализация декоратора через `@` Python позволяет упрощённый синтаксис через @
def my_decorator(func):
    def wrapper():
        print("Декоратор сработал!")
        return func()
    return wrapper

@my_decorator  # Эквивалентно say_hello = my_decorator(say_hello)
def say_hello():
    print("Hello!")

say_hello()
🟠Декоратор с `args` и `kwargs` (универсальный вариант) Если функция принимает аргументы, их нужно передавать через args и kwargs
def my_decorator(func):
    def wrapper(*args, **kwargs):  # Поддержка любых аргументов
        print(f"Вызываем {func.__name__} с аргументами: {args}, {kwargs}")
        return func(*args, **kwargs)  # Вызываем оригинальную функцию
    return wrapper

@my_decorator
def greet(name):
    print(f"Привет, {name}!")

greet("Alice")
Вывод
Вызываем greet с аргументами: ('Alice',), {}
Привет, Alice!
🟠Декоратор с параметрами (фабрика декораторов) Чтобы передавать параметры в декоратор, создаём функцию, которая возвращает декоратор
def repeat(times):  # Функция с параметром
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(times):  # Повторяем вызов функции
                func(*args, **kwargs)
        return wrapper
    return decorator  # Возвращаем декоратор

@repeat(3)  # Передаём 3 → `repeat(3)` вернёт `decorator`
def hello():
    print("Hello!")

hello()
Вывод
Hello!
Hello!
Hello!
🟠Декораторы классов (`functools.wraps`) Обычные декораторы ломают метаданные функции (__name__, __doc__).
import functools

def my_decorator(func):
    @functools.wraps(func)  # Сохраняем метаданные
    def wrapper(*args, **kwargs):
        print("Декоратор сработал!")
        return func(*args, **kwargs)
    return wrapper

@my_decorator
def greet():
    """Функция приветствия"""
    print("Hello!")

print(greet.__name__)  # greet (без wraps было бы wrapper)
print(greet.__doc__)  # Функция приветствия
Ставь 👍 и забирай 📚 Базу знаний