ch
Feedback
Python вопросы с собеседований

Python вопросы с собеседований

前往频道在 Telegram

Вопросы с собеседований по 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 822 名订阅者,在 技术与应用 类别中位列第 5 258,并在 俄罗斯 地区排名第 26 472

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 24 822 名订阅者。

根据 25 八月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -44,过去 24 小时变化为 0,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 6.01%。内容发布后 24 小时内通常能获得 2.76% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 1 492 次浏览,首日通常累积 684 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 6
  • 主题关注点: 内容集中在 github, api, собеседование, git, docker 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd

凭借高频更新(最新数据采集于 27 八月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

24 822
订阅者
无数据24 小时
+637
-4430
帖子存档
Repost from Machinelearning
+6
✔️ Alibaba инвестировала $140 млн в ИИ-роботов Alibaba Group и Alibaba Cloud возглавили консорциум по финансированию шэньчжэньского стартапа X Square Robot (осн. 2023). Участвовали HSG, Meituan и Legend Star. Это часть стратегии Alibaba — компания планирует вложить $53 млрд в ИИ-инфраструктуру. Цель сделки — новое поколение «умной робототехники», где ИИ отвечает за автономность и принятие решений. Инвестиция также отражает курс Китая на ускоренное развитие сектора ИИ и робототехники. mktnews.com ✔️ Unitree Robotics готовится к IPO ($7 млрд) Китайский производитель гуманоидных роботов Unitree планирует выйти на шанхайскую биржу STAR Market в IV квартале. Цель — оценка $7 млрд (почти в 6 раз выше июльского раунда). Компания — лидер в Китае по производству роботов-гуманоидов, её продукция используется в университетах и на публичных мероприятиях. Unitree уже прибыльна: выручка >1 млрд юаней ($140 млн). За спиной — Alibaba, Tencent и Geely. Успешное IPO станет ключевым индикатором интереса инвесторов к физическим воплощениям ИИ. reuters.com ✔️ Google снизила цены на Veo 3 и добавила 1080p Стоимость генерации видео в Veo 3 упала: стандартная версия — с $0.75 до $0.40 за секунду (-47%), Veo 3 Fast — до $0.15 (-62.5%). Теперь поддерживаются вертикальные форматы (9:16) и качество 1080p. Обе модели стабильны и доступны через Gemini API. Это сигнал к масштабированию и ценовой конкуренции на рынке видео-ИИ. Veo 3 уже применяется в проектах Invisible Studio, Saga, Mosaic для ускорения контент-продакшена. X.com ✔️ Claude получил доступ к данным смартфона Anthropic расширила возможности ассистента Claude на мобильных устройствах. При разрешении пользователя ИИ теперь может использовать геолокацию, календарь и другие данные для планирования мероприятий и рекомендаций. Это шаг к созданию по-настоящему персональных ИИ-агентов, работающих с контекстом пользователя. Такой подход усиливает конкуренцию среди мобильных ассистентов и закрепляет тренд интеграции ИИ в повседневные процессы. Скачать ✔️ Anthropic поддержала калифорнийский законопроект SB 53 Компания официально выступила в поддержку инициативы сенатора Скотта Винера, регулирующей передовые ИИ-системы. Ключевые положения: • публикация принципов безопасности и прозрачности • уведомление о критических инцидентах в течение 15 дней • защита осведомителей и санкции за нарушения • порог для регулирования — >10²⁶ FLOPs Anthropic отмечает, что закон закрепляет уже применяемые практики и создаёт равные условия для конкуренции. Это первый случай открытой поддержки крупной ИИ-лабораторией регуляторных инициатив. anthropic.com ✔️ Google обновила NotebookLM - Флэшкарты и квизы: формат «вопрос–ответ» + тесты с настройкой сложности. -Reports: авто-рекомендации форматов (блог, white paper, стади-гайд и др.), кастомизация промптов. - ИИ-подкасты: новые режимы — Deep Dive, Brief, Critique, Debate; поддержка всех языков. Примеры, видео, квиза и карточек прикрепили к посту. Notebooklm @ai_machinelearning_big_data #news #ai #ml

🚀 PySentry — это сверхбыстрый сканер уязвимостей для Python-проектов, написанный на Rust, который справляется с аудитом зави
🚀 PySentry — это сверхбыстрый сканер уязвимостей для Python-проектов, написанный на Rust, который справляется с аудитом зависимостей быстро и надёжно. Основное: - Автоматически анализирует файлы зависимостей: uv.lock, poetry.lock, Pipfile.lock, pyproject.toml, Pipfile, requirements.txt и др. - Сверяет зависимости с базами уязвимостей: PyPA Advisory Database, PyPI JSON API, OSV.dev - Поддерживает вывод в формате: человекочитаемом, JSON, SARIF или Markdown — отлично подходит для CI/CD и IDE-интеграций (например, GitHub Security) - Написан на Rust с асинхронной обработкой, многоуровневым кэшированием и оптимизированной резолюцией — очень быстро и эффективно uvx pysentry-rs /path/to/project 🟢 Github

🚀 Фишка на Python: Скачивание нескольких файлов параллельно с помощью ThreadPoolExecutor Этот скрипт использует urllib.reque
🚀 Фишка на Python: Скачивание нескольких файлов параллельно с помощью ThreadPoolExecutor Этот скрипт использует urllib.request + concurrent.futures, чтобы загружать файлы одновременно и значительно ускорить процесс.

import os
import urllib.request

from concurrent.futures import ThreadPoolExecutor, as_completed

def downloader(url):
    """Скачивает указанный URL и сохраняет его на диск"""
    req = urllib.request.urlopen(url)
    filename = os.path.basename(url)
    ext = os.path.splitext(url)[1]
    if not ext:
        raise RuntimeError('URL не содержит расширения')

    with open(filename, 'wb') as file_handle:
        while True:
            chunk = req.read(1024)
            if not chunk:
                break
            file_handle.write(chunk)

    return f'Загрузка завершена: {filename}'

def main(urls):
    """Создаёт пул потоков и скачивает указанные файлы"""
    with ThreadPoolExecutor(max_workers=5) as executor:
        futures = [executor.submit(downloader, url) for url in urls]
        for future in as_completed(futures):
            print(future.result())

if __name__ == '__main__':
    urls = [
        "http://www.irs.gov/pub/irs-pdf/f1040.pdf",
        "http://www.irs.gov/pub/irs-pdf/f1040a.pdf",
        "http://www.irs.gov/pub/irs-pdf/f1040ez.pdf",
        "http://www.irs.gov/pub/irs-pdf/f1040es.pdf",
        "http://www.irs.gov/pub/irs-pdf/f1040sb.pdf"
    ]
    main(urls)

🎯 Разбор задания с подвохом (Python, собес) Задание > Сформируйте список функций callbacks, где каждая функция при вызове печатает свой индекс. > Затем вызовите их по очереди (или из потоков/таймеров) — ожидаемый вывод: 0 1 2. Наивное решение (почти все так пишут)

callbacks = [lambda: print(i) for i in range(3)]

for f in callbacks:
    f()
Что выведет? 2 2 2 — и это не баг интерпретатора. В чём подвох - Замыкание поздно связывает имя i: лямбды не «копируют» значение, а смотрят на переменную i, когда вы их вызываете. - К моменту вызова цикл уже закончился, i == 2, значит все три лямбды печатают 2. Правильные варианты Привязать значение через параметр по умолчанию (часто лучший баланс читаемости)

callbacks = [lambda i=i: print(i) for i in range(3)]
for f in callbacks:
    f()  # 0 1 2
Заводим фабрику функций (прямо подчёркивает намерение)

def make_printer(i):
    def _f():
        print(i)
    return _f

callbacks = [make_printer(i) for i in range(3)]
for f in callbacks:
    f()  # 0 1 2
functools.partial — когда нужно просто «прикрутить аргументы»

from functools import partial

callbacks = [partial(print, i) for i in range(3)]
for f in callbacks:
    f()  # 0 1 2
А если таймеры/потоки?

import threading

for i in range(3):
    # ПЛОХО: замкнёт одно и то же i
    # threading.Timer(1, lambda: print(i)).start()

    # ХОРОШО: привяжем значение сразу
    threading.Timer(1, lambda i=i: print(i)).start()
Мини-чеклист для собеса - Лямбды/внутренние функции в цикле → проверь, не упираешься ли в late binding. - Если нужна «заморозка» значения, используй параметр по умолчанию, фабрику или partial. Не путай с другой классикой: изменяемые значения по умолчанию (например, def f(x, acc=[])), это другая ловушка. Вывод В Python замыкания захватывают имена, а не значения. Привязывай нужное значение в момент создания функции — и подвох исчезнет.

Docker и Kubernetes: основы разработки под облачную инфраструктуру Курс для тех, кто хочет держать свой стэк и знания актуаль
Docker и Kubernetes: основы разработки под облачную инфраструктуру Курс для тех, кто хочет держать свой стэк и знания актуальными и глубоко разбираться, как устроены Docker, Kubernetes, и современная облачная инфраструктура в целом. 🌐 Чему вы научитесь: 🤩 Создавать облачную инфраструктуру «с нуля» управление и конфигурация серверов с Terraform, Ansible, cloud‑init 🤩 Уверенно работать с Docker: Dockerfile, слои, кэш, многоступенчатые сборки, реестры, безопасность, air‑gapped 🤩 Проектировать многоконтейнерные приложения: паттерны Sidecar, Ambassador, Adapter, проверки (liveness/readiness), DaemonSet и поды 🤩 Настраивать сеть и балансировку в Kubernetes ClusterIP, Services, Ingress, MetalLB, TLS/SNI, сервис‑меши (Istio) 🤩 Организовывать хранение данных: PersistentVolumes / PVC, StorageClasses, резервное копирование. Упаковка в Helm и поддержка через Operator 🥸 Кто мы: R&D-центр Devhands. Автор курса — Николай Ихалайнен, эксперт по СУБД и бекенду (ex-Percona), со-основатель MyDB, энтузиаст открытого ПО. 🗓 Старт курса: 17 сентября, 6 недель обучения. Изучить программу и записаться можно здесь. Ждем вас! Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqxNnFKA

🚀 Индивидуальный IPython в Docker: советы от Frank Wiles Хочешь, чтобы твоя IPython-среда в Docker была настроена под тебя,
🚀 Индивидуальный IPython в Docker: советы от Frank Wiles Хочешь, чтобы твоя IPython-среда в Docker была настроена под тебя, но не мешала коллегам? Вот лёгкий и гибкий способ: 1. Используй IPYTHONDIR и Docker Compose: - В .env: IPYTHONDIR=/code/attic/ipython/ - В .gitignore: attic/ - В Docker Compose: подключай .env и твой проект как volume, чтобы IPython создавал конфигурацию в attic/ipython/profile_default/ :contentReference[oaicite:0]{index=0}. 2. Настройка по вкусу: - В ipython_config.py можно задать стиль редактирования (например, `c.editing_mode = "vi"`). - Автоматически импортируй часто используемые библиотеки через c.InteractiveShellApp.exec_lines = [...] или скрипты в папке startup/, пронумерованные по порядку загрузки :contentReference[oaicite:1]{index=1}. 3. Предзагрузка данных для удобной работы: Например, при работе с Django можно автоматически загрузить dev-данные. Скрипт 20-load-devdata-assignment.py внутри startup/ пытается получить объект Assignment и связанные с ним данные, делая работу в IPython удобнее :contentReference[oaicite:2]{index=2}. 4. Собственный инструмент для рутины: Автор реализовал класс URLFinder, который извлекает UUID из строки URL, красиво их отображает с помощью библиотеки rich — и позволяет получить нужный UUID по индексу (`ids(0)`, ids(1) и т.п.) :contentReference[oaicite:3]{index=3}. Вывод: Настройка IPython в Docker — это просто, удобно и лично. И это не навязывает изменения команде. Даже маленький инструмент вроде URLFinder может существенно упростить рутину. Опубликовано 19 августа 2025 года автором Frank Wiles, основателем REVSYS и бывшим президентом Django Software Foundation . Если хочешь, могу добавить краткий пример docker-compose.yaml или показать фрагмент скрипта URLFinder — скажи! https://frankwiles.com/posts/customize-ipython-docker/ -

👨‍🔧 CoreNN — база данных для работы с векторами и эмбеддингами в масштабе миллиардов, с сублинейным временем отклика на обы
+2
👨‍🔧 CoreNN — база данных для работы с векторами и эмбеддингами в масштабе миллиардов, с сублинейным временем отклика на обычных серверах. 📌 Пример: поиск по 1 млрд эмбеддингов комментариев Reddit из индекса 4,8 ТБ на диске занимает всего 15 мс. 🔧 Ключевые особенности: - Работает на дешёвых SSD/flash-накопителях, а не в дорогой DRAM → в 40–100 раз дешевле. - Масштабирование: от 1 до 1 млрд векторов в одном индексе. - Upsert и delete оптимизируют локальный граф, освобождают место и сохраняют скорость — без полной перестройки. - Поддерживает параллельные запросы и обновления без блокировок. 🔗 https://github.com/wilsonzlin/CoreNN

🍭 Задача на Python: Анализ работы декораторов и замыканий Уровень: middle Код:
def counter(func):
    count = 0
    
    def wrapper(*args, **kwargs):
        nonlocal count
        count += 1
        print(f"Функция {func.__name__} вызвана {count} раз")
        return func(*args, **kwargs)
    
    return wrapper

@counter
def greet(name):
    return f"Привет, {name}!"

print(greet("Анна"))
print(greet("Пётр"))
Вопрос: Что выведет данный код? Правильный ответ: Функция greet вызвана 1 раз Привет, Анна! Функция greet вызвана 2 раз Привет, Пётр! Пояснение: 1. Декоратор counter создает замыкание — внутреннюю функцию wrapper, которая имеет доступ к переменной count. 2. При каждом вызове декорированной функции greet: — Увеличивается счетчик count — Выводится сообщение с текущим значением счетчика — Вызывается оригинальная функция greet с переданными аргументами 3. Переменная count сохраняет свое состояние между вызовами благодаря механизму замыканий. 4. nonlocal позволяет изменять переменную из внешней области видимости @python_job_interview

🔥Прими участие в Хакатоне Т1 в Нижнем Новгороде и поборись за призовой фонд 600 000 рублей! 📅 Когда: 19 – 22 сентября 🌐 Фо
🔥Прими участие в Хакатоне Т1 в Нижнем Новгороде и поборись за призовой фонд 600 000 рублей! 📅 Когда: 19 – 22 сентября 🌐 Формат: онлайн + финал на площадке  Участвуй, если ты: 🔹студент тех/ИТ-направлений; 🔹развиваешься в dev, аналитике, дизайне, AI/DS/ML, DevOps; 🔹сможешь быть в Нижнем Новгороде 22-09. Выбери свой кейс: 🔸PingTower — сервис круглосуточного отслеживания доступности сайтов и мгновенных уведомлений о сбоях, позволяющий бизнесу не терять клиентов. 🔸HR Консультант — ИИ-консультант для карьерных сценариев и поиска талантов по умным фильтрам. Почему стоит участвовать: 🔻Кейс в портфолио и полезная обратная связь от менторов Т1; 🔻Шанс проявить себя, чтобы начать карьеру в одной из крупнейших ИТ-компаний; 🔻Реальный опыт командной работы. Регистрация открыта!  ➡️ Успей до 17 сентября по ссылке. Ты не из Нижнего Новгорода? Смотри расписание хакатонов в других городах. #реклама О рекламодателе

🐍 Python + Ruff: сложность кода под контролем На скрине — функция validate_product, которая проходит несколько вложенных про
🐍 Python + Ruff: сложность кода под контролем На скрине — функция validate_product, которая проходит несколько вложенных проверок. Линтер Ruff с правилом C901 (McCabe Complexity) сигнализирует: сложность функции = 7, что выше лимита 5. 📏 McCabe Complexity измеряет количество ветвлений и условий в функции. Чем выше показатель, тем сложнее код для понимания и поддержки. ⚠️ Почему это важно: • Снижение читаемости • Рост вероятности багов • Трудности при тестировании 💡 Решение: 1. Разбить функцию на несколько маленьких с понятными именами 2. Использовать ранние выходы (`return`) вместо вложенных if 3. Упрощать логику с помощью вспомогательных функций или структур данных #Python #Ruff #CleanCode #Refactoring #McCabeComplexity

🔥 Самые сложные вопросы для интервью в Google — как готовиться и что отвечать 🔤 Что чаще спрашивают - Алгоритмы и структуры данных - «Найдите k-й элемент в отсортированных массивах без слияния» - «Минимальное окно подстроки с набором символов» - «Пути с минимальной стоимостью в графе с ловушками/порталами» - Системный дизайн (Senior+) - «Спроектируйте сокращатель ссылок с 10 млрд кликов/день» - «Реал-тайм чат с end-to-end доставкой и поиском по истории» - «Видео-платформа: загрузка, хранение, CDN, рекомендации» - Конкурентность и распределённые системы - «Счётчик с глобальной монотонностью на шардированном кластере» - «Идемпотентная очередь задач при ретраях и дедупликации» - Поведенческие (бар-рейзер) - «Расскажите про провал и чему вы научились» - «Как вы влияли без формальных полномочий» 📌 Как решать задачи с кодом (шаблон) 1) Уточните ограничения и формат ввода/вывода. 2) Проговорите наивное решение → оценка O(...) по времени/памяти. 3) Предложите улучшение (двойной указатель, heap, prefix, DP, BFS/DFS, binary search on answer). 4) Кодируйте чисто: небольшие функции, проверки краёв, именование. 5) Прогоны тестов: пустой ввод, дубликаты, большие размеры, Unicode и т. п. 6) Завершите: сложность, варианты оптимизации, trade-offs. 🛠 **Системный дизайн — скелет ответа** - Требования: функциональные/нефункциональные (RPS, латентность, доступность). - API/схемы данных → оценка объёмов (QPS, storage, рост). - Высокоуровневая архитектура: клиент, API-шлюз, сервисы, БД, кэш, очередь, CDN. - Горячие пути: чтение/запись, кэширование, индексирование, консистентность. - Масштабирование: шардинг, репликация, партиционирование, backpressure. - Надёжность: ретраи, идемпотентность, дедупликация, алерты, SLO/SLI. - Трейд-оффы и поэтапный rollout. ☠️ Типичные ловушки - Пишете код сразу, не уточнив ограничения. - Нет тестов на крайние случаи. - Перескакиваете в микро-детали дизайна, не зафиксировав требования. - Не называете trade-offs и метрики успеха. 🔖 Мини-шпаргалка по инструментам - Два указателя — подстроки/окна/парные суммы. - Heap/priority queue — k-наилучших элементов/поток слияния. - Prefix/Suffix/Hash — подсчёты и проверки за O(1) на запрос. - DP — оптимизация по состояниям (категории: линейная, на подмасках, по интервалам). - Graph — BFS (минимум шагов), Dijkstra/0-1 BFS (взвешенные), Topo sort (DAG). - «Binary search по ответу» — задачи вида «можно/нельзя при X». ⚡️ Как готовиться эффективно (4 шага) 1) Разделите тренировки: 60% кодинг, 25% дизайн, 15% поведенческие. 2) Решайте задачники по темам и фиксируйте паттерн решения (а не только код). 3) Мок-интервью: таймер 30–45 минут, проговаривайте мысли вслух. 4) Соберите портфель историй по STAR: конфликт, лидерство, фейл, влияние на метрики. Удачи на интервью!

💼 Как подготовиться к любому собеседованию: гайд от нового сотрудника OpenAI Новый инженер OpenAI поделился опытом прохожден
💼 Как подготовиться к любому собеседованию: гайд от нового сотрудника OpenAI Новый инженер OpenAI поделился опытом прохождения интервью в AI-стартапы и крупные компании, включая OpenAI. 1. Заботьтесь о себе — ментально и физически Интервью — это стресс. Следите за сном, питанием, отдыхом, заручитесь поддержкой друзей и семьи. 2. Помните: цель — ваш успех Компания и интервьюеры хотят, чтобы вы прошли. Даже если был отказ, пробуйте снова — многие успешно попадали на роль со второй попытки. 3. Получайте удовольствие от процесса Это шанс познакомиться с интересными людьми, узнать новые технологии и потренироваться в решении задач. 4. Готовьтесь основательно - 100 часов на задачи (LeetCode и аналоги) - 100 часов на изучение теории и статей - Тренируйтесь с друзьями без автодополнений и LLM-подсказок 5. Каждая встреча важна Даже «неформальный звонок» — это возможность показать мотивацию, характер и профессионализм. 6. Работайте над профилем и сетью LinkedIn, GitHub с проектами, участие в митапах, open-source, хакатонах — всё это привлечёт внимание рекрутеров. 7. Первые звонки - С рекрутером: записывайте детали — этапы, состав команды, имя руководителя - С руководителем: изучите его публикации и проекты, покажите интерес, расскажите, почему хотите работать именно здесь 8. Поведенческие вопросы Готовьте истории по формату STAR(I) — о том, как решали конфликты, брали на себя лидерство, справлялись с ошибками. 9. Техническая часть - Решайте задачи быстро и чётко, проговаривая ход мыслей - Практикуйте кодинг в условиях стресса и без IDE - Разбирайтесь в алгоритмах, трансформерах, RL-методах - Умейте объяснить свою текущую работу и её пользу для компании 10. Переговоры Обсуждайте не только зарплату, но и команду, миссию, культуру. Все договорённости фиксируйте письменно. 11. Принятие решения Выбирайте место, где вам будет комфортно работать каждый день. 📌 Главное: интервью — это навык, который можно натренировать. Подготовка + уверенность = высокий шанс успеха. 📌 Полный текст

🖥 Microsoft вопрос с собеседования по SQL Задача: найти топ-2 Power Users в Microsoft Teams — пользователей, которые отправи
🖥 Microsoft вопрос с собеседования по SQL Задача: найти топ-2 Power Users в Microsoft Teams — пользователей, которые отправили больше всего сообщений в августе 2022. Вывести их sender_id и количество сообщений. Подход: 1) Отфильтровать сообщения по интервалу августа — в T-SQL удобно задавать полуинтервалом [2022-08-01, 2022-09-01), без функций над датой (чтобы не ломать индексы). 2) Посчитать сообщения по sender_id. 3) Отсортировать по убыванию и взять TOP 2. Если хотите корректно обрабатывать «ничьи» — используйте DENSE_RANK(). Быстрое решение (T-SQL):

SELECT TOP (2)
       sender_id,
       COUNT(*) AS message_count
FROM   messages
WHERE  sent_date >= '2022-08-01'
  AND  sent_date <  '2022-09-01'
GROUP BY sender_id
ORDER BY COUNT(*) DESC, sender_id;
Вариант с учетом ничьих (tie-safe):

WITH monthly AS (
  SELECT sender_id, COUNT(*) AS message_count
  FROM   messages
  WHERE  sent_date >= '2022-08-01'
    AND  sent_date <  '2022-09-01'
  GROUP BY sender_id
),
ranked AS (
  SELECT sender_id, message_count,
         DENSE_RANK() OVER (ORDER BY message_count DESC) AS rnk
  FROM   monthly
)
SELECT sender_id, message_count
FROM   ranked
WHERE  rnk <= 2
ORDER BY message_count DESC, sender_id;
Почему так: - Фильтр по диапазону дат без функций сохраняет «sargable» запрос (используются индексы по sent_date). - GROUP BY + COUNT(*) дают нужную метрику. - DENSE_RANK() аккуратно захватывает все «совместные» вторые места.

🏵️ async-lru — кэширование для асинхронного Python без головной боли Простой, но мощный порт стандартного lru_cache из funct
🏵️ async-lru — кэширование для асинхронного Python без головной боли Простой, но мощный порт стандартного lru_cache из functools для asyncio-приложений. Главная фишка — автоматическая обработка конкурентных вызовов: даже если 10 корутин запросят одни и те же данные одновременно, реальный запрос выполнится лишь один раз. Проект особенно полезен в связке с aiohttp для кэширования HTTP-запросов или результатов работы с базами данных. Поддержка TTL и ручная инвалидация кэша делают библиотеку универсальным инструментом. 🤖 GitHub @python_job_interview

Repost from Machinelearning
📌Python на взлете, а Python Software Foundation в минусе на 1.5 млн. долларов: разбираем свежий опрос. Python Software Found
📌Python на взлете, а Python Software Foundation в минусе на 1.5 млн. долларов: разбираем свежий опрос. Python Software Foundation (PSF) совместно с JetBrains опубликовала результаты восьмого, самого крупного в истории опроса разработчиков - в нём приняли участие более 30 000 человек. Данные, собранные в конце 2024 года, показывают, что 72% респондентов используют Python в рабочих целях и это подтверждает доминирующую роль языка в индустрии. И популярность Python продолжает расти: согласно другому исследованию, от Stack Overflow, использование языка увеличилось на 7%. 🟡Приток свежей крови в экосистему. Половина опрошенных имеют менее 2 лет профессионального опыта в программировании, а 39% начали использовать Python в течение последних 2 лет. Это говорит о том, что язык активно привлекает новичков и остается ключевой точкой входа в разработку. 🟡Парадокс версий. Только 15% разработчиков используют последнюю на момент опроса версию, 3.13. В PSF утверждают, что массовый переход на нее мог бы сэкономить миллионы долларов на облачных вычислениях за счет повышения эффективности. Однако сами разработчики не торопятся: 53% заявляют, что текущая версия полностью удовлетворяет их потребности, 27% ссылаются на проблемы с совместимостью, а 25% - на нехватку времени. При этом нельзя сказать, что сообщество инертно. Самая популярная версия - 3.12 (35%), выпущенная в конце 2023 года, за ней следует 3.11 (21%), что говорит о довольно быстрой адаптации к не самым последним, но свежим релизам. 🟡Сферы применения. Анализ данных (48%) и веб-разработка (46%) идут практически вровень. Но если к анализу прибавить ML (41%) и инжиниринг данных (31%), то доминирование Data Science становится очевидным. В мире веб-фреймворков происходит смена караула: FastAPI (38%) резко вырвался вперед, обогнав ветеранов: Django (35%) и Flask (34%). Год назад у FastAPI было всего 29%. Ещё один стремительный взлёт — у написанного на Rust менеджера пакетов uv, который позиционируется как замена pip. Заявляя о кратном превосходстве в скорости, он уже отхватил 11% пользователей. А вот в лагере IDE плохие новости для спонсора опроса, JetBrains: Visual Studio Code укрепил свое лидерство, набрав 48% (против 41% в прошлом году), а доля PyCharm снизилась до 25% (с 31%). 🟡Финансовые проблемы Python Software Foundation. Ранее в этом месяце PSF объявила о приостановке своей грантовой программы из-за нехватки средств. Годовой отчет за 2024 год показал чистый убыток в размере 1 462 000 долларов, что значительно больше, чем в 2023 году, там убыток был 225 000 долларов. Фонд, который поддерживает репозиторий PyPI, дистрибуцию самого Python и нанимает разработчиков для CPython, оказался в сложной ситуации и явно нуждается в большей поддержке и ресурсах от корпораций, которые строят свой бизнес и получают доход на Python. @ai_machinelearning_big_data #news #ai #ml

🖥 Молниеносный HTML-парсинг: selectolax быстрее BS4 в разы Полезный трюк: быстро парсим HTML прямо из строки с помощью selectolax — лёгкой и очень быстрой библиотеки на C, в разы быстрее BeautifulSoup. Установка:

pip install selectolax
Пример с кодом:


from selectolax.parser import HTMLParser

html = """

<html><body> <h1>Hello</h1> <p class='msg'>World</p> </body></html> """
tree = HTMLParser(html)
print(tree.css_first("h1").text()) # Hello
print(tree.css_first("p.msg").text()) # World

https://www.youtube.com/shorts/CSYJDmt4ztg

🖥 Полный проект с нуля: клон голоса на Python 🔊 Клонирование голоса на Python с нуля: пошаговый разбор, рабочий код, провер
🖥 Полный проект с нуля: клон голоса на Python 🔊 Клонирование голоса на Python с нуля: пошаговый разбор, рабочий код, проверка сходства и защита с водяными знаками. Полное руководство для разработчиков по созданию собственного проекта voice cloning. 📌 Читать

🆕 Hugging Face представили **AI Sheets** — no-code инструмент для создания и обработки таблиц с помощью ИИ. - Выглядит как обычная таблица, но вместо формул — тысячи моделей - Поддержка OpenAI-совместимых и локальных LLM - Можно добавлять столбцы с промптами, редактировать данные вручную или через лайки - Запуск онлайн или локально (Docker / pnpm) - Полностью опенсорс (Apache-2.0), легко встроить в пайплайны - Подходит для классификации, трансформации данных, синтетики и «vibe-тестов» моделей ⚡️ Попробовать #AI #NoCode #datasets #HuggingFace #LLM

👾 Задача из собеседования по Python Уровень: middle-senior Условие: Реализуйте потокобезопасный кэш с TTL и политикой вытеснения LRU. Кэш должен: 1️⃣ Автоматически удалять записи по истечении TTL. 2️⃣ При достижении максимального размера вытеснять реже всего используемые элементы. 3️⃣ Гарантировать корректную работу в многопоточной среде. 4️⃣ Поддерживать методы: get(key), set(key, value, ttl), delete(key), clear(). 5️⃣ Опционально: реализовать ленивое удаление просроченных записей. Решение:

import time
import threading
from collections import OrderedDict

class TTLLRUCache:
    def __init__(self, maxsize=1024):
        self.maxsize = maxsize
        self._cache = OrderedDict()
        self._lock = threading.RLock()
        self._expiry_times = {}

    def get(self, key):
        with self._lock:
            if key not in self._cache:
                return None
            
            # Ленивое удаление просроченного ключа
            if self._is_expired(key):
                self._delete(key)
                return None
            
            # Обновляем порядок использования (LRU)
            self._cache.move_to_end(key)
            return self._cache[key]

    def set(self, key, value, ttl=None):
        with self._lock:
            # Вытеснение старых записей при достижении лимита
            if len(self._cache) >= self.maxsize:
                self._evict()
            
            self._cache[key] = value
            self._cache.move_to_end(key)
            self._expiry_times[key] = time.time() + ttl if ttl else None

    def delete(self, key):
        with self._lock:
            self._delete(key)

    def _delete(self, key):
        self._cache.pop(key, None)
        self._expiry_times.pop(key, None)

    def clear(self):
        with self._lock:
            self._cache.clear()
            self._expiry_times.clear()

    def _is_expired(self, key):
        expiry = self._expiry_times.get(key)
        return expiry is not None and expiry < time.time()

    def _evict(self):
        # Сначала удаляем просроченные ключи
        expired_keys = [k for k in self._cache if self._is_expired(k)]
        for k in expired_keys:
            self._delete(k)
        
        # Если после этого кэш всё ещё полон, применяем LRU
        if len(self._cache) >= self.maxsize:
            self._cache.popitem(last=False)

    def __contains__(self, key):
        with self._lock:
            if key not in self._cache:
                return False
            if self._is_expired(key):
                self._delete(key)
                return False
            return True
Пояснение: 1. Потокобезопасность: Используется threading.RLock для всех операций, изменяющих состояние кэша. Это позволяет рекурсивные блокировки из одного потока. 2. TTL: Время истечения хранится в отдельном словаре _expiry_times. При обращении к ключу проверяется его актуальность. 3. LRU-политика: OrderedDict автоматически поддерживает порядок использования элементов. Метод move_to_end() обновляет позицию при каждом обращении, а popitem(last=False) удаляет самый старый элемент. 4. Гибкое удаление: — Ленивое (при обращении к ключу) — Активное (при добавлении новых элементов через _evict()) 5. Оптимизация: — Сначала удаляются просроченные ключи, и только потом применяется LRU. — Сложность операций: O(1) для get/set (в среднем случае). @python_job_interview