Python вопросы с собеседований
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام 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.
Почему важно понимать, когда значения «захватываются», а когда — «ссылаются».
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
