ru
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

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

24 822
Подписчики
Нет данных24 часа
+637 дней
-4430 день
Архив постов
🖥 В этой статье автор делится опытом компиляции первой стабильной версии Python 1.0, выпущенной 27 января 1994 года, использ
🖥 В этой статье автор делится опытом компиляции первой стабильной версии Python 1.0, выпущенной 27 января 1994 года, используя современные инструменты виртуализации! 🌟 Для этого автор использует контейнеризацию с помощью Podman, разворачивая старую версию Debian (Debian 4.0) для создания подходящей среды. В процессе описываются шаги по настройке окружения, установке необходимых инструментов сборки и решению возникающих проблем, таких как несовместимость современных протоколов SSL/TLS при загрузке исходных кодов. После успешной компиляции Python 1.0 автор исследует его возможности, отмечая наличие высокоуровневых структур данных и поддержку работы с процессами, текстом, файлами и сетью, а также указывает на некоторые забавные особенности и ограничения той эпохи. 🔗 Ссылка: *клик* @python_job_interview

🖥 Linux — топ среди обучающих каналов для быстрого погружения Linux. Наглядные картинки и короткие видео - мы расскажем о вс
+5
🖥 Linux — топ среди обучающих каналов для быстрого погружения Linux. Наглядные картинки и короткие видео - мы расскажем о всех секртетах Linux администрирования. Подписаться: t.me/linuxacademiya

🖥Задача: "Динамическое кэширование с ограничением памяти и частотой запросов" 🔖 Условие: Реализуйте класс SmartCache, который работает следующим образом: - Метод put(key: str, value: Any): - Сохраняет значение по ключу. - Если суммарный объем памяти, занимаемый всеми элементами, превышает лимит (например, 10 MB), автоматически удаляются наименее "ценные" элементы. - Метод get(key: str) -> Any: - Возвращает значение по ключу. - Увеличивает счётчик использования элемента. - Если элемент отсутствует — возвращает None. Что значит "ценность" элемента: - Ценность = количество обращений (`hit count`) к элементу. - При очистке кэша сначала удаляются элементы с наименьшим количеством обращений. Ограничения: - Класс должен корректно считать объём памяти, занимаемый элементами. - Нужно учитывать, что элементы могут быть сложными структурами (`dict`, list, вложенные объекты). - Решение должно быть эффективным: операции должны быть быстрыми даже при большом количестве элементов. --- ▪️ Подсказки: - Для оценки размера объектов можно использовать модуль sys.getsizeof, но для сложных вложенных структур нужен рекурсивный подсчет. - Для хранения частоты обращений стоит использовать дополнительную структуру данных (`collections.Counter` или `dict`). - При очистке лучше сначала группировать элементы по "ценности", а затем удалять самые "дешевые". --- ▪️ Что оценивается: - Умение работать с ограничениями по памяти. - Аккуратная обработка ссылок и размеров объектов. - Эффективность очистки кэша. - Чистота и читаемость кода. --- ▪️ Разбор возможного решения: Идея архитектуры: - Храним: - storage: словарь {key: value}. - hits: счётчик {key: hit_count}. - size: общий размер всех объектов. - При put(): - Добавляем элемент. - Пересчитываем суммарный размер. - Если размер превышает лимит: - Удаляем наименее популярные элементы до тех пор, пока не уложимся в лимит. - При get(): - Увеличиваем hit_count элемента. - Возвращаем значение или None. Оценка размера объектов: - Простого sys.getsizeof недостаточно для коллекций. - Нужна функция, рекурсивно подсчитывающая размер всех вложенных объектов. Мини-пример функции подсчета размера:

import sys

def deep_getsizeof(obj, seen=None):
    """Рекурсивно считает память объекта и его вложенных объектов"""
    size = sys.getsizeof(obj)
    if seen is None:
        seen = set()
    obj_id = id(obj)
    if obj_id in seen:
        return 0
    seen.add(obj_id)

    if isinstance(obj, dict):
        size += sum([deep_getsizeof(v, seen) + deep_getsizeof(k, seen) for k, v in obj.items()])
    elif isinstance(obj, (list, tuple, set, frozenset)):
        size += sum(deep_getsizeof(i, seen) for i in obj)
    return size
Мини-пример интерфейса `SmartCache`:

class SmartCache:
    def __init__(self, max_size_bytes):
        self.max_size = max_size_bytes
        self.storage = {}
        self.hits = {}
        self.total_size = 0

    def put(self, key, value):
        # добавить логику добавления и очистки при переполнении
        pass

    def get(self, key):
        # увеличить hit_count и вернуть значение
        pass
🔖 Дополнительные вопросы: - Как ускорить очистку кэша без полного перебора всех элементов? - Как сделать потокобезопасную версию кэша? - Как адаптировать SmartCache для распределённой архитектуры (кэш между несколькими машинами)? @python_job_interview

⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь: Python: t.me/pythonl Linux: t.me/linuxacademiya Собеседования DS: t.me/machinelearning_interview Нерйросети t.me/ai_machinelearning_big_data C++ t.me/cpluspluc Docker: t.me/DevopsDocker Хакинг: t.me/linuxkalii Devops: t.me/DevOPSitsec Data Science: t.me/data_analysis_ml Javascript: t.me/javascriptv C#: t.me/csharp_ci Java: t.me/javatg Базы данных: 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 Haskell: t.me/haskell_tg Физика: t.me/fizmat 💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy 😆ИТ-Мемы: t.me/memes_prog 🇬🇧Английский: t.me/english_forprogrammers 🧠ИИ: t.me/vistehno 🎓954ГБ ОПЕНСОРС КУРСОВ: @courses 📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy

👾 Задача на работу с множествами в Python — Входные данные
В первой строке заданы два натуральных числа N и M (0 < N, M ≤ 100 000). Во второй строке перечислены N элементов первого множества (целые числа через пробел). В третьей строке — M элементов второго множества (целые числа через пробел). Все числа по модулю не превышают 10<sup>9</sup>.
— Выходные данные
Для каждого из M чисел выведите в отдельной строке: - "IN", если число присутствует в обоих множествах - "OUT", если число есть только в одном из множеств - "MISS", если числа нет ни в одном множестве
— Примеры: Входные данные:
5 4 10 20 30 40 50 20 25 40 60
Выходные данные:
IN OUT IN MISS
Жду ваших вариантов решений 📝 @python_job_interview

🚀 Python-разработчик — от основ до синьора. Если вы ищете структурированный roadmap в бэкенд-разработке на Python, обратите
🚀 Python-разработчик — от основ до синьора. Если вы ищете структурированный roadmap в бэкенд-разработке на Python, обратите внимание на дорожную карту от Boot.dev. Она начинается с базовых навыков (Linux, Git, ООП) и ведёт к сложным темам: алгоритмы, HTTP-серверы, безопасность и DevOps-инструменты. Создатели сделали акцент на практике. После каждого теоретического блока предлагается создать проект: от простого бота до агрегатора блогов с использованием SQL и облачных хранилищ. 🤖 GitHub @python_job_interview

Repost from Python/ django
🖥 Новинка в Python 3.14: t-строки — типобезопасные f-строки Python 3.14 вводит t"..." — новый синтаксис для строк, ориентиро
🖥 Новинка в Python 3.14: t-строки — типобезопасные f-строки Python 3.14 вводит t"..." — новый синтаксис для строк, ориентированных на безопасность типов и интеграцию с системами шаблонов, SQL, HTML и др. 🔹 Что такое t-строка? t"..." — это как f"...", но: - интерполяция ограничена и контролируема; - поддерживается строгое соответствие шаблону; - можно передавать переменные явно, предотвращая SQL-инъекции и XSS. 🔸 Пример:

name = "Alice"
greeting = t"Hello, {name}!"  # t-строка
Вместо немедленной подстановки, как в f"...", t"..." создает шаблон с выражениями как параметрами.
🔐 Зачем это нужно? ✅ Безопасность при генерации SQL, HTML, JSON ✅ Улучшение инструментов и проверки типов (через static analysis) ✅ Контроль над контекстом исполнения (больше нельзя просто вставить переменную как есть — нужно передать её явно) 📦 Использование: t-строки — это первый шаг к "template string literals" как в TypeScript. Можно использовать с функциями:

def html(template: T[str]) -> SafeHTML:
    ...

html(t"<div>{user_input}</div>")
💡 Почему это важно? Старый код:

f"SELECT * FROM users WHERE name = '{user_name}'"
может привести к SQL-инъекциям и XSS.
t-строки — безопасная альтернатива с встроенной защитой.
🛡 Пример: безопасный HTML

template = t"<p>{user_input}</p>"
html_output = html(template)
# <p>&lt;script&gt;alert('bad')&lt;/script&gt;</p>
Функция html() может вернуть не просто строку, а полноценный HTMLElement. Больше никакой "грязи" — всё чисто и типобезопасно. 🔍 Работа с шаблоном t-строки позволяют получить доступ к содержимому:

template = t"Hello {name}!"
template.strings      # ("Hello ", "!")
template.values       # (name,)
template.interpolations[0].format_spec  # ">8"
Можно и вручную собрать шаблон:

Template("Hello ", Interpolation(value="World", expression="name"), "!")
🚀 Вывод: t"..." — шаг к безопасным шаблонам и типизации строк в Python. Готовься к будущему Python — безопасному по умолчанию. 📌 Подробнее здесь @pythonl

💡🐍 Задача на бинарный поиск на Python — Входные данные
В первой строке входных данных содержатся натуральные числа N и К ( 0 < N, K ≤ 100 000). Во второй строке задаются N элементов первого массива, отсортированного по возрастанию, а в третьей строке - К элементов второго массива. Элементы обоих массивов - целые числа, каждое из которых по модулю не превосходит 109
— Выходные данные
Требуется для каждого из К чисел вывести в отдельную строку "YES", если это число встречается в первом массиве, и "NO" в противном случае.
— Примеры: входные данные
10 5 123 4 5 6 7 8 9 10 -2 0 4 9 12
выходные данные
NO NO YES YES NO
Скидывайте свои решения в комментарии🧐 @python_job_interview

Задача: "Исчезающие процессы" На сервере с Linux (Ubuntu 22.04) установлен некий демон (например, mydaemon), который запускается через systemd unit и, согласно логам, должен работать постоянно. ❓ Но вот странность: systemctl status mydaemon показывает, что сервис активен. Однако при выполнении ps aux | grep mydaemon — процесса в списке нет. top, htop, pgrep, pidof — тоже ничего не показывают. Но при перезапуске systemd-сервиса (systemctl restart mydaemon) — в логах появляется запись о запуске, ошибок нет, а поведение не меняется. Вопрос:
что происходит и как найти реальный процесс?
Подсказки: Попробуйте посмотреть, какой тип сервиса указан в systemd unit-файле. Изучите, куда уходит stdout/stderr. Подумайте, может ли ExecStart запускать shell-обёртку, а не сам процесс. Что покажет systemctl show -p MainPID mydaemon? Подвох и решение: Часто в unit-файле могут писать: ```ini Type=simple ExecStart=/bin/bash -c 'sleep 9999'``` Systemd считает, что bash — это основной процесс (MainPID), но он сразу завершается, передав выполнение sleep. Однако поскольку Type=simple, systemd не отслеживает дочерние процессы, и MainPID исчезает — ps и pgrep по имени mydaemon ничего не покажут, а дочерний процесс (sleep 9999) работает, но под другим именем. Решение: Либо указать Type=forking и использовать PIDFile. Либо не использовать bash -c, а запускать нужный бинарь напрямую. Либо использовать Type=exec (в systemd >240) или Type=notify с proper daemon tools.

🧠 Python-хитрая задача + решение 🖍️ Условие: У тебя есть список логов (user, login/logout). Найди тех, кто зашел, но не вышел. 📜 Пример:

logs = [
    ("alice", "login"),
    ("bob", "login"),
    ("alice", "logout"),
    ("dave", "login"),
    ("bob", "logout"),
    ("carol", "login"),
    ("dave", "logout")
]
________ 💻 Решение:

from collections import defaultdict

def find_stuck_users(logs):
    counter = defaultdict(int)
    for user, action in logs:
        if action == "login":
            counter[user] += 1
        elif action == "logout":
            counter[user] -= 1
    return sorted([user for user, count in counter.items() if count > 0])
🛠Ответ: "carol" #Python #Challenge #DevPuzzle @python_job_interview

🧠 Задача с подвохом: Что выведет код?

def extendList(val, list=[]):
    list.append(val)
    return list

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

print("list1 =", list1)
print("list2 =", list2)
print("list3 =", list3)
Варианты ответа: A.

list2 = [123]
list3 = ['a']
B.

list2 = [123]
list3 = [10, 'a']
C.

list2 = [123]
list3 = [10, 'a']
D.

list2 = [123]
list3 = ['a']
❓ Как думаешь, какой ответ правильный и почему? Подвох: аргументы по умолчанию в Python вычисляются один раз — при определении функции. 🔸 В extendList(val, list=[]) — этот list=[] сохраняется один и тот же объект списка для всех вызовов функции, где не передаётся list. Что происходит: list1 = extendList(10) → list=[] по умолчанию → list = [10] → list1 → [10] list2 = extendList(123, []) → передали новый список → list = [123] → list2 → [123] list3 = extendList('a') → снова использован тот же список, что и в list1 → list = [10, 'a'] → list3 → [10, 'a'] → и list1 тоже теперь [10, 'a'], потому что это один и тот же объект Вывод будет: list1 = [10, 'a'] list2 = [123] list3 = [10, 'a']

👩‍💻 Docker — лучший канал для ускоренного обучения DevOps. С помощью инфографики, наглядных визуализаций и коротких обучающ
+5
👩‍💻 Docker — лучший канал для ускоренного обучения DevOps. С помощью инфографики, наглядных визуализаций и коротких обучающих видео, вам будут доступны все ключевые концепции работы с Docker и методики DevOps. Прокачать скиллы: t.me/DevopsDocker

🚀 SQLModel — удобное решение для работы с базами данных в Python, объединяющее силу SQLAlchemy и валидацию Pydantic. Проект
🚀 SQLModel — удобное решение для работы с базами данных в Python, объединяющее силу SQLAlchemy и валидацию Pydantic. Проект устраняет главную боль разработчиков: необходимость дублировать модели для БД и API. Инструмент имеет синтаксис на основе аннотаций типов. Один класс одновременно описывает таблицу в БД и схему для FastAPI, а встроенная поддержка IDE сразу подсказывает поля и выявляет ошибки. Например, модель Hero с полями name и secret_name готова к использованию и в миграциях, и в эндпоинтах без лишнего кода. 🤖 GitHub @python_job_interview

Что выведет этот код на Python?

x = [1, 2, 3]
y = x
x += [4]

print(x)
print(y)
🔢 Варианты ответа: A)

[1, 2, 3]
B)

[1, 2, 3, 4]
C)

[1, 2, 3, 4]
D)

[1, 2, 3]
Правильный ответ: B 💡 Почему? - x = [1, 2, 3] и y = x — ссылка на один и тот же список. - x += [4] модифицирует список на месте. - Поэтому y тоже видит изменение. 🧠 Подвох — в +=, который работает не как x = x + [...].

Хотите освоить программирование или сменить работу в IT? А вы готовы всего за час создать и опубликовать целое приложение? От
Хотите освоить программирование или сменить работу в IT? А вы готовы всего за час создать и опубликовать целое приложение? Отлично! Тогда присоединяйтесь к онлайн-конференции «Как создать первый проект на Python и Java с нуля»! Новички в IT узнают: - какой язык программирования лучше выбрать для старта - как быстро создать и развернуть приложение - как работают Python и Java на практике - как размещать код на GitHub и работать с репозиториями - какие дополнительные инструменты использовать для профессионального роста Программисты на других языках, и те, кто ищет новые возможности в IT: - поймёте, какие IT-технологии сейчас востребованы - узнаете, какие навыки прокачивать для успешной смены деятельности - отработаете навыки быстрой сборки и быстрого развёртывания проекта - узнаете о новых возможностях для обучения и развития Также вас ждёт квиз с призами! Спикеры: Сурен Хоренян: бэкенд-разработчик на Python, руководитель команды в «VK Рекламе» Сергей Прощаев: Java-разработчик Бонус! Скидка 7% на любой курс OTUS и полезные материалы в подарок! 18 апреля, 19:00 МСК Бесплатно Записаться на событие - https://otus.pw/hO1Y/?erid=2W5zFG4xtxx Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Что выведет этот код на Python?

def append_to(element, to=[]):
    to.append(element)
    return to

print(append_to(1))
print(append_to(2))
print(append_to(3, []))
print(append_to(4))
🔢 Варианты ответа: A)

[2]
[3]
[4]
B)

[1, 2]
[3]
[1, 2, 4]
C)

[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
D)

[1, 2]
[3]
[4]
Правильный ответ: B 💡 Почему? В Python дефолтные аргументы вычисляются один раз — при определении функции. Список to=[] сохраняется и используется повторно, если явно не передан другой. Поэтому append_to(1), append_to(2) и append_to(4) работают с одним и тем же списком.

🖥 simplejson — это библиотека для Python, обеспечивающая простое, быстрое и расширяемое кодирование и декодирование JSON! 🌟
🖥 simplejson — это библиотека для Python, обеспечивающая простое, быстрое и расширяемое кодирование и декодирование JSON! 🌟 Она полностью написана на Python и не имеет внешних зависимостей, но включает необязательное C-расширение для повышения производительности. Поддерживает Python версии 3.3 и выше, а также имеет обратную совместимость с Python 2.5+. 🔐 Лицензия: MIT 🖥 Github @python_job_interview

🧩 Сложная задача по Python для опытных разработчиков Что выведет следующий код?

def func(a, L=[]):
    L.append(a)
    return L

print(func(1))
print(func(2))
print(func(3))
Варианты ответа: A)

[2]
[3]
B)

[1, 2]
[1, 2, 3]
C)

[1]
[1]
D)

[2]
[3]
--- ✅ Правильный ответ: B Почему: Списки по умолчанию (L=[]) в Python инициализируются один раз при определении функции, а не каждый раз при вызове. Поэтому изменения сохраняются между вызовами func. Это классическая "ловушка" со значениями по умолчанию! @python_job_interview

🖥 Создание секретного токена с помощью Python! @python_job_interview
🖥 Создание секретного токена с помощью Python! @python_job_interview