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

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

Ir al canal en Telegram

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

Mostrar más

📈 Análisis del canal de Telegram Python вопросы с собеседований

El canal Python вопросы с собеседований (@python_job_interview) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 24 966 suscriptores, ocupando la posición 5 488 en la categoría Tecnologías y Aplicaciones y el puesto 26 804 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 24 966 suscriptores.

Según los últimos datos del 05 junio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -153, y en las últimas 24 horas de -5, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 6.12%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 3.05% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 1 527 visualizaciones. En el primer día suele acumular 762 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 8.
  • Intereses temáticos: El contenido se centra en temas clave como github, api, собеседование, git, docker.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 06 junio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

24 966
Suscriptores
-524 horas
-437 días
-15330 días
Archivo de publicaciones
🖥 Хитрый способ изменить поведение цикла 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__" + локальные импорты = чище, быстрее, гибче.

🔥 7 000+ упражнений на 76 языках программирования Exercism — бесплатная платформа для прокачки навыков программирования с ну
🔥 7 000+ упражнений на 76 языках программирования Exercism — бесплатная платформа для прокачки навыков программирования с нуля. Каждый язык — отдельный путь, наполненный практическими задачами. Главный плюс — обратная связь от опытных менторов. Ответы здесь не быстрые, зато по делу и без токсичности, как это бывает на Stack Overflow. https://exercism.org/

🔥 Самые нужные каналы для Python разработчика, чтобы расти в доходе 💸Python | Вопросы собесовPython | Вакансии с удаленкойPython | LeetCodePython | Тесты Подпишись, чтобы не потерять ☝️

Repost from Machinelearning
📚 ArXiv Research Agent — отличный помощник для научных исследований. Агент самостоятельно: • Найдёт релевантные статьи с arXiv, bioRxiv, medRxiv и Semantic Scholar • Проведёт полноценный обзор и поиск нужных материалов • Покажет, что упущено, и предложит, что добавить • Даст инсайты и цитаты из миллионов научных работ • Генерирует готовые конспекты И др. Вскоре обещают добавить поддержку MCP. 🔜 Попробовать: https://www.alphaxiv.org/assistant @ai_machinelearning_big_data #agent #ArXiv #ai #ml

👨‍💻 Executing — как заглянуть внутрь работающего Python-кода. Необычная библиотека, которая позволяет во время выполнения п
👨‍💻 Executing — как заглянуть внутрь работающего Python-кода. Необычная библиотека, которая позволяет во время выполнения программы определить, какой именно AST-узел выполняется в данный момент. Это может быть полезно для отладки, анализа кода или создания инструментов вроде умных traceback'ов. Проект использует хитрый трюк с модификацией AST и наблюдением за изменениями в байт-коде, чтобы точно определить текущую операцию. Хотя функционал кажется узкоспециализированным, его уже используют в нескольких известных инструментах: stack_data, snoop и даже IPython для улучшенного вывода ошибок. 🤖 GitHub @python_interview

🧐ИИ — помощник или угроза тестировщикам? В одних компаниях требуют использовать ChatGPT, в других за него можно получить "по
🧐ИИ — помощник или угроза тестировщикам? В одних компаниях требуют использовать ChatGPT, в других за него можно получить "по шапке". Кто прав? И можно ли вообще доверять искусственному интеллекту автоматизацию тестов? Честно поговорим о том, где ИИ реально помогает, а где — только мешает и плодит баги на открытом вебинаре "Риски и преимущества использования ИИ в тестировании " 17 июня в 19:00. Что будет: 💻Реальные кейсы: как ИИ помогает автоматизировать тестирование (и когда мешает) 💻Как выбрать нужный инструмент и не профакапить проект 💻Почему ИИ не заменит тестировщика (если вы не будете халтурить) 💻Как подружить Python + Docker + ChatGPT в CI/CD 💻Что делегируют ИИ ведущие инженеры уже сейчас Спикеры: 👨‍💻Павел Балахонов, QA Automation Lead в VK Tech (15+ лет опыта, CI/CD, Docker, автоматизация) 👨‍💻Викентий Лапа, тестировщик Whamcloud (Linux, кластерные файловые системы, Python) 🎁Подарки участникам: Чек-лист по автоматизации на Python Мини-гайд по Docker CLI Скидка 7% на курсы OTUS 17 июня, 19:00 МСК - бесплатно. Запишись, пока это за тебя не сделал ИИ - https://tglink.io/91c136fc6b6f Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFGMCkac

🐍 Задача для собеседования на Python Условие:
def mystery(x, y):
    if x == 0:
        return y
    else:
        return mystery(x - 1, x + y)

result = mystery(3, 2)
print(result)
— Вопрос: что будет выведено в результате выполнения этого кода? Варианты ответов: А. 5 B. 8 C. 11 D. Ошибка рекурсии Правильный ответ: B. Пояснение: Функция mystery — это рекурсивная функция, которая накапливает сумму чисел от x до 1, прибавляя y в конце. @python_job_interview

Что выведет этот Python код ? #junior #python Задача для новичков. s = set() a = [1, 2, 3] s.add(tuple(a)) print(s) Списки изменяемы и не могут быть элементами множества, но кортежи — неизменяемы и хэшируемы, поэтому кортеж из списка успешно добавится во множество.

🐳 Что если вам нужно запустить чужой (возможно небезопасный) код? Представьте: вам прислали бинарник, Python-скрипт или npm-пакет, и его надо выполнить. Вы не знаете, что внутри — а вдруг там rm -rf /, попытка выйти из контейнера, майнер или установка root-доступа? 🔥 Первый инстинкт: запустить в Docker. Кажется, контейнер спасёт? ⚠️ На самом деле — не всегда. 🛑 Docker ≠ песочница Контейнеры по умолчанию не изолированы от ядра, сетей и сокетов хоста. Даже простое docker run -it ubuntu запускает процесс с root-доступом внутри контейнера. 🛡️ Что делать, если код небезопасен:

# Запуск без root-доступа
docker run --user 1000:1000 my-image

# Только для чтения
docker run --read-only my-image

# Удалить все cap-привилегии ядра
docker run --cap-drop=ALL my-image

# Использовать seccomp-профиль
docker run --security-opt seccomp=default.json my-image

# Отключить сеть
docker run --network=none my-image
Также стоит: • Настроить AppArmor / SELinux • Запретить монтирование Docker сокета • Ограничить доступ к /proc, /sys 💡 Вывод: Docker — это удобный инструмент упаковки, но не синоним безопасной изоляции. Если запускаете сторонний или user-generated код (плагины, CI-скрипты, sandbox-сервисы) — относитесь к нему как к потенциально опасному. Безопасность — это не "чеклист", а постоянная практика. #Docker #Security #Sandbox #DevOps #Isolation

🎓 Модульный учебник по Python для Middle-разработчиков Этот учебник создан для тех, кто уже пишет на Python, но хочет выйти
🎓 Модульный учебник по Python для Middle-разработчиков Этот учебник создан для тех, кто уже пишет на Python, но хочет выйти за рамки базовых конструкций. Здесь — практичные модули с упором на архитектуру, производительность, тестирование, чистый код и современные практики разработки. 🔧 Каждый модуль — это отдельный блок знаний: теория + реальные кейсы + трюки из индустрии. 🎯 Только то, что реально нужно миддлу: от дебага и профилирования до async, typing, CI/CD и LLM-интеграций. Без воды. С кодом. По делу. 📚 Читать @python_job_interview

Задача: Что делает эта странная функция teleport и почему она запускает цикл 32 раза? 🧠 Подсказка: На первый взгляд это выглядит как хаотичная мешанина побитовых операций, но на самом деле здесь происходит реверс битов (bitwise reversal) — отражение битов справа налево. Но вопрос — зачем делать это 32 раза подряд? 🔍 Что происходит: Каждый шаг в теле цикла — это стандартная техника реверса битов через маски и сдвиги: 0xAAAAAAAA, 0xCCCCCCCC, и т.д. — маски по битовым паттернам Итерация for _ in range(32) делает это снова и снова… 💣 Фишка: первый проход уже полностью отражает 32-битное число. Остальные 31 повтор возвращают число в исходное состояние — но в побитово инвертированном порядке! 📌 То есть: Чётное количество циклов — возвращает в исходную позицию Нечётное — делает реверс 👉 Ответ на teleport(0x12345678) будет реверс битов этого числа. Ожидаемое: 0x1e6a2c48 (в зависимости от реализации может отличаться). 🎯 Челлендж для продвинутых: Упростите функцию до одного вызова (без цикла) Напишите inverse_teleport(x), которая возвращает исходное число обратно 🧩 Эта техника используется в: — алгоритмах FFT (быстрые преобразования Фурье) — графике — реверсировании хэшей — low-level оптимизациях для SIMD

🐍 Задача на внимательность и понимание области видимости в Python: «Почему список не заполняется?» 🎯 Цель: Найти, почему переменная ведёт себя не так, как ожидается 📍 Ситуация: У тебя есть простой код, который должен собирать данные в список из файла:

results = []

def process_file(path):
    for line in open(path):
        if "error" in line:
            results.append(line.strip())

# где-то в другом месте:
process_file("logs1.txt")
process_file("logs2.txt")

print(f"Total errors: {len(results)}")
Но после запуска ты получаешь:
Total errors: 0
🙃 Хотя ты уверен, что в обоих файлах есть строки с "error". 🧩 Задача: 1. Почему список results остаётся пустым? 2. Почему нет ошибки при обращении к results.append(...)? 3. Что будет, если вместо append() просто написать results = [...] внутри функции? 4. Как правильно модифицировать глобальную переменную? 5. Как сделать поведение явным и безопасным? 🛠 Решение: 🔸 Проблема в области видимости переменных: Функция использует results, определённый вне функции, но не объявляет его как global. Однако results.append(...) — это допустимая операция, так как она не переназначает переменную, а вызывает метод объекта. Если бы внутри функции была строка results = [...], Python бы создал локальную переменную results, и тогда append бы вызывал UnboundLocalError. 🔸 Для ясности и чистоты кода лучше делать так:

def process_file(path, results):
    for line in open(path):
        if "error" in line:
            results.append(line.strip())

results = []
process_file("logs1.txt", results)
process_file("logs2.txt", results)
Или, если обязательно нужно использовать глобальную переменную:

results = []

def process_file(path):
    global results
    for line in open(path):
        if "error" in line:
            results.append(line.strip())
🔸 Проверка: - print(locals()) — покажет локальные переменные - print(globals()) — покажет глобальные 📌 Вывод: В Python изменение содержимого изменяемой глобальной переменной внутри функции возможно без global, но присваивание новой переменной требует явного global. Это тонкое поведение, которое часто приводит к ошибкам, особенно при работе со списками и словарями.