ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

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 949 подписчиков, занимая 5 319 место в категории Технологии и приложения и 26 101 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 24 949 подписчиков.

Согласно последним данным от 29 октября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило 82, а за последние 24 часа — -2, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 5.86%. В первые 24 часа после публикации контент обычно набирает 3.02% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 1 462 просмотров. В течение первых суток публикация набирает 753 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 7.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как github, api, собеседование, git, docker.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
“Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd”

Благодаря высокой частоте обновлений (последние данные получены 30 октября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

24 949
Подписчики
-224 часа
-237 дней
+8230 дней
Архив постов
Repost from Machinelearning
🔥 Google DeepMind представили новую open-source библиотеку на Python для сборки асинхронных AI‑пайплайнов в реальном времени
+2
🔥 Google DeepMind представили новую open-source библиотеку на Python для сборки асинхронных AI‑пайплайнов в реальном времени! Новая библиотека позволяет собирать AI-процессы из компонентов — как LEGO для ИИ-агентов. 🔧 Особенности: - Построение асинхронных, компонуемых пайплайнов - Поддержка Gemini и Gemini Live API - Основана на asyncio - Обрабатывает мультимодальные данные: текст, изображения, аудио - Внутри готовые агенты: real-time агент, исследователь, live-комментатор 💡 Подходит для: - Разработки ИИ-агентов - Генеративных моделей, работающих в реальном времени - Быстрой сборки MVP с мультимодальными возможностями Установка:

pip install genai-processors
Открытый код, готовые компоненты и интеграция с API. • Repo: https://github.com/google-gemini/genai-processors • Blog: https://developers.googleblog.com/en/genai-processors/ @ai_machinelearning_big_data #DeepMind #ai #ml

🎙️ pytest-recording — плагин для записи и воспроизведения HTTP-запросов в тестах Инструмент использует VCR.py под капотом, ч
🎙️ pytest-recording — плагин для записи и воспроизведения HTTP-запросов в тестах Инструмент использует VCR.py под капотом, чтобы сохранять сетевые взаимодействия в YAML-кассеты и переиспользовать их при последующих запусках. Достаточно добавить @pytest.mark.vcr к тесту и все запросы автоматически запишутся или возьмутся из кэша. Особенно удобно для тестирования API, можно блокировать случайные сетевые вызовы через @pytest.mark.block_network и точечно разрешать только нужные хосты. Поддерживается тонкая настройка через vcr_config и работа в режиме перезаписи кассет. 🤖 GitHub @python_job_interview

📌 Сложная задача для собеседования на Python: «Асинхронный кэш с TTL и инвалидацией». Условие: Реализуйте потокобезопасный асинхронный кэш с временем жизни записей, поддержкой инвалидации по ключу и автоматическим удалением устаревших записей. Кэш должен: 1️⃣ Хранить значения не дольше указанного TTL (seconds) 2️⃣ Автоматически очищать устаревшие записи без блокировки основного потока 3️⃣ Поддерживать асинхронные операции get/set 4️⃣ Иметь механизм ручной инвалидации 5️⃣ Гарантировать потокобезопасность 6️⃣ Оптимизировать память Ожидаемое решение:
import asyncio
import time
from collections import OrderedDict
from typing import Any, Optional
import threading

class AsyncTTLCache:
    def __init__(self, maxsize: int = 1024, ttl: int = 60):
        self._cache = OrderedDict()
        self._maxsize = maxsize
        self._ttl = ttl
        self._lock = threading.Lock()
        self._cleanup_task = asyncio.create_task(self._cleanup_expired())

    async def get(self, key: str) -> Optional[Any]:
        with self._lock:
            if key not in self._cache:
                return None
            value, expiry = self._cache[key]
            if time.time() > expiry:
                del self._cache[key]
                return None
            # Move to end to mark as recently used
            self._cache.move_to_end(key)
            return value

    async def set(self, key: str, value: Any) -> None:
        with self._lock:
            if key in self._cache:
                self._cache.move_to_end(key)
            self._cache[key] = (value, time.time() + self._ttl)
            if len(self._cache) > self._maxsize:
                self._cache.popitem(last=False)

    async def invalidate(self, key: str) -> None:
        with self._lock:
            if key in self._cache:
                del self._cache[key]

    async def _cleanup_expired(self) -> None:
        while True:
            await asyncio.sleep(self._ttl)
            with self._lock:
                now = time.time()
                expired_keys = [
                    k for k, (_, expiry) in self._cache.items()
                    if expiry <= now
                ]
                for k in expired_keys:
                    del self._cache[k]

    def __del__(self):
        self._cleanup_task.cancel()


# Пример использования
async def main():
    cache = AsyncTTLCache(ttl=2)
    
    await cache.set("a", 1)
    print(await cache.get("a"))  # 1
    
    await asyncio.sleep(3)
    print(await cache.get("a"))  # None
    
    await cache.set("b", 2)
    await cache.invalidate("b")
    print(await cache.get("b"))  # None

asyncio.run(main())
Предлагайте свои варианты решения в комментариях⏬️ @python_job_interview

🔍Открытое собеседование на Python-бекендера с разработчиком из Avito и Яндекс во вторник 10 июля(уже в четверг!) в 19:00 по
🔍Открытое собеседование на Python-бекендера с разработчиком из Avito и Яндекс во вторник 10 июля(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика. Как это будет: 📂 Савва Демиденко, ТехЛид с опытом в Яндексе и Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Савва будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Савве Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqxjiWL7

🎙️ pytest-recording — плагин для записи и воспроизведения HTTP-запросов в тестах. Полезный инструмент для Python-разработчик
🎙️ pytest-recording — плагин для записи и воспроизведения HTTP-запросов в тестах. Полезный инструмент для Python-разработчиков, который помогает сделать тесты, зависящие от внешних API, более стабильными и быстрыми. Плагин использует VCR.py под капотом, позволяя записывать реальные HTTP-взаимодействия в YAML-кассеты и затем воспроизводить их локально. Инструмент имеет удобный режим rewrite, который полностью перезаписывает кассеты, а не просто дополняет их. Также есть встроенная блокировка случайных сетевых запросов во время тестирования. 🤖 GitHub @python_job_interview

⚙️ Подменяй любые импорты в Python “на лету” — без изменения кода Если ты хочешь протестировать модуль, подменить зависимость, замокать внешний сервис или обмануть импорт — не обязательно редактировать исходники. Python позволяет перехватывать импорты прямо во время выполнения, через sys.modules. Вот минимальный приём, который делает это прозрачно:

import sys
import types

# Создаём фейковый модуль
fake = types.SimpleNamespace()
fake.get_data = lambda: "подмена работает"

# Подменяем импорт
sys.modules['external_service'] = fake

# Теперь даже import будет работать
import external_service
print(external_service.get_data())  # → "подмена работает"

🧠 Ускоряй Python циклы без NumPy — через встроенный `array.array` Если ты используешь большие списки чисел в Python и работаешь с ними в цикле — знай: list медленный и неэффективный по памяти. Есть способ ускорить операции в 2–5 раз без внешних библиотек — просто используй array точка array. Попробуй и напиши в комментах результат, на сколько ускорились твои функции. from array import array data = array('f', [0.1] * 10_000_000) # вместо обычного list # быстрая арифметика for i in range(len(data)): data[i] *= 2.5

⚡️ Почему лучшие разработчики всегда на шаг впереди? Потому что они знают, где брать настоящие инсайд! Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе. ИИ: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Мл собес t.me/machinelearning_interview C++ t.me/cpluspluc Docker: t.me/DevopsDocker Хакинг: t.me/linuxkalii МЛ: t.me/machinelearning_ru Devops: t.me/DevOPSitsec Data Science: t.me/data_analysis_ml Javascript: t.me/javascriptv C#: t.me/csharp_ci Java: t.me/java_library Базы данных: t.me/sqlhub Python собеседования: t.me/python_job_interview Мобильная разработка: t.me/mobdevelop Golang: t.me/Golang_google React: t.me/react_tg Rust: t.me/rust_code ИИ: t.me/vistehno PHP: t.me/phpshka Android: t.me/android_its Frontend: t.me/front Big Data: t.me/bigdatai МАТЕМАТИКА: t.me/data_math Kubernets: t.me/kubernetc Разработка игр: https://t.me/gamedev Физика: t.me/fizmat SQL: t.me/databases_tg Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy 🎓954ГБ ОПЕНСОРС КУРСОВ: @courses 😆ИТ-Мемы: t.me/memes_prog 🇬🇧Английский: t.me/english_forprogrammers 🧠ИИ: t.me/vistehno 🖥 Chatgpt для кода в тг: @Chatgpturbobot 📕Ит-книги: https://t.me/addlist/BkskQciUW_FhNjEy 💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi Подпишись, чтобы всегда знать, куда двигаться дальше!

🐍 Python-задача с подвохом: что напечатает код?

def extend_list(val, lst=[]):
    lst.append(val)
    return lst

list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list('a')

print("list1 =", list1)
print("list2 =", list2)
print("list3 =", list3)
Варианты ответа: 1️⃣ list1 = [10], list2 = [123], list3 = ['a'] 2️⃣ list1 = [10], list2 = [123], list3 = [10, 'a'] 3️⃣ list1 = [10, 'a'], list2 = [123], list3 = [10, 'a'] 4️⃣ list1 = [10, 'a'], list2 = [123], list3 = ['a'] --- 💡 Подсказка: Если вы используете изменяемый объект (например, список) как значение по умолчанию в аргументе функции — он сохраняется между вызовами. --- ✅ Ответ: list1 = [10, 'a'] list2 = [123] list3 = [10, 'a'] 🔎 Почему? 👉 Значение по умолчанию lst=[] создаётся один раз — при определении функции. 👉 Когда вызываем extend_list(10), значение 10 добавляется в этот общий список. 👉 Когда вызываем extend_list(123, []), передаём новый список, всё ок. 👉 Когда вызываем extend_list('a'), снова используется общий список из первого вызова. Чтобы избежать этой ловушки:

def extend_list(val, lst=None):
    if lst is None:
        lst = []
    lst.append(val)
    return lst
🚀 Запомни: никогда не используй изменяемые объекты как значения по умолчанию для аргументов функции! @python_job_interview

📥 Palanteer — инструмент для глубокого анализа производительности C++ и Python-приложений. Этот проект предлагает детальную
📥 Palanteer — инструмент для глубокого анализа производительности C++ и Python-приложений. Этот проект предлагает детальную телеметрию: от временных меток выполнения функций до отслеживания потребления памяти и переключений контекста. Инструмент обладает минималистичной интеграцией: в C++ достаточно подключить один заголовочный файл, а Python-код анализируется автоматически. Визуализация в реальном времени включает временные графики, flame graphs и логи с наносекундным разрешением. 🤖 GitHub

🖥 Хитрый способ изменить поведение цикла for — без изменения самого цикла Можно ли сделать так, чтобы весь Python-код, использующий for x in ..., внезапно начал вести себя иначе — без изменения самого цикла? Ответ: да, если переопределить поведение итератора. На экране показа — трюк, где обычный список «врет» в цикле и выдает неожиданные значения. Трюк можно использовать и с dict, set и кастомными генераторами. Особенно удобно в юнит-тестах или визуализациях.

class FakeList(list):
    def __iter__(self):
        return iter(["test", "mock", "override"])

data = FakeList([1, 2, 3])
for x in data:
    print(x)  # выведет: test, mock, override
https://youtube.com/shorts/QhZtRx1ukoc?feature=share

🔦 VulnHuntr — ИИ-детектор уязвимостей в Python-коде. Этот инструмент от ProtectAI использует LLM для поиска сложных цепочек
🔦 VulnHuntr — ИИ-детектор уязвимостей в Python-коде. Этот инструмент от ProtectAI использует LLM для поиска сложных цепочек уязвимостей, которые традиционные статические анализаторы часто пропускают. Инструмент анализирует полный путь от пользовательского ввода до опасных операций, выявляя даже многошаговые эксплойты вроде RCE или SSRF. Работает через поэтапный анализ: сначала LLM изучает README, затем исследует код с наращиванием контекста, и наконец формирует отчёт с PoC-эксплойтом и оценкой уверенности. 🤖 GitHub @python_job_interview

Python — это фундамент, на котором можно построить карьеру в аналитике данных. Современные компании все чаще ищут специалистов, способных не просто писать код, но и извлекать из данных полезные для бизнеса инсайты. И если вы уже владеете Python, у вас есть серьезная фора перед другими кандидатами. 3 июля в 19:00 (мск) Анастасия Зеленова, team lead аналитики в Raiffeisen CIB, расскажет, кто такие аналитики и какие навыки и инструменты необходимы для работы, а также покажет повседневные задачи аналитика на реальных примерах. Присоединяйтесь к бесплатному онлайн-вебинару: https://clc.to/erid_2W5zFHErDXE  Реклама. ООО "КАРПОВ КУРСЫ". ИНН 7811764627. erid: 2W5zFHErDXE

🔍 SQLAlchemy-Filters — удобный инструмент для динамической фильтрации, сортировки и пагинации SQLAlchemy-запросов. Этот прое
🔍 SQLAlchemy-Filters — удобный инструмент для динамической фильтрации, сортировки и пагинации SQLAlchemy-запросов. Этот проект особенно полезен при разработке REST API, где клиенту нужно гибко управлять выборкой данных. Библиотека поддерживает сложные условия фильтрации, автоматические джойны связанных моделей и работу с гибридными свойствами. Фильтры задаются простыми словарями, что упрощает интеграцию с фронтендом. 🤖 GitHub @python_job_interview

🖥 Как написать худший возможный Python-код Иногда проще показать, как не надо, чем объяснять, как надо. Вот список «правил», которые помогут вам гарантированно испортить любой Python-проект. 1. 🔒 Используйте непонятные имена переменных Называйте переменные x, y, a, thing. Абстракция — залог путаницы.

def f(x, y, z=None):
    a = x * 2
    b = y + a if z else y - a
    c = [i for i in range(a) if i % 2]
    return sum(c) + b
2.🧠 Пихайте максимум логики в одну строку Сложные тернарные выражения и вложенные list comprehension — всё в одной строке.

result = [x if x > 0 else (y if y < 0 else z) for x in data if x or y and not z]
3.⚠️ Используйте eval() и exec() Это медленно, небезопасно и глупо — но зато эффектно.

eval("d['" + key + "']")
4.🔁 Переиспользуйте переменные с разными типами Пусть одна переменная будет и строкой, и числом, и списком — динамическая типизация же!

value = "42"
value = int(value)
value = [value] * value
5.🌍 Используйте глобальные переменные Изменяйте состояние приложения откуда угодно. Особенно изнутри функций.

counter = 0

def increment():
    global counter
    counter += 1
6.🔮 Используйте магические числа и строки Без пояснений. Пусть коллеги гадают, почему именно 42 или "xyz".

if user.role == "xyz" and user.level > 42:
    access_granted()
7.📏 Игнорируйте стиль и отступы Никаких PEP8, никаких правил. Пиши, как хочешь.

def foo():print("start")
 if True:
  print("yes")
   else:
    print("no")
8.🧱 Копируйте код из Stack Overflow, не вникая Ctrl+C — это тоже разработка.

def complex_logic(x):
    return (lambda y: (lambda z: z**2)(y + 1))(x)
9.🧩 Придумывайте абстракции без надобности Вместо простой функции — классы, фабрики и стратегии.

class HandlerFactory:
    def get_handler(self):
        class Handler:
            def handle(self, x): return x
        return Handler()
10. 💤 Добавляйте мёртвый код Никогда не удаляй — вдруг пригодится. И пусть он грузится в каждый запуск.

def legacy_feature():
    print("This feature is deprecated")
    return
# нигде не вызывается
11.🔀 Не пишите документацию Комментарии только мешают. Кто захочет — разберётся.

def a(x): return x+1
12.🧪 Пиши без тестов Если код работает — зачем его проверять?

# Просто запускай и смотри глазами
process_user(data)
13. 🤖 Не используй AI и автодополнение Только ручной кодинг, без подсказок. Ошибки — путь мастера. 🧠 Заключение Все эти советы — примеры того, как не стоит писать код. Если вы узнали себя — пора остановиться. Ведь Python задуман как язык, где важна читаемость, простота и явность. "Beautiful is better than ugly. Explicit is better than implicit. Readability counts." — The Zen of Python @pythonl

Repost from Machinelearning
🖥 Теперь официально Google выпустили Gemini CLI - AI-агента для работы прямо в терминале • Лёгкий и мощный инструмент для разработки в командной строке • Работает на базе Gemini 2.5 Pro • Код агента в открытом доступе (Apache 2.0) • Поддержка контекста в 1 миллион токенов • Бесплатный тариф: до 60 запросов в минуту и 1000 в день • Привязка к Google Search • Поддержка плагинов и скриптов • Интеграция с VS Code (Gemini Code Assist) Запуск в cli: npx https://github.com/google-gemini/gemini-cli 🔜 Анонс: https://blog.google/technology/developers/introducing-gemini-cli-open-source-ai-agent/ 🔜 Github: https://github.com/google-gemini/gemini-cli/ @ai_machinelearning_big_data #AI #ML #agent #Google

🐍 Python-совет: используй `functools.lru_cache` для ускорения "дорогих" функций Если у тебя есть функция, результат которой зависит только от входных данных, — кешируй её! Это может ускорить программы в 10–1000 раз, особенно при рекурсии или повторяющихся запросах. 🔧 Пример:

from functools import lru_cache

@lru_cache(maxsize=128)
def fib(n):
    if n < 2:
        return n
    return fib(n - 1) + fib(n - 2)

print(fib(100))
📌 Что делает lru_cache: • сохраняет результаты вызова функции • повторные вызовы с теми же аргументами → мгновенный возврат • maxsize ограничивает объём кэша (по принципу LRU — least recently used) 🔥 Без кеша fib(100) занимает минуты ⚡ С кешем — менее 1 секунды 🛠️ Применимо к: • рекурсивным вычислениям • функциям, вызывающим API • любым дорогим операциям с неизменяемыми аргументами 🧠 Вывод: @lru_cache — это одна строка, которая превращает тяжёлую функцию в реактивную. Идеально для оптимизации без изменения логики.

🐍 Хитрая задача для опытных Python-разработчиков Почему этот код не работает как ожидается?

def magic():
    return [lambda: i for i in range(5)]

funcs = magic()
results = [f() for f in funcs]
print(results)
На первый взгляд, ты ожидаешь результат:

[0, 1, 2, 3, 4]
Но на деле вывод будет:

[4, 4, 4, 4, 4]
🔍 Что пошло не так lambda: i не захватывает значение i, а замыкается на саму переменную i, которая одна и та же для всех лямбд. К моменту вызова всех функций i = 4 (последнее значение цикла), и все лямбды возвращают одно и то же. Это классический пример late binding — лямбда "вспоминает" переменную, а не её значение в момент создания. ✅ Как исправить Способ 1: фиксируем значение i через аргумент по умолчанию

def magic():
    return [lambda i=i: i for i in range(5)]

funcs = magic()
results = [f() for f in funcs]
print(results)
Теперь вывод:

[0, 1, 2, 3, 4]
Способ 2: functools.partial

from functools import partial

def f(x): return x
funcs = [partial(f, i) for i in range(5)]
results = [f() for f in funcs]
print(results)
🧠 Почему это важно Такие баги встречаются: - в колбэках и ивентах (например, при работе с GUI или CLI) - в генерации функций внутри циклов - в async-замыканиях и DSL-интерпретаторах - в тестовых фреймворках, где создаются сценарии динамически Понимание области видимости, замыканий и позднего связывания (late binding) — необходимый навык для confident-сеньора. @python_interview

🐍 Python-совет: ускоряй импорт и запуск с помощью `__main__` guard и lazy imports Когда ты пишешь утилиту или CLI‑скрипт, важно не загружать всё сразу. Используй if __name__ == "__main__" + отложенный импорт, чтобы ускорить запуск и избежать лишней инициализации. 🔧 Пример:

# script.py

def main():
    import argparse
    import time

    parser = argparse.ArgumentParser()
    parser.add_argument("--sleep", type=int, default=1)
    args = parser.parse_args()

    print("Start sleeping...")
    time.sleep(args.sleep)
    print("Done.")

if __name__ == "__main__":
    main()
📌 Почему это важно: • Импорты происходят только при запуске, а не при импорте модуля из другого файла • Снижается время запуска CLI-инструмента • Уменьшается нагрузка при unit-тестировании, если main() не нужен • Позволяет использовать файл как модуль и как скрипт 🛠️ Особенно эффективно при: • больших CLI-инструментах (`argparse`, rich, pandas и др.) • работе в средах, где startup time критичен (например, serverless) 🧠 Вывод: if __name__ == "__main__" + локальные импорты = чище, быстрее, гибче.