📖 Типовая задача на собеседование Python
Условие задачи:
Напишите функцию, которая возвращает n-ое число Фибоначчи. Числа Фибоначчи определяются следующим образом:
— F(0) = 0
— F(1) = 1
— F(n) = F(n-1) + F(n-2) для n > 1
Примеры:
— Для n = 10 ожидается результат 55
— Для n = 15 — 610
Решение:
Пояснение:
1️⃣ При n = 0 и n = 1 функция возвращает предопределённые значения 0 и 1 соответственно.
2️⃣ Для n > 1 используются две переменные a и b, которые хранят предыдущие числа Фибоначчи. На каждом шаге цикла они обновляются: a принимает значение b; b — сумму a + b. После завершения цикла возвращается b, содержащее искомое число.
3️⃣ Время работы: O(n), так как требуется n итераций. Память: O(1), потому что используются только две переменные.
Пишите свои варианты решения в комментариях 👇
@python_job_interview
Условие задачи:
Напишите функцию, которая возвращает n-ое число Фибоначчи. Числа Фибоначчи определяются следующим образом:
— F(0) = 0
— F(1) = 1
— F(n) = F(n-1) + F(n-2) для n > 1
Примеры:
— Для n = 10 ожидается результат 55
— Для n = 15 — 610
Решение:
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
a, b = 0, 1
for _ in range(2, n + 1):
a, b = b, a + b
return b
# Тестирование
print(fibonacci(10)) # 55
print(fibonacci(15)) # 610
Пояснение:
2️⃣ Для n > 1 используются две переменные a и b, которые хранят предыдущие числа Фибоначчи. На каждом шаге цикла они обновляются: a принимает значение b; b — сумму a + b. После завершения цикла возвращается b, содержащее искомое число.
3️⃣ Время работы: O(n), так как требуется n итераций. Память: O(1), потому что используются только две переменные.
Пишите свои варианты решения в комментариях 👇
@python_job_interview
👍6❤3🔥2
Хочешь понять, какие инструменты реально нужны Python-разработчику? Лови универсальную шпаргалку по лучшим библиотекам и технологиям — от новичка до синьора.
📦 Управление пакетами
→
pip
, conda
, poetry
— устанавливай, обновляй, фиксируй зависимости без боли.🧠 AI & ML
→
TensorFlow
, PyTorch
, Scikit-learn
— машинное обучение и нейросети. →
NumPy
, Pandas
, Matplotlib
, Seaborn
— анализ и визуализация данных.⚙️ Автоматизация и AI-агенты
→
LangGraph
, CrewAI
— создание LLM-агентов и пайплайнов. →
Airflow
, Celery
, Luigi
— ETL, очереди задач и планировщики.🌐 Веб-фреймворки
→
Django
, Flask
, FastAPI
— под любой масштаб. →
Tornado
, Pyramid
— для сложных архитектур.📊 Базы данных
→
PostgreSQL
, MySQL
, MongoDB
, SQLite
, Redis
, Cassandra
— SQL и NoSQL.✍️ Тестирование
→
Pytest
, Unittest
, nose2
— пишем надёжный и протестированный код.🔍 Web Scraping
→
BeautifulSoup
, Scrapy
, Selenium
, Playwright
— вытаскиваем данные даже с "закрытых" сайтов.🤓 DevOps и деплой
→
Docker
, Kubernetes
, AWS
, Heroku
, GCP
, Azure
— всё для продакшн-сборок.⌨️ IDE и редакторы
→
VS Code
, PyCharm
, Jupyter
, Spyder
— выбирай, где удобнее кодить.💡 Git и CI/CD
→
Git
, GitHub
, GitLab
, Bitbucket
— контроль версий и автоматизация сборок.🔥 Это не просто список. Это твой ориентир в мире Python. Сохрани, чтобы не искать дважды.
#python #разработка #шпаргалка #devtools #cheatsheet
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2⚡1🐳1
🔥 Полный гайд по подготовке к собеседованиям по программированию в 2025 году
Подготовка к собеседованиям по программированию постоянно развивается. Компании используют всё более сложные задачи, включающие алгоритмы, структуры данных, проектирование систем и вопросы о поведении кандидата.
В 2025 году собеседования остаются серьёзным испытанием: от вас ждут не только знания, но и умение объяснять свои мысли, работать с ограниченным временем и применять системный подход.
В этом руководстве мы собрали лучшие практики подготовки, советы по решению сложных задач и примеры вопросов, чтобы вы смогли уверенно подойти к собеседованию.
🔜 Читать подробнее
Подготовка к собеседованиям по программированию постоянно развивается. Компании используют всё более сложные задачи, включающие алгоритмы, структуры данных, проектирование систем и вопросы о поведении кандидата.
В 2025 году собеседования остаются серьёзным испытанием: от вас ждут не только знания, но и умение объяснять свои мысли, работать с ограниченным временем и применять системный подход.
В этом руководстве мы собрали лучшие практики подготовки, советы по решению сложных задач и примеры вопросов, чтобы вы смогли уверенно подойти к собеседованию.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 УСКОРЕНИЕ КОДА ЗА СЧЁТ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ
💡 Используй локальные переменные внутри циклов — это может ускорить выполнение на 20–30%, особенно в критичных по времени участках.
Почему это работает?
В Python доступ к локальной переменной быстрее, чем к глобальной или объектной, потому что локальные хранятся в массиве, а не в словаре.
Пример:
# Прирост в скорости особенно заметен при больших объёмах данных```
💡 Используй локальные переменные внутри циклов — это может ускорить выполнение на 20–30%, особенно в критичных по времени участках.
Почему это работает?
В Python доступ к локальной переменной быстрее, чем к глобальной или объектной, потому что локальные хранятся в массиве, а не в словаре.
Пример:
# Медленно: обращение к свойствам объекта в цикле
class Processor:
def __init__(self, data):
self.data = data
def compute(self):
total = 0
for item in self.data:
total += item * item
return total
# Быстрее: кэшируем ссылку на data как локальную переменную
class Processor:
def __init__(self, data):
self.data = data
def compute(self):
data = self.data # локальная переменная
total = 0
for item in data:
total += item * item
return total
# Прирост в скорости особенно заметен при больших объёмах данных```
👍15🤯10❤7👎2🔥2
🧠 Почему
🐍 tinyio — это минималистичный event loop для Python (всего ~200 строк), который работает через
Что умеет:
•
• Параллельный запуск:
• Фоновые задачи:
• Прерывание всех задач при одной ошибке
• Встроенные
Пример:
Когда нужно просто и понятно — tinyio делает то, что должен. Никакой магии.
🔗 https://github.com/patrick-kidger/tinyio
@python_job_interview
asyncio
вызывает боль? Потому что даже простая ошибка может сломать всю цепочку задач.🐍 tinyio — это минималистичный event loop для Python (всего ~200 строк), который работает через
yield
, а не await
, и делает асинхронность прозрачной.Что умеет:
•
yield
вместо await
: проще отлаживать и понимать• Параллельный запуск:
yield [task1(), task2()]
• Фоновые задачи:
yield {task1(), task2()}
• Прерывание всех задач при одной ошибке
• Встроенные
Lock
, Semaphore
, Event
, timeout
Пример:
def slow_add(x):
yield tinyio.sleep(1)
return x + 1
def main():
a, b = yield [slow_add(1), slow_add(2)]
return a + b
Loop().run(main()) # → 5
Когда нужно просто и понятно — tinyio делает то, что должен. Никакой магии.
🔗 https://github.com/patrick-kidger/tinyio
@python_job_interview
👎9❤3👍3🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Этот трюк нужен, чтобы временно отключить принты не удаляя и не комментируя строки вручную.
На экране простой способ сделать это через контекстный менеджер — без сторонних библиотек и без комментирования строк.
import sys, os
from contextlib import contextmanager
@contextmanager
def suppress_print():
saved = sys.stdout
sys.stdout = open(os.devnull, 'w')
yield
sys.stdout.close()
sys.stdout = saved
Пример:
print("Это видно")
with suppress_print():
print("А это — нет")
print("Снова видно")
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🥰3❤2
Forwarded from Анализ данных (Data analysis)
Многие привычные библиотеки (pandas, NumPy, scikit-learn) можно заменить их GPU-версией, сохранив API.
Это даёт прирост скорости в десятки раз.
-
pandas
→ %load_ext cudf.pandas
-
polars
→ .collect(engine="gpu")
-
scikit-learn
→ %load_ext cuml.accel
-
xgboost
→ device="cuda"
-
umap
→ %load_ext cuml.accel
-
hdbscan
→ %load_ext cuml.accel
-
networkx
→ %env NX_CUGRAPH_AUTOCONFIG=True
🚀 Плюсы:
- Минимальные изменения кода (API почти идентичен).
- GPU-ускорение: от 10х до 100х быстрее на больших данных.
- Отлично подходит для ETL, ML и обработки сигналов.
Если ты работаешь с большими данными в Python, достаточно «заменить импорт» и получить колоссальный прирост скорости без боли и переписывания кода.
🚀 Подробнее: developer.nvidia.com/blog/7-drop-in-replacements-to-instantly-speed-up-your-python-data-science-workflows
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍2🔥2
Как сделать помощника, который помнит контекст?
Голосовые ассистенты и LLM-сервисы — это круто, но... они часто не знают контекста. Или забывают, что вы им сказали полминуты назад.
Что, если помощник действительно помнил бы:
— кто вы
— что вы уже спрашивали
— и какие у вас были кейсы в прошлом?
На вебинаре Яндекса расскажут, как это реализовать через RAG + YDB:
🧠 память с помощью эмбеддингов
🔍 векторный поиск с фильтрацией
⚙️ масштабируемое и быстрое решение на SQL
Подходит как для внутренних ИИ-сервисов, так и для клиентских продуктов.
Голосовые ассистенты и LLM-сервисы — это круто, но... они часто не знают контекста. Или забывают, что вы им сказали полминуты назад.
Что, если помощник действительно помнил бы:
— кто вы
— что вы уже спрашивали
— и какие у вас были кейсы в прошлом?
На вебинаре Яндекса расскажут, как это реализовать через RAG + YDB:
🧠 память с помощью эмбеддингов
🔍 векторный поиск с фильтрацией
⚙️ масштабируемое и быстрое решение на SQL
Подходит как для внутренних ИИ-сервисов, так и для клиентских продуктов.
❤3
🔑 Сложная задача для собеседования по Python
Условие:
Рассмотрим следующий фрагмент кода с использованием
Вопрос:
Что будет выведено в консоль и почему?
Варианты ответов:
1)
2)
3)
4)
Правильный ответ:3)
Пояснение:
1️⃣ Проблема в декораторе: обычный -декоратор не совместим с асинхронными функциями. При вызове внутри , декоратор не дожидается выполнения корутины, возвращая .
2️⃣ Почему :
— сохраняет не результат, а корутину ( ).
— При повторном обращении к кешу возвращается эта корутина, но вне декоратора не применяется.
— Фактически, все задачи получают первую сохраненную корутину (для x=0), которая всегда возвращает 0.
3️⃣ Чтобы исправить код нужно использовать и сделать декоратор асинхронным.
Пишите свои варианты решения в комментариях 🔽
@python_job_interview
Условие:
Рассмотрим следующий фрагмент кода с использованием
asyncio
и декораторов:
import asyncio
def cache(func):
cache = {}
async def wrapper(*args):
if args not in cache:
cache[args] = await func(*args)
return cache[args]
return wrapper
@cache
async def expensive_operation(x):
await asyncio.sleep(1)
return x * 2
async def main():
tasks = [expensive_operation(i) for i in range(3)]
results = await asyncio.gather(*tasks)
print(results)
asyncio.run(main())
Вопрос:
Что будет выведено в консоль и почему?
Варианты ответов:
1)
[0, 2, 4]
— вывод корректный, кеширование работает 2)
RuntimeError
— возникает из-за неправильного использования await в декораторе 3)
[0, 0, 0]
— возникает ошибка кеширования 4)
[2, 2, 2]
— декоратор мешает асинхронности Правильный ответ:
Пояснение:
1️⃣ Проблема в декораторе: обычный
def
await func(args)
wrapper
None
2️⃣ Почему
[0, 0, 0]
—
cache[args]
<coroutine object...>
— При повторном обращении к кешу возвращается эта корутина, но
await
— Фактически, все задачи получают первую сохраненную корутину (для x=0), которая всегда возвращает 0.
3️⃣ Чтобы исправить код нужно использовать
functools.wraps
Пишите свои варианты решения в комментариях 🔽
@python_job_interview
❤5👍3🔥1👌1
Forwarded from Machinelearning
⚡ Agent Lightning — ускоритель обучения для ИИ-агентов от Microsoft
Agent Lightning — это фреймворк для обучения и оптимизации LLM-агентов с помощью Reinforcement Learning без изменения их кода.
🧠 Поддерживает:
• LangChain
• AutoGen
• OpenAI Agents SDK
• и другие фреймворки на Python
🔧 Как он работает:
• Агент не нужно переписывать — он подключается как есть
• Вся его работа разбивается на отдельные шаги (эпизоды), которые можно анализировать
• Специальный алгоритм LightningRL оценивает, какие действия были полезны, а какие — нет
• Система может учитывать не только финальный результат, но и промежуточные сигналы (награды)
• Эти данные автоматически собираются и используются для дообучения агента
🔥 Преимущества:
• Не требует модификации логики агента
• Можно легко подключить к существующим пайплайнам
• Улучшает точность и устойчивость в сложных задачах: от генерации кода до Text-to-SQL
Отличный инструмент для всех, кто хочет сделать своих LLM-агентов.
🟠 Проект: https://microsoft.com/en-us/research/project/agent-lightning/
🟠 Статья: https://arxiv.org/abs/2508.03680
🟠 Github: https://github.com/microsoft/agent-lightning
@ai_machinelearning_big_data
#agent #reinforcementlearning #mlops #llm #Microsoft
Agent Lightning — это фреймворк для обучения и оптимизации LLM-агентов с помощью Reinforcement Learning без изменения их кода.
🧠 Поддерживает:
• LangChain
• AutoGen
• OpenAI Agents SDK
• и другие фреймворки на Python
🔧 Как он работает:
• Агент не нужно переписывать — он подключается как есть
• Вся его работа разбивается на отдельные шаги (эпизоды), которые можно анализировать
• Специальный алгоритм LightningRL оценивает, какие действия были полезны, а какие — нет
• Система может учитывать не только финальный результат, но и промежуточные сигналы (награды)
• Эти данные автоматически собираются и используются для дообучения агента
🔥 Преимущества:
• Не требует модификации логики агента
• Можно легко подключить к существующим пайплайнам
• Улучшает точность и устойчивость в сложных задачах: от генерации кода до Text-to-SQL
Отличный инструмент для всех, кто хочет сделать своих LLM-агентов.
@ai_machinelearning_big_data
#agent #reinforcementlearning #mlops #llm #Microsoft
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2🥰2