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

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

رفتن به کانال در Telegram

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

نمایش بیشتر

📈 تحلیل کانال تلگرام Python вопросы с собеседований

کانال Python вопросы с собеседований (@python_job_interview) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 24 822 مشترک است و جایگاه 5 258 را در دسته فناوری و برنامه‌ها و رتبه 26 472 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 24 822 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 25 اوت, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -44 و در ۲۴ ساعت گذشته برابر 0 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 6.01% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 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

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 28 اوت, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

24 822
مشترکین
اطلاعاتی وجود ندارد24 ساعت
+637 روز
-4430 روز
آرشیو پست ها
🐍 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. Это тонкое поведение, которое часто приводит к ошибкам, особенно при работе со списками и словарями.

Repost from Machinelearning
✔️ Llama Nemotron Nano VL от NVIDIA — один из лучших OCR инструментов для работы с документами. Мультимодальная модель от NVI
✔️ Llama Nemotron Nano VL от NVIDIA — один из лучших OCR инструментов для работы с документами. Мультимодальная модель от NVIDIA уверенно занимает первое место на OCRBench v2, показав лучшую точность парсинга документов среди всех моделей. 📄 Что это такое: Llama Nemotron Nano VL — лёгкая vision-language модель для интеллектуальной обработки документов (IDP), которая: • разбирает PDF • вытаскивает таблицы • парсит графики и диаграммы • работает на одной GPU 🔍 Заточена под: – Вопрос-ответ по документам – Извлечение таблиц – Анализ графиков – Понимание диаграмм и дешбордов 🧠 Под капотом — vision-энкодер C-RADIO v2 (distilled multi-teacher трансформер), который справляется даже с визуальным шумом и высоким разрешением. 📊 OCRBench v2 — крупнейший двухъязычный бенчмарк для визуального анализа текста, и именно NVIDIA Nano VL показывает лучший результат. 🟡Hf 🟡 Подробнее @ai_machinelearning_big_data #Nemotron #NVIDIA

✔️ Llama Nemotron Nano VL от NVIDIA — один из лучших OCR инструментов для работы с документами. Мультимодальная модель от NVI
✔️ Llama Nemotron Nano VL от NVIDIA — один из лучших OCR инструментов для работы с документами. Мультимодальная модель от NVIDIA уверенно занимает первое место на OCRBench v2, показав лучшую точность парсинга документов среди всех моделей. 📄 Что это такое: Llama Nemotron Nano VL — лёгкая vision-language модель для интеллектуальной обработки документов (IDP), которая: • разбирает PDF • вытаскивает таблицы • парсит графики и диаграммы • работает на одной GPU 🔍 Заточена под: – Вопрос-ответ по документам – Извлечение таблиц – Анализ графиков – Понимание диаграмм и дешбордов 🧠 Под капотом — vision-энкодер C-RADIO v2 (distilled multi-teacher трансформер), который справляется даже с визуальным шумом и высоким разрешением. 📊 OCRBench v2 — крупнейший двухъязычный бенчмарк для визуального анализа текста, и именно NVIDIA Nano VL показывает лучший результат. 🟡Hf 🟡 Подробнее @ai_machinelearning_big_data #Nemotron #NVIDIA

🐍 Python-задача с подвохом: кто съел яблоко? У тебя есть список действий персонажей:

actions = [
    ("Alice", "picked"),
    ("Bob", "looked"),
    ("Charlie", "picked"),
    ("Bob", "dropped"),
    ("Alice", "dropped"),
    ("Charlie", "ate")
]
Каждое действие — это кортеж: (имя персонажа, действие). 📌 Правила: 1. Только тот, кто сначала "picked", может "ate". 2. Если кто-то "dropped", он больше не владеет объектом. 3. Нужно выяснить, кто съел яблоко, и проверить: мог ли он это сделать по правилам? 🧠 Задача: Напиши функцию who_ate(actions: list[tuple[str, str]]) -> str, которая возвращает: - "OK" — если всё законно - "CHEATER" — если съевший не имел права --- ✅ Решение с разбором: ```python def who_ate(actions): holding = set() eater = None for name, action in actions: if action == "picked": holding.add(name) elif action == "dropped": holding.discard(name) elif action == "ate": eater = name if name in holding: return "OK" else: return "CHEATER" return "NO ONE ATE" ``` 📌 **Как это работает:** - `holding` — это множество тех, кто в данный момент "держит" объект. - Как только кто-то `"ate"`, мы сразу проверяем: находится ли он в `holding`? - Если нет — значит, он **съел чужое яблоко**. Подмена! 🤯 --- 🔍 **Разбор на примере:** ```python # Charlie picked → OK # Charlie ate → всё ещё держит → OK print(who_ate([ ("Charlie", "picked"), ("Charlie", "ate") ])) # OK # Alice picked, потом dropped, потом ate → нарушила правила print(who_ate([ ("Alice", "picked"), ("Alice", "dropped"), ("Alice", "ate") ])) # CHEATER ``` --- 💡 Подвох в том, что многие решают задачу, просто считая количество действий, **не отслеживая актуальное владение** объектом. 📦 Задача хороша для собесов — проверяет внимание к деталям и мышление в терминах состояний.

🐍 **LibrePythonista — Python прямо в LibreOffice Calc** LibrePythonista — это бесплатное и открытое расширение, которое доба
🐍 **LibrePythonista — Python прямо в LibreOffice Calc** LibrePythonista — это бесплатное и открытое расширение, которое добавляет полноценную поддержку Python прямо в LibreOffice Calc. И да, оно уже поддерживает Pandas, Matplotlib и даже собственный PIP-менеджер пакетов! 💡 Что умеет LibrePythonista: • 📊 Создание DataFrame, Series и графиков прямо в ячейках • 📦 Встроенный PIP для установки дополнительных библиотек • 🔐 Локальное исполнение кода — ваши данные не покидают компьютер • 🧰 Использует OOO Dev Tools — не требует дополнительных расширений • 🧪 Пока в бете — можно влиять на развитие 📎 Больше не нужно колхозить скрипты или вручную подключать Pandas/Numpy — всё уже встроено. 🔗 Проект: https://github.com/LibreOffice/librepythonista 🚀 Открытый, мощный, гибкий — идеальный инструмент для тех, кто любит Python и таблицы.

Каким будет вывод этого кода?
Anonymous voting