Python вопросы с собеседований
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd
Ko'proq ko'rsatish📈 Telegram kanali Python вопросы с собеседований analitikasi
Python вопросы с собеседований (@python_job_interview) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 24 966 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 5 488-o'rinni va Rossiya mintaqasida 26 804-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 24 966 obunachiga ega bo‘ldi.
05 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -153 ga, so‘nggi 24 soatda esa -5 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 6.12% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 3.05% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 527 marta ko‘riladi; birinchi sutkada odatda 762 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 8 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent github, api, собеседование, git, docker kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Вопросы с собеседований по Python
@workakkk - админ
@machinelearning_interview - вопросы с собесдований по Ml
@pro_python_code - Python
@data_analysis_ml - анализ данных на Python
@itchannels_telegram - 🔥 главное в ит
РКН: clck.ru/3FmrFd”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 06 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
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.
Почему важно понимать, когда значения «захватываются», а когда — «ссылаются».
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
