uk
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