Python Backend | YeaHub
1.8K subscribers
373 photos
63 videos
7 files
600 links
Теория, подготовка к интервью и курсы для Python разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #solid #fastapi #sql

🤔 Middle Python Backend-разработчик в компанию Дивергент

Техническое собеседование, весна 2025. Вилка: 150-180к. Проект: HR-бот.
Опыт в резюме: 2.5 года. Вопросы не совсем базовые, ближе к mid-уровню.

💬 Вопросы:

- Что такое SOLID?

- Что такое абстрактные классы?

- Какие паттерны программирования знаешь?

- Что такое паттерн Стратегия (Strategy)?

- Что такое FastAPI и какие у него ключевые особенности?

👉 Все вопросы из этого собеседования (11)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #pg_stat_user #index_statistics #query_optimization
🤔 Какова цель представления pg_stat_user_indexes в PostgreSQL?

💬 Кратко:

Представление pg_stat_user_indexes в PostgreSQL содержит статистическую информацию об индексах, созданных для пользовательских таблиц. Оно помогает анализировать эффективность индексов, включая их использование и количество операций. Это представление полезно для оптимизации запросов и индексации.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1
#documentation #микросервисы #паттерны
📚 Паттерны управления данными в микросервисной архитектуре

Microservices.io создан Крисом Ричардсоном. опытным архитектором программного обеспечения, автором книги POJOs in Action, создателем оригинальной платформы CloudFoundry.com и автором шаблонов микросервисов.

Перейти к материалу

👉 База вопросов 👉 Новости
1
#Собес #orchestration #virtualization #docker
🤔 Какие средства используются для оркестрации и виртуализации сервисов?

💬 Кратко:

Для оркестрации и виртуализации сервисов используют Docker для контейнеризации и Kubernetes для управления контейнерами. Также популярны инструменты вроде Docker Compose, Nomad и облачные решения (AWS ECS, Google Kubernetes Engine).

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Отправляем уведомления в Telegram на Python

В современной backend-разработке Telegram остается стандартом для мгновенных алертов, мониторинга состояния ИИ-агентов и уведомлений о критических событиях инфраструктуры

1. Установка библиотеки
Одним из хороший вариантов является httpx благодаря поддержке HTTP/2 и возможности легкого перехода на асинхронность

pip install httpx


2. Импорт и конфигурация
Импортируем клиент и используем переменные окружения для защиты учетных данных

import httpx
import os

TOKEN = os.getenv("TG_BOT_TOKEN")
CHAT_ID = os.getenv("TG_CHAT_ID")


3. Отправка сообщения с валидацией
Формируем запрос


def send_telegram_notification(text: str):
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
payload = {"chat_id": CHAT_ID, "text": text}

with httpx.Client(http2=True, timeout=10.0) as client:
r = client.post(url, json=payload)
r.raise_for_status()

resp = r.json()
# Важно учесть: Telegram возвращает HTTP 200 даже при ошибках логики бота
if not resp.get("ok"):
raise RuntimeError(f"Telegram API Error: {resp}")
return resp

send_telegram_notification("Система мониторинга: все в норме :)")


⭐️ Пост Guru Python:
Сергей Филичкин
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥1👏1
#Собес #python #dict #decorator

🤔 Middle Python Developer в компанию Yappy

Техническое собеседование. Лето 2024. Опыт в резюме: 4 года. Проект: вертикальные видео. Вопросы затрагивали реальные кейсы из высоконагруженного проекта.

💬 Вопросы:

- Что такое команда git cherry-pick?

- Что такое декораторы?

- Что такое индексы и как они работают?

- Что может быть ключом в словаре?

- В чем отличие асинхронности, threading'га и мультипроцессинга?

👉 Все вопросы из этого собеседования (27)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #deployment #probe #resource_limits
🤔 Каковы лучшие практики развертывания приложений в Kubernetes?

💬 Кратко:

Чтобы правильно развернуть приложение в Kubernetes, следует:

- Использовать декларативный подход (Deployment, Helm).
- Разделять сервисы по разным namespace.
- Настраивать liveness и readiness probe для мониторинга состояния Pod-ов.
- Определять resource limits и requests для оптимального распределения ресурсов.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#tool #графы
📚 Терялся в собственном коде?

Встречай Gitvizz, инструмент, который мгновенно превращает кодовую базу в интерактивные графы, чтобы наглядно увидеть, как всё связано

Перейти к материалу

👉 База вопросов 👉 Новости
👍1
Forwarded from YeaHub
🚀 В январе перед нами стояли три ключевые задачи.

1. Миграция на Next.js
Мы перевели публичную часть проекта на Next.js, а дашборд оставили на React.js. Основные работы почти завершены — сейчас занимаемся тестированием и финальными правками.
В процессе столкнулись с рядом инфраструктурных вызовов: текущих ресурсов сервера оказалось недостаточно под новые проекты, поэтому пришлось масштабироваться. Впереди также большая работа по настройке SEO.

2. Сервис для лайвкодинга
Мы разрабатываем сервис лайвкодинга — аналог LeetCode с задачами российских компаний с реальных собеседований. У проекта большие планы:

— проведение контестов,
— обучающие модули,
— курс по алгоритмам,
— ИИ-помощник с построчным разбором решений,
— челленджи и соревнования между пользователями (пока держим в секрете).

Базовая версия сервиса уже готова и проходит тестирование. Совсем скоро — релиз.

3. Сервис уведомлений
Мы начали разработку сервиса уведомлений, который объединит всю нашу экосистему: платформу, Telegram-каналы и бота.

В Telegram будут публиковаться:

— новые собеседования,
— вопросы и задачи,
— статьи и подборки,
— анонсы,
— вакансии,
— статистика с HH.

Наша цель — сделать каналы максимально полезными, чтобы вы всегда были в курсе обновлений и нового контента.

Дополнительно
В работе также находится сервис тестов с вариантами ответов и системой разделения вопросов по темам — для будущего роадмапа. Пока эти направления развиваются в «лайт»-режиме.

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

P.S. Новогодние скидки продолжают действовать до запуска сервиса лайвкодинга. После релиза цены увеличатся в 2 раза — сейчас самое выгодное время подключиться и поддержать нас.

👉 Членство YeaHub

Впереди много интересного. Спасибо, что вы с нами.✊🏻🚀💪
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #denormalization #optimization #database
🤔 Где может быть полезно отсутствие нормализации?

💬 Кратко:

Отсутствие нормализации (денормализация) полезно в системах, где важнее скорость чтения данных, чем их целостность и эффективность записи. Это часто встречается в хранилищах данных и системах бизнес-аналитики, где выполняются сложные аналитические запросы. Денормализация уменьшает количество JOIN-операций между таблицами, что ускоряет выполнение запросов. Она также применяется в базах данных, оптимизированных для записи, где данные редко изменяются. Однако это требует более тщательного контроля за целостностью данных на уровне приложения.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Потоковая обработка данных. Как еще можно применять генераторы в Python

Генераторы стали основой для работы с непрерывными потоками информации: live-метрики, события IoT, стримы логов и real-time аналитика

Например генератор потока данных от сенсора
import time
import random

def sensor_stream(sensor_id):
"""Поток показаний сенсора"""
value = 50.0
while True:
value += 1 # Новое показание
yield {
'sensor': sensor_id,
'value': value,
'timestamp': time.time()
}
time.sleep(1) # Задержка между измерениями


Фильтрация + агрегация на лету
def process_stream(stream, max_value=100):
"""Фильтрует аномалии и считает среднее за последние 5 значений"""
buffer = []
for point in stream:
if 0 < point['value'] < max_value: # Фильтрация
buffer.append(point['value'])
buffer = buffer[-5:] # Последние 5 значений

point['avg'] = sum(buffer) / len(buffer)
yield point


Применение в мониторинге систем
# Создаём поток данных
stream = sensor_stream('server_temp')
processed = process_stream(stream)

# Мониторим
for point in processed:
print(f"{point['sensor']}: {point['value']}°C (avg: {point['avg']:.1f})")

if point['avg'] > 30:
print("⚠️ Внимание")


Ключевые преимущества такого подхода:

1. Композируемость — генераторы легко объединяются в цепочки
2. Ресурсная эффективность — не храним полные массивы данных
3. Раннее обнаружение проблем — многие проблемы видно сразу, а не после обработки всего массива

⚡️
Генераторы позволяют обрабатывать данные в момент их появления, что критично для систем, в которых нужно отслеживать данные в реальном времени

⭐️ Пост Guru Python:
Сергей Филичкин
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1
#Собес #scrape #metrics #prometheus

🤔 Middle Python Backend-разработчик в компанию ОКБ

Техническое собеседование. Вилка 220к. Много тупых и ненужных вопросов на второстепенные технологии.

💬 Вопросы:

- Что такое Redis и как он используется?

- Какие инструменты используются для мониторинга? (Prometheus, Grafana, Sentry)

- Как Redis может помочь в кэшировании данных?

- Разница микросервисов и монолита

- Каковы преимущества и недостатки использования ORM, такой как SQLAlchemy?

👉 Все вопросы из этого собеседования (15)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #gitignore
🤔 Что делает файл .gitignore?

💬 Кратко:

Файл .gitignore определяет файлы и папки, которые Git должен игнорировать. Это используется для исключения временных файлов, логов, зависимостей, сгенерированных файлов и других ненужных элементов.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#podcast #всё
📚 Подкасты Y_LAB

Здесь вы найдете разнообразный IT-контент: от глубоких технических обсуждений до увлекательных и расслабляющих бесед. Наши эпизоды охватывают широкий спектр тем, связанных с разработкой и новейшими технологиями, чтобы каждый разработчик нашел что-то для себя. Присоединяйтесь к нам, чтобы углубить свои знания, оставаться в тренде и вдохновляться новыми идеями!

Перейти к материалу

👉 База вопросов 👉 Новости
#Собес #aenter #aexit
🤔 Какие методы используются в асинхронном контекстном менеджере

💬 Кратко:

Асинхронный контекстный менеджер использует два метода: __aenter__ и __aexit__. Они являются асинхронными и возвращают корутины. __aenter__ вызывается при входе в async with. __aexit__ вызывается при выходе из блока, даже если произошла ошибка. Эти методы позволяют управлять ресурсами безопасно.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Когда действительно нужны итераторы в python

И первое с чего нужно начать — итераторы нужны не ради экономия памяти, а они нужны ради контроля над чтением данных

Самый простой пример:
class DataStream:
def __init__(self, source):
self.source = source
self.pos = 0

def __iter__(self):
return self

def __next__(self):
if self.pos >= len(self.source):
raise StopIteration
value = self.source[self.pos]
self.pos += 1
return value


Такой объект читает данные по одному элементу и запоминает позицию

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

stream = DataStream([1, 2, 3])

list(stream) # [1, 2, 3]
list(stream) # []


По сути если объект можно читать сколько угодно раз — это скорее коллекция
А если можно прочитать только один раз — это поток


Итератор — это одноразовый поток

В целом можно сделать и через генератор:
def stream(data):
for x in data:
yield x


Но так стоит делать в следующих ситуациях:
- нет необходимости возвращаться назад
- нет внешних эффектов
- не нужно управление процессом чтения

Но как только появится задача вроде "продолжить с места последнего падения" или "повторить последний шаг" — с генератором может быть больше проблем, чем пользы

Как можно сохранить позицию, например:
class CheckpointStream(DataStream):
def checkpoint(self):
return self.pos

def restore(self, pos):
self.pos = pos

stream = CheckpointStream([100, 200, 300])

print(next(stream)) # 100
saved = stream.checkpoint()

print(next(stream)) # 200
stream.restore(saved)

print(next(stream)) # снова 200


Так работают пакетные обработки, конвейеры данных и повторные запуски после ошибок


А асинхронный вариант может выглядеть так:
class AsyncStream:
def __aiter__(self):
return self

async def __anext__(self):
...

# Дальше обычный цикл:
async for item in stream:
...



Если подытожить:
Генератор — удобный синтаксис
Итератор — инструмент управления

Если контроль над данными и позициями не нужен — не усложняйте код, можете просто использовать генератор


⭐️ Пост Guru Python:
Сергей Филичкин
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1
#Собес #hash #idempotency #index

🤔 Middle+ Python Backend-разработчик в компанию GoSolve

Техническое собеседование в USA компанию. Вилка 6500$.

💬 Вопросы:

- Что такое FastAPI и какие у него ключевые особенности?

- Что произойдёт, если перед корутиной не использовать await?

- В чём заключаются ключевые различия между FastAPI и Django, и в каких случаях предпочтительно использовать каждый из этих фреймворков?

- Как интегрировать сторонние API и какие подходы позволяют корректно обрабатывать входящие webhook-события?

- Как следует действовать, если во входящем событии отсутствует идентификатор, но необходимо обеспечить идемпотентную обработку без повторного выполнения действий?

👉 Все вопросы из этого собеседования (12)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
🔥2
#Собес #seq_scan #index #b-tree
🤔 Если в запросе Seq Scan по полю с датой, что это значит? Какой индекс накинуть на дату и почему? (B-tree vs Hash).

💬 Кратко:

Seq Scan (sequential scan) means что база данных читает всю таблицу для выполнения запроса, что медленно для больших таблиц. Для поля с датой следует создать B-tree индекс, потому что B-tree поддерживает range queries (например, поиск по периоду), while Hash индекс only supports equality checks.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
Анонсы → канал
Комьюнити → чат
База задач и вопросов → платформа
👍2
#tool #профиль
📚 Awesome GitHub Profile: ваш профессиональный бренд в цифровом мире

Это уникальный инструмент для персонализации вашего GitHub-профиля, который поможет вам создать впечатляющее портфолио и выделиться среди других разработчиков.

Перейти к материалу

📣 Все для прокачки навыков:
Анонсы → канал
Комьюнити → чат
База задач и вопросов → платформа
#Собес #typing #static_analysis #mypy
🤔 Плюсы и минусы типизации в Python

💬 Кратко:

Типизация помогает избежать ошибок и улучшает автодополнение. Однако Python остаётся динамическим языком, и типы не проверяются во время исполнения. Главный плюс — читаемость и поддержка. Минус — добавление "шума" и необходимость использования внешних инструментов (например, mypy).

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
Анонсы → канал
Комьюнити → чат
База задач и вопросов → платформа
#Собес #python #dict #solid

🤔 Middle Python (Fast API) Backend разработчик в компанию НПФ Будущее

Техническое собеседование. Весна 2025.

💬 Вопросы:

- Какие есть типы данных в Python?

- Что такое абстрактные классы?

- Как реализовать транзакции через SQL-запросы?

- Для нагрузочного тестирования нужно добавить 10,000 клиентов в базу данных. Как бы вы это сделали?

- Использовали ли Redis для Celery?

👉 Все вопросы из этого собеседования (16)

📣 Все для прокачки навыков:
Анонсы → канал
Комьюнити → чат
База задач и вопросов → платформа
1