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

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

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

Для связи: @ruslan_kuyanets
Download 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
#ЛитКод
Задача: 1496. Path Crossing

Дана строка path, где path[i] = 'N', 'S', 'E' или 'W', каждая из которых представляет движение на одну единицу на север, юг, восток или запад соответственно. Вы начинаете с точки (0, 0) на 2D плоскости и идете по пути, указанному в path.

Верните true, если путь пересекает сам себя в какой-либо точке, то есть если вы в какой-то момент окажетесь в месте, которое уже посещали ранее. В противном случае верните false.

Пример:
Input: path = "NESWW"
Output: true
Explanation: Notice that the path visits the origin twice.


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

1⃣Инициализация переменных
Создать хэш-карту moves, которая сопоставляет символы 'N', 'S', 'E', 'W' с соответствующими значениями. Инициализировать множество visited с начальной точкой (0, 0). Установить начальные координаты x = 0 и y = 0.

2⃣Проход по строке path
Для каждого символа c в path получить значения (dx, dy) из moves[c]. Обновить координаты: добавить dx к x и dy к y. Проверить, содержится ли текущая точка (x, y) в visited. Если да, вернуть true. Добавить текущую точку (x, y) в visited.

3⃣Возврат результата
Если ни одна точка не пересекалась, вернуть false.

😊 Решение:
class Solution:
def isPathCrossing(self, path: str) -> bool:
moves = {'N': (0, 1), 'S': (0, -1), 'E': (1, 0), 'W': (-1, 0)}
visited = {(0, 0)}
x = y = 0

for c in path:
dx, dy = moves[c]
x += dx
y += dy
if (x, y) in visited:
return True
visited.add((x, y))

return False


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

🟠Высокая производительность: использует Starlette и Pydantic, обеспечивая быстрый отклик.
🟠Асинхронность: поддерживает async/await для обработки множества запросов одновременно.
🟠Автогенерация документации: автоматически создаёт OpenAPI-спецификации и Swagger UI.
🟠Удобство валидации: встроенная поддержка проверки данных.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой атрибут словаря в Python возвращает список кортежей, где каждый кортеж содержит пару ключ-значение?
Anonymous Quiz
17%
dict.keys()
25%
dict.values()
47%
dict.items()
11%
dict.pairs()
Разработчик Python под Linux (middle|senior)

Локация: Удаленно в РФ, весь мир (при наличии карты РФ для зп)
Компания: Ideco (Айдеко)
ЗП: от 250 000 до 400 000 р. (мидл), от 400 000 до 500 000 р. (сеньор)
Занятость: Полная

Ideco (Айдеко) аккредитованная ИТ-компания, разработчик софта в области информационной безопасности и сетевых технологий (Ideco NGFW, Ideco VPP)

Cтек технологий: Linux Fedora 35, Python 3.10 с постоянным обновлением до новой и стабильной версии, ETCD, Clickhouse, Asyncio, aiohttp.

Таски в разработке по-настоящему разные: от исправления шаблона конфига nginx до реализации приложений по обработке сетевого трафика. Придется постоянно работать на стыке бакенда и системы, поэтому знания Linux обязательны.

🚩Обязанности:
🔵Разрабатывать микросервисы с использованием Asyncio и AioHTTP;
🔵Разрабатывать демоны по настройке и управлению сетью;
🔵Писать системные утилиты в Linux;
🔵Проектировать архитектуру системы и бэкендов;
🔵Участвовать в code review;
🔵Рефакторить - куда ж без этого.

🚩Требования:
🔵Опыт коммерческой разработки, уровень не ниже middle;
🔵Уверенные навыки администрирования Linux;
🔵Уверенное понимание сетевых протоколов, модели OSI, протоколов прикладного уровня (HTTP, TLS, FTP, SMB);
🔵Опыт работы с Systemd;
🔵Опыт работы с виртуализацией;
🔵Опыт проектирования REST API.

🚩От нас для тебя:
🔵сложные, интересные проекты, минимум бюрократии
🔵Сильная команда, постоянный обмен опытом
🔵Понятные роли с прозрачными целями
🔵Бонус за результативность
🔵Внутренняя и внешняя реферальная программа
🔵ДМС со стоматологией
🔵Корпоративный английский
🔵Конкурентная «белая» з/п
🔵Возможность удаленной работы, в том числе за рубежом
🔵Материальная помощь при важных событиях в жизни

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

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

🟠Это инструмент для выполнения задач в фоновом режиме.
🟠Используется для отправки уведомлений, обработки данных, построения отчётов и выполнения длительных операций вне основного потока.
🟠Поддерживает планирование задач и распределённую обработку через брокеры, такие как RabbitMQ или Redis.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как в Python создать функцию, которая принимает произвольное количество позиционных аргументов?
Anonymous Quiz
51%
def func(*args):
21%
def func(**args):
5%
def func(*kwargs):
24%
def func(**kwargs):
#ЛитКод
Задача: 624. Maximum Distance in Arrays

Вам дано m массивов, где каждый массив отсортирован по возрастанию. Вы можете взять два целых числа из двух разных массивов (каждый массив выбирает одно) и вычислить расстояние. Мы определяем расстояние между двумя целыми числами a и b как их абсолютную разность |a - b|. Верните максимальное расстояние.

Пример:
Input: arrays = [[1,2,3],[4,5],[1,2,3]]
Output: 4


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

1⃣Найдите минимальный элемент из всех первых элементов массивов и максимальный элемент из всех последних элементов массивов.

2⃣Рассчитайте максимальное расстояние между минимальным и максимальным элементами.

3⃣Верните это максимальное расстояние.

😎 Решение:
def maxDistance(arrays):
min_val = arrays[0][0]
max_val = arrays[0][-1]
max_distance = 0

for i in range(1, len(arrays)):
max_distance = max(max_distance, abs(arrays[i][-1] - min_val), abs(arrays[i][0] - max_val))
min_val = min(min_val, arrays[i][0])
max_val = max(max_val, arrays[i][-1])

return max_distance


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой метод используется для объединения всех элементов итерируемого объекта в одну строку?
Anonymous Quiz
15%
merge()
61%
join()
9%
concat()
15%
append()
#ЧеКак
🤔 Что такое `kwargs`

Это способ передачи произвольного количества именованных аргументов.
🟠Указывается как **kwargs в объявлении функции.
🟠Аргументы передаются в виде словаря.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как в Python можно получить список всех ключей из словаря?
Anonymous Quiz
51%
dict.keys()
12%
dict.getKeys()
21%
dict.listkeys()
16%
keys(dict)
#ЛитКод
Задача: 628. Maximum Product of Three Numbers

Задав целочисленный массив nums, найдите три числа, произведение которых максимально, и верните максимальное произведение.

Пример:
Input: nums = [1,2,3]
Output: 6


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

1⃣Отсортируйте массив nums.

2⃣Найдите два возможных максимальных произведения: Произведение трех наибольших элементов массива. Произведение двух наименьших (отрицательных) и одного наибольшего элемента массива.

3⃣Верните максимальное из двух найденных произведений.

😎 Решение:
def maximumProduct(nums):
nums.sort()
max1 = nums[-1] * nums[-2] * nums[-3]
max2 = nums[0] * nums[1] * nums[-1]
return max(max1, max2)


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что возвращает функция enumerate() при применении к списку?
Anonymous Quiz
20%
Список элементов
24%
Список индексов
50%
Итератор кортежей (индекс, элемент)
7%
Сумму элементов
#ЧеКак
🤔 Как можно гарантировать закрытие файла без использования with?

Для гарантированного закрытия файла можно использовать конструкцию try и
finally. Вблоке finally будет выполнено закрытие файла, даже если в процессе
работы с файлом возникнет ошибка.

👉 Новости 👉 Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как в Python принудительно завершить выполнение программы?
Anonymous Quiz
22%
stop()
41%
exit()
27%
end()
10%
terminate()
#полезное
🤯 Делаем ошибки более читаемыми

В Python есть удобный модуль pretty_errors, который делает стандартный вывод исключений и их traceback более удобным для чтения.

Для того, чтобы он заработал, достаточно импортировать его в ваш код.
Читать документацию...

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какая функция используется для округления числа до ближайшего целого в Python?
Anonymous Quiz
59%
round()
31%
math.round()
2%
fix()
7%
floor()
#собес
🤯 Что такое контекстный менеджер?

Контекстный менеджер в Python управляет ресурсами, обеспечивая их автоматическое освобождение. Например, с помощью конструкции with open ('file.txt') as f: файл будет автоматически закрыт после завершения блока.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM