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 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),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

24 966
订阅者
-524 小时
-437
-15330
帖子存档
🖥 Хитрый способ изменить поведение цикла 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. Это тонкое поведение, которое часто приводит к ошибкам, особенно при работе со списками и словарями.