Python Backend | YeaHub
1.14K subscribers
147 photos
37 videos
6 files
229 links
Теория, подготовка к интервью и курсы для Python разработчиков

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

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

Для связи: @ruslan_kuyanets
Download Telegram
Channel created
Please open Telegram to view this post
VIEW IN TELEGRAM
👨🏻‍💻 Python Developer

Локация: Удаленно в РФ
Компания: Медиа Ком
ЗП: от 150 000 до 250 000 р.
Занятость: Полная

Обязанности:
▪️ Командная web-разработка;
▪️ Участие в проектировании архитектуры приложений и моделей данных;
▪️ Интеграция с внешними и внутренними API. Поддержка реализованного функционала;
▪️ Оптимизация сервисов под высокие нагрузки;
▪️ Сопровождение и документирование написанного кода;
▪️ Code-review.

Требования:
▪️ Уверенное владение Python (версии 3+)
▪️ Опыт разработки клиент-серверных веб-приложений;
▪️ Уверенное знание SQL; Git; Linux;
▪️ Понимание алгоритмов и структур данных; Понимание принципов ООП.

Что мы предлагаем:
▪️ Удаленный формат работы;
▪️ Работу в команде увлеченных и профессиональных людей;
▪️ Решение сложных и интересных задач;
▪️ График работы: 5/2 (09-18:00 МСК!);
▪️ Полностью белую ЗП (отталкиваемся от ваших ожиданий);
▪️ Оплату больничного 100%;
▪️ Работу в аккредитованной ИТ-компании.

​​​​​​​​​​​​​ 💬 Резюме отправлять: @ElenBondareva
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Для чего используется IntegerChoices?

IntegerChoices в Django используется для создания выбора из ограниченного набора целочисленных значений для поля модели. Это полезно, когда вам нужно ограничить допустимые значения для поля модели определенными целыми числами, и при этом иметь удобные человекочитаемые названия для этих значений.

🚩Основные плюсы

🟠Читаемость кода
Значения выбора имеют человекочитаемые названия, что делает код более понятным.
🟠Поддержка валидации
Django автоматически проверяет, что значение поля соответствует одному из допустимых значений.
🟠Удобство использования в админке
В Django admin интерфейсе выпадающий список с человекочитаемыми названиями делает работу с данными удобнее.

🚩Пример использования

1⃣Создание класса IntegerChoices
from django.db import models

class Status(models.IntegerChoices):
PENDING = 1, 'Pending'
APPROVED = 2, 'Approved'
REJECTED = 3, 'Rejected'


2⃣Использование IntegerChoices в модели
from django.db import models

class Application(models.Model):
status = models.IntegerField(choices=Status.choices, default=Status.PENDING)
name = models.CharField(max_length=100)
submitted_at = models.DateTimeField(auto_now_add=True)

def __str__(self):
return f"{self.name} - {self.get_status_display()}"


3⃣Пример работы с моделью
# Создание новой записи
app = Application.objects.create(name='John Doe')

# Проверка статуса
print(app.status) # 1
print(app.get_status_display()) # 'Pending'

# Изменение статуса
app.status = Status.APPROVED
app.save()

# Проверка обновленного статуса
print(app.status) # 2
print(app.get_status_display()) # 'Approved'


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 515. Find Largest Value in Each Tree Row

Дан корень двоичного дерева, верните массив наибольших значений в каждой строке дерева (индексация с 0).

Пример:
Input: root = [1,3,2,5,3,null,9]
Output: [1,3,9]


👨‍💻 Алгоритм:

1⃣Если корень дерева равен null (пустое дерево), верните пустой список. Инициализируйте список ans для хранения результатов и очередь с корнем дерева для выполнения поиска в ширину (BFS).

2⃣Выполните BFS, пока очередь не пуста: инициализируйте currMax минимальным значением и сохраните длину очереди в currentLength. Повторите currentLength раз: удалите узел из очереди, обновите currMax, если значение узла больше. Для каждого дочернего узла, если он не равен null, добавьте его в очередь.

3⃣Добавьте currMax в ans. Верните ans.

😊 Решение:
from collections import deque
from typing import List, Optional

class Solution:
def largestValues(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []

ans = []
queue = deque([root])

while queue:
current_length = len(queue)
curr_max = float("-inf")

for _ in range(current_length):
node = queue.popleft()
curr_max = max(curr_max, node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)

ans.append(curr_max)

return ans


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Что такое Миксин?

Миксин (Mixin) – это класс, предназначенный для предоставления определённых методов для использования другими классами, без необходимости становиться родительским классом для этих классов. Главная цель миксина - реализация функциональности, которую можно легко подключить к другому классу. Миксины позволяют разработчикам использовать композицию для добавления функций в классы вместо наследования, что делает структуру кода гибче и модульнее.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Какие типы HTTP запросов знаешь? В чем их отличия?

Типы: GET (получение данных), POST (отправка данных), PUT (обновление ресурса), DELETE (удаление ресурса), PATCH (частичное обновление). GET передаёт параметры в URL, а POST отправляет данные в теле запроса. PUT и DELETE изменяют состояние сервера, а PATCH обновляет только указанные части ресурса.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓 Какой оператор в Python
используется для получения остатка от деления?
Anonymous Quiz
4%
/
15%
//
81%
%
0%
^
#ЧеКак
🤔 Как работает хеш-таблица?

Это структура данных, которая хранит пары ключ-значение и использует хеш-функцию для вычисления индекса.
Хеширование: ключ преобразуется в числовое значение (хеш).
Размещение: хеш определяет индекс, куда сохраняется значение.
Коллизии: если два ключа имеют одинаковый хеш, используется метод разрешения коллизий (связанный список, открытая адресация).
Хеш-таблицы обеспечивают быстрый доступ (O(1)) к данным при правильной реализации.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#Вакансии
👨‍💻 Python Developer

Локация: Удаленно в РФ
Компания: Медиа Ком
ЗП: от 150 000 до 250 000 р.
Занятость: Полная

🚩Обязанности
▪️Командная web-разработка;
▪️Участие в проектировании архитектуры приложений и моделей данных;
▪️Интеграция с внешними и внутренними API. Поддержка реализованного функционала;
▪️Оптимизация сервисов под высокие нагрузки;
▪️Сопровождение и документирование написанного кода;
▪️Code-review.

🚩Требования
▪️ Уверенное владение Python (версии 3+)
▪️Опыт разработки клиент-серверных веб-приложений;
▪️Уверенное знание SQL; Git; Linux;
▪️Понимание алгоритмов и структур данных; Понимание принципов ООП.

🚩Желательно
▪️Знание Django и Django REST Framework;
▪️Знание Flask, FastApi;
▪️Знание aiohttp, асинхронное программирование;
▪️Знание SQLAlchemy;
▪️Опыт работы с PostgreSQL, индексы и оптимизация запросов;
▪️Понимание и умение пользоваться паттернами проектирования.

🚩Что мы предлагаем
▪️Удаленный формат работы;
▪️Работу в команде увлеченных и профессиональных людей;
▪️Решение сложных и интересных задач;
▪️График работы: 5/2 (09-18:00 МСК!);
▪️Полностью белую ЗП (отталкиваемся от ваших ожиданий);

​​​​​​​​​​​​​💬 Резюме отправлять: @ElenBondareva

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какая функция в Python используется для сортировки элементов в итерируемом объекте по ключу?
Anonymous Quiz
40%
sorted(iterable, key=function)
45%
sort(iterable, key=function)
4%
order(iterable, key=function)
11%
arrange(iterable, key=function)
#ЧеКак
🤔 Что такое шардирование?

Это метод горизонтального разделения базы данных, при котором данные распределяются между несколькими серверами (шардами).
🟠Каждый шард содержит уникальный подмножество данных, обеспечивая масштабируемость и повышение производительности.
🟠Используется для работы с большими объёмами данных и снижения нагрузки на один сервер.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 621. Task Scheduler

Вам дан массив задач процессора, каждая из которых представлена буквами от A до Z, и время охлаждения, n. Каждый цикл или интервал позволяет завершить одну задачу. Задачи могут быть выполнены в любом порядке, но есть ограничение: одинаковые задачи должны быть разделены не менее чем n интервалами из-за времени охлаждения. Верните минимальное количество интервалов, необходимое для выполнения всех задач.

Пример:
Input: tasks = ["A","A","A","B","B","B"], n = 2
Output: 8


👨‍💻 Алгоритм:

1⃣Подсчитайте количество каждой задачи и найдите максимальное количество вхождений (maxFreq).

2⃣Вычислите количество интервалов, необходимых для задач с maxFreq: (maxFreq - 1) * (n + 1) + countMaxFreq, где countMaxFreq - количество задач, имеющих maxFreq.

3⃣Верните максимум между вычисленным значением и длиной массива задач, поскольку некоторые задачи могут заполнять интервал до n.

😊 Решение:
from collections import Counter

def leastInterval(tasks, n):
task_counts = Counter(tasks)
max_freq = max(task_counts.values())
count_max_freq = list(task_counts.values()).count(max_freq)

return max(len(tasks), (max_freq - 1) * (n + 1) + count_max_freq)


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какое исключение в Python возникает при попытке выполнить операцию, которая математически недопустима?
Anonymous Quiz
10%
ValueError
43%
MathError
16%
ArithmeticError
31%
ZeroDivisionError