Python вопросы с собеседований
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd
Показати більше📈 Аналітичний огляд Telegram-каналу Python вопросы с собеседований
Канал Python вопросы с собеседований (@python_job_interview) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 24 966 підписників, посідаючи 5 488 місце в категорії Технології та додатки та 26 804 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 24 966 підписників.
За останніми даними від 05 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -153, а за останні 24 години на -5, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 6.12%. Протягом перших 24 годин після публікації контент зазвичай збирає 3.05% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 1 527 переглядів. Протягом першої доби публікація в середньому набирає 762 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 8.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як github, api, собеседование, git, docker.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Вопросы с собеседований по Python
@workakkk - админ
@machinelearning_interview - вопросы с собесдований по Ml
@pro_python_code - Python
@data_analysis_ml - анализ данных на Python
@itchannels_telegram - 🔥 главное в ит
РКН: clck.ru/3FmrFd”
Завдяки високій частоті оновлень (останні дані отримано 06 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
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
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("Снова видно")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
@pythonl
# Медленно: обращение к свойствам объекта в цикле
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
# Прирост в скорости особенно заметен при больших объёмах данных```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 #cheatsheetdef 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
Пояснение:
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
print(f"x = {x}, y = {y}, z = {z}")
Пиши так:
print(f"{x=}, {y=}, {z=}")
x=42, y='hello', z=[1, 2, 3]
🔥 А ещё лучше — используем := (оператор моржа) для печати и присваивания одновременно:
print(f"{(n := len(mylist))=}")
✅ Это одновременно сохранит len(mylist) в n и выведет его:
n=5@smart_cache, который кэширует результаты функции с учетом следующих требований:
1. Интеллектуальная очистка кэша — автоматически удаляет старые записи при превышении лимита
2. Поддержка разных стратегий вытеснения — LRU, LFU, FIFO
3. Таймаут кэша — автоматическое удаление записей по времени
4. Метрики использования — сбор статистики по попаданиям/промахам
5. Потокобезопасность — корректная работа в многопоточной среде
6. Поддержка методов классов — корректная работа с self и cls
🧩 Пример использования
import time
from threading import Thread
@smart_cache(maxsize=100, strategy='LRU', ttl=300, collect_stats=True)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
class MathUtils:
@smart_cache(maxsize=50, strategy='LFU', ttl=600)
def expensive_calc(self, x, y):
time.sleep(0.1) # Имитация тяжелых вычислений
return x ** y + y ** x
# Использование
print(fibonacci(10)) # Вычисление
print(fibonacci(10)) # Из кэша
# Получение статистики
stats = fibonacci.cache_stats()
print(f"Cache hits: {stats['hits']}, misses: {stats['misses']}")
# Принудительная очистка
fibonacci.cache_clear()
# Многопоточное использование
def worker():
for i in range(5):
fibonacci(i)
threads = [Thread(target=worker) for _ in range(3)]
for t in threads:
t.start()
for t in threads:
t.join()
🛠 Требования к реализации
- Используйте только стандартную библиотеку Python
- Поддержка Python 3.7+
- Все стратегии вытеснения должны быть реализованы (LRU, LFU, FIFO)
- TTL должен работать как для отдельных записей, так и глобально
- Статистика должна включать: hits, misses, evictions, current_size
- Декоратор должен корректно работать с kwargs, *args
- Потокобезопасность через threading.Lock или аналоги
🧪 Бонусное задание
Реализуйте методы:
- cache_info() — подробная информация о текущем состоянии кэша
- cache_warmup(**kwargs) — предварительное заполнение кэша
- cache_persist(filename) — сохранение кэша в файл
- cache_load(filename) — загрузка кэша из файла
@python_job_interview
funcs = []
for i in range(3):
def f():
return i
funcs.append(f)
results = [func() for func in funcs]
print(results)
❓ Что будет выведено?
Многие ожидают:
[0, 1, 2]
Но Python выведет:
[2, 2, 2]
🧠 Почему так?
В Python функции не копируют значения переменных, а запоминают ссылки на них.
Когда f() вызывается, она смотрит, чему равен i на момент вызова, а не на момент создания функции.
Переменная i в цикле после завершения становится равной 2 — и все три функции ссылаются на одну и ту же переменную i.
✅ Как это исправить?
Нужно «захватить» текущее значение i в локальной области видимости через аргумент по умолчанию:
funcs = []
for i in range(3):
def f(i=i):
return i
funcs.append(f)
results = [func() for func in funcs]
print(results) # [0, 1, 2]
🧠 Чему это учит:
Как работают замыкания и области видимости в Python.
Почему важно понимать, когда значения «захватываются», а когда — «ссылаются».
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
