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
帖子存档
Когда я впервые начал искать работу в IT, у меня уже были пет-проекты, немного знаний и огромное желание попасть в профессию. Но, если честно, я не понимал, с чего начинать. Как составить резюме? Что писать, если нет коммерческого опыта? Как вообще попасть на собеседование? Много времени ушло на догадки, ошибки и отклики на вакансии, которые остались без ответа. Сейчас я бы с радостью сэкономил себе эти месяцы — и начал с четкой стратегии. 🧭 Такой план как раз подготовил Яндекс Практикум.   Они выпустили понятный гайд по стратегии поиска работы: шаг за шагом разбирают, как устроен найм сегодня, что реально важно работодателям, и как новичку не потеряться в этом процессе. 📌 Что чаще всего непонятно новичку: — Как составить резюме, если нет коммерческого опыта?   — Что писать, кроме «учился на курсах» и «делал пет-проекты»?   — Где искать вакансии, чтобы не тратить месяцы впустую?   — Как пройти первое техническое интервью и не провалиться от волнения? Всё это — не про код, а про стратегию. И хорошая новость в том, что её можно выстроить заранее. 📹 В дополнение — подборка видео от карьерных экспертов:   → как выделиться среди кандидатов,   → как составить резюме без опыта,   → как пройти собеседование и получить оффер. Гайд можно скачать прямо под этим постом — в нём простыми словами, по делу и без воды объясняют, с чего начать путь к первой работе. Забирай гайд “Как построить стратегию поиска работы” и смотри видео с экспертами, чтобы выделиться среди кандидатов и быстрее получить оффер. Реклама, АНО ДПО “Образовательные технологии Яндекса”, ИНН 7704282033

🍀 Большая шпаргалка по всем основам Python для подготовки к собеседованию @python_job_interview
+1
🍀 Большая шпаргалка по всем основам Python для подготовки к собеседованию @python_job_interview

🚀 Изучаем Python с нуля до уверенного уровня за 3 месяца — нашли лучший репозиторий для новичков. 📚 Что внутри: • Чёткая ст
🚀 Изучаем Python с нуля до уверенного уровня за 3 месяца — нашли лучший репозиторий для новичков. 📚 Что внутри: • Чёткая структура по темам — от синтаксиса до ООП, без воды • Сотни понятных примеров — меняй под себя и учись на практике • Всё объяснено простым языком — даже если ты никогда не кодил • Удобный формат Jupyter Notebook — легко читать и запускать • И главное — абсолютно бесплатно Начни разбираться в Python уже сегодня: 🔗 github.com/AllenDowney/ThinkPython @python_job_interview

📦 Pydantic Extra Types — коллекция дополнительных типов данных для Pydantic, которые не вошли в основную библиотеку. Проект
📦 Pydantic Extra Types — коллекция дополнительных типов данных для Pydantic, которые не вошли в основную библиотеку. Проект расширяет возможности валидации данных, предлагая специфические форматы и проверки. Типы подключаются как опциональные зависимости, позволяя выбирать только нужные компоненты. Например, можно добавить поддержку pendulum для работы с временными зонами. 🤖 GitHub @python_job_interview

🚀 Как оптимизировать Python‑код уже на старте — советы для новичков Не нужно быть профи, чтобы писать быстрый и аккуратный к
🚀 Как оптимизировать Python‑код уже на старте — советы для новичков Не нужно быть профи, чтобы писать быстрый и аккуратный код. Вот 7 простых приёмов, которые реально помогают: 1. Используй профайлеры (cProfile, Py‑Spy) Перед оптимизацией — измерь время. Часто больше всего тормозят совсем неожиданные места. 2. Перестрой алгоритмы и структуры данных Выбор между списком, множеством или словарём может кардинально изменить сложность: O(1) вместо O(n) при поиске. 3. Выбирай встроенные функции map, max, join — всё это написано на C и работает быстрее ручных циклов. 4. Пиши list/dict comprehensions и используй zip, enumerate Это компактнее, читабельнее и часто быстрее классических for-циклов. 5. Генераторы вместо списков, где не нужен весь набор сразу Снижают потребление памяти и ускоряют обработку. 6. Переход на PyPy или JIT‑ускорители PyPy, Numba и Cython могут дать прирост производительности в 2–100 раз для тяжёлых вычислений. 7. Избегай преждевременной оптимизации Оптимизируй только то, что реально тормозит. Профайлер покажет, где именно. 🧩 Быстрый чек-лист: • Измерил ли я время выполнения? • Подходящие ли структуры данных? • Используются ли встроенные функции? • Применены ли comprehensions и генераторы? • Рассматривал ли я PyPy или JIT? • Код по-прежнему читаемый? ✅ Вывод: даже новичок может писать быстрый и понятный Python-код. Главное — думать, замерять и улучшать без фанатизма. ▶️ Подробности с кодом

🧠 Хитрая задача по Python — *ловушка с изменяемыми значениями по умолчанию* Вопрос: Что выведет следующий код?

def append_to_list(value, my_list=[]):
    my_list.append(value)
    return my_list

print(append_to_list(1))
print(append_to_list(2))
print(append_to_list(3))
Ваш ответ? 🤔 Многие ожидают:

[1]
[2]
[3]
Но фактически вывод будет:
python 
[1]
[1, 2]
[1, 2, 3]
🔍 Почему так происходит? Параметр my_list=[] создаётся один раз — при определении функции. И он сохраняется между вызовами. То есть все вызовы функции используют один и тот же список по умолчанию. Это одна из самых частых ошибок в продакшене. ✅ Правильный способ — использовать None как значение по умолчанию:


def append_to_list(value, my_list=None):
    if my_list is None:
        my_list = []
    my_list.append(value)
    return my_list
Теперь:
[1]
[2]
[3]
Каждый вызов получает новый список. ⚠️ Если вы работаете с функциями, которые принимают списки или словари — всегда проверяйте, не мутируется ли значение между вызовами.

🧠 Ускорь import в Python-проектах с помощью lazy loading — без изменения логики Если у тебя проект с тяжёлыми модулями (`pandas`, torch, tensorflow`), но они не всегда нужны — не загружай их зря. Python позволяет **отложить импорт до первого использования**, через встроённый `importlib. Вот как это выглядит на практике:


import importlib

# Обёртка для ленивого импорта
def lazy_import(name):
    return importlib.util.LazyLoader(importlib.import_module(name))

# Использование
np = lazy_import('numpy')
# numpy ещё не загружен

# Теперь загрузится:
print(np.array([1, 2, 3]))

Repost from Python/ django
👾 GREMLLM — теперь у ваших багов есть сознание GREMLLM — это необычный Python-класс, в котором все методы и свойства создают
👾 GREMLLM — теперь у ваших багов есть сознание GREMLLM — это необычный Python-класс, в котором все методы и свойства создаются динамически с помощью LLM. Вы описываете, *что за объект вы хотите*, и дальше GREMLLM сам решает, что должно происходить при вызове методов или обращении к полям. 📦 Установка:

pip install gremllm
🔧 Пример:


from gremllm import Gremllm

counter = Gremllm('counter')
counter.value = 5
counter.increment()
print(counter.value)               # → 6?
print(counter.to_roman_numerals())  # → VI?
🧩 Возможности: – Динамическое поведение: всё определяется "на лету" с помощью LLM – Поддержка OpenAI, Claude, Gemini, и локальных моделей – Wet Mode: можно строить цепочки вызовов (методы возвращают объекты) – Verbose Mode: выводит, какой код был сгенерирован – Умная обработка ошибок и настройка через наследование ⚠️ Это экспериментальный инструмент. Не для продакшена. Но очень интересен для изучения LLM-интеграций в Python-код. 🔗 Репозиторий: https://github.com/ur-whitelab/gremllm @pythonl

🐍 Совет дня для опытных Python-разработчиков 📌 Используй декораторы с параметрами — мощный приём для логирования, контроля, кэширования и кастомных проверок. Пример: логгер, у которого можно задать уровень логирования через аргумент:

import functools
import logging

def log(level=logging.INFO):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            logging.log(level, f"Вызов {func.__name__} с args={args}, kwargs={kwargs}")
            return func(*args, **kwargs)
        return wrapper
    return decorator

@log(logging.DEBUG)
def compute(x, y):
    return x + y
✅ Зачем это нужно: Декоратор гибко настраивается; Подходит для трассировки в проде и отладки в деве; Сохраняет сигнатуру и docstring благодаря @functools.wraps. ⚠️ Совет: избегай вложенности >2 уровней и всегда пиши тесты на поведение декоратора. Python даёт инструменты, которые выглядят магией, но работают стабильно — если знаешь, как ими пользоваться.

Repost from Machinelearning
🔥 Google DeepMind представили новую open-source библиотеку на Python для сборки асинхронных AI‑пайплайнов в реальном времени
+2
🔥 Google DeepMind представили новую open-source библиотеку на Python для сборки асинхронных AI‑пайплайнов в реальном времени! Новая библиотека позволяет собирать AI-процессы из компонентов — как LEGO для ИИ-агентов. 🔧 Особенности: - Построение асинхронных, компонуемых пайплайнов - Поддержка Gemini и Gemini Live API - Основана на asyncio - Обрабатывает мультимодальные данные: текст, изображения, аудио - Внутри готовые агенты: real-time агент, исследователь, live-комментатор 💡 Подходит для: - Разработки ИИ-агентов - Генеративных моделей, работающих в реальном времени - Быстрой сборки MVP с мультимодальными возможностями Установка:

pip install genai-processors
Открытый код, готовые компоненты и интеграция с API. • Repo: https://github.com/google-gemini/genai-processorsBlog: https://developers.googleblog.com/en/genai-processors/ @ai_machinelearning_big_data #DeepMind #ai #ml

🎙️ pytest-recording — плагин для записи и воспроизведения HTTP-запросов в тестах Инструмент использует VCR.py под капотом, ч
🎙️ pytest-recording — плагин для записи и воспроизведения HTTP-запросов в тестах Инструмент использует VCR.py под капотом, чтобы сохранять сетевые взаимодействия в YAML-кассеты и переиспользовать их при последующих запусках. Достаточно добавить @pytest.mark.vcr к тесту и все запросы автоматически запишутся или возьмутся из кэша. Особенно удобно для тестирования API, можно блокировать случайные сетевые вызовы через @pytest.mark.block_network и точечно разрешать только нужные хосты. Поддерживается тонкая настройка через vcr_config и работа в режиме перезаписи кассет. 🤖 GitHub @python_job_interview

📌 Сложная задача для собеседования на Python: «Асинхронный кэш с TTL и инвалидацией». Условие: Реализуйте потокобезопасный асинхронный кэш с временем жизни записей, поддержкой инвалидации по ключу и автоматическим удалением устаревших записей. Кэш должен: 1️⃣ Хранить значения не дольше указанного TTL (seconds) 2️⃣ Автоматически очищать устаревшие записи без блокировки основного потока 3️⃣ Поддерживать асинхронные операции get/set 4️⃣ Иметь механизм ручной инвалидации 5️⃣ Гарантировать потокобезопасность 6️⃣ Оптимизировать память Ожидаемое решение:
import asyncio
import time
from collections import OrderedDict
from typing import Any, Optional
import threading

class AsyncTTLCache:
    def __init__(self, maxsize: int = 1024, ttl: int = 60):
        self._cache = OrderedDict()
        self._maxsize = maxsize
        self._ttl = ttl
        self._lock = threading.Lock()
        self._cleanup_task = asyncio.create_task(self._cleanup_expired())

    async def get(self, key: str) -> Optional[Any]:
        with self._lock:
            if key not in self._cache:
                return None
            value, expiry = self._cache[key]
            if time.time() > expiry:
                del self._cache[key]
                return None
            # Move to end to mark as recently used
            self._cache.move_to_end(key)
            return value

    async def set(self, key: str, value: Any) -> None:
        with self._lock:
            if key in self._cache:
                self._cache.move_to_end(key)
            self._cache[key] = (value, time.time() + self._ttl)
            if len(self._cache) > self._maxsize:
                self._cache.popitem(last=False)

    async def invalidate(self, key: str) -> None:
        with self._lock:
            if key in self._cache:
                del self._cache[key]

    async def _cleanup_expired(self) -> None:
        while True:
            await asyncio.sleep(self._ttl)
            with self._lock:
                now = time.time()
                expired_keys = [
                    k for k, (_, expiry) in self._cache.items()
                    if expiry <= now
                ]
                for k in expired_keys:
                    del self._cache[k]

    def __del__(self):
        self._cleanup_task.cancel()


# Пример использования
async def main():
    cache = AsyncTTLCache(ttl=2)
    
    await cache.set("a", 1)
    print(await cache.get("a"))  # 1
    
    await asyncio.sleep(3)
    print(await cache.get("a"))  # None
    
    await cache.set("b", 2)
    await cache.invalidate("b")
    print(await cache.get("b"))  # None

asyncio.run(main())
Предлагайте свои варианты решения в комментариях⏬️ @python_job_interview

🔍Открытое собеседование на Python-бекендера с разработчиком из Avito и Яндекс во вторник 10 июля(уже в четверг!) в 19:00 по
🔍Открытое собеседование на Python-бекендера с разработчиком из Avito и Яндекс во вторник 10 июля(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика. Как это будет: 📂 Савва Демиденко, ТехЛид с опытом в Яндексе и Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Савва будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Савве Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqxjiWL7

🎙️ pytest-recording — плагин для записи и воспроизведения HTTP-запросов в тестах. Полезный инструмент для Python-разработчик
🎙️ pytest-recording — плагин для записи и воспроизведения HTTP-запросов в тестах. Полезный инструмент для Python-разработчиков, который помогает сделать тесты, зависящие от внешних API, более стабильными и быстрыми. Плагин использует VCR.py под капотом, позволяя записывать реальные HTTP-взаимодействия в YAML-кассеты и затем воспроизводить их локально. Инструмент имеет удобный режим rewrite, который полностью перезаписывает кассеты, а не просто дополняет их. Также есть встроенная блокировка случайных сетевых запросов во время тестирования. 🤖 GitHub @python_job_interview

⚙️ Подменяй любые импорты в Python “на лету” — без изменения кода Если ты хочешь протестировать модуль, подменить зависимость, замокать внешний сервис или обмануть импорт — не обязательно редактировать исходники. Python позволяет перехватывать импорты прямо во время выполнения, через sys.modules. Вот минимальный приём, который делает это прозрачно:

import sys
import types

# Создаём фейковый модуль
fake = types.SimpleNamespace()
fake.get_data = lambda: "подмена работает"

# Подменяем импорт
sys.modules['external_service'] = fake

# Теперь даже import будет работать
import external_service
print(external_service.get_data())  # → "подмена работает"

🧠 Ускоряй Python циклы без NumPy — через встроенный `array.array` Если ты используешь большие списки чисел в Python и работаешь с ними в цикле — знай: list медленный и неэффективный по памяти. Есть способ ускорить операции в 2–5 раз без внешних библиотек — просто используй array точка array. Попробуй и напиши в комментах результат, на сколько ускорились твои функции. from array import array data = array('f', [0.1] * 10_000_000) # вместо обычного list # быстрая арифметика for i in range(len(data)): data[i] *= 2.5

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

🐍 Python-задача с подвохом: что напечатает код?

def extend_list(val, lst=[]):
    lst.append(val)
    return lst

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

print("list1 =", list1)
print("list2 =", list2)
print("list3 =", list3)
Варианты ответа: 1️⃣ list1 = [10], list2 = [123], list3 = ['a'] 2️⃣ list1 = [10], list2 = [123], list3 = [10, 'a'] 3️⃣ list1 = [10, 'a'], list2 = [123], list3 = [10, 'a'] 4️⃣ list1 = [10, 'a'], list2 = [123], list3 = ['a'] --- 💡 Подсказка: Если вы используете изменяемый объект (например, список) как значение по умолчанию в аргументе функции — он сохраняется между вызовами. --- ✅ Ответ: list1 = [10, 'a'] list2 = [123] list3 = [10, 'a'] 🔎 Почему? 👉 Значение по умолчанию lst=[] создаётся один раз — при определении функции. 👉 Когда вызываем extend_list(10), значение 10 добавляется в этот общий список. 👉 Когда вызываем extend_list(123, []), передаём новый список, всё ок. 👉 Когда вызываем extend_list('a'), снова используется общий список из первого вызова. Чтобы избежать этой ловушки:

def extend_list(val, lst=None):
    if lst is None:
        lst = []
    lst.append(val)
    return lst
🚀 Запомни: никогда не используй изменяемые объекты как значения по умолчанию для аргументов функции! @python_job_interview

📥 Palanteer — инструмент для глубокого анализа производительности C++ и Python-приложений. Этот проект предлагает детальную
📥 Palanteer — инструмент для глубокого анализа производительности C++ и Python-приложений. Этот проект предлагает детальную телеметрию: от временных меток выполнения функций до отслеживания потребления памяти и переключений контекста. Инструмент обладает минималистичной интеграцией: в C++ достаточно подключить один заголовочный файл, а Python-код анализируется автоматически. Визуализация в реальном времени включает временные графики, flame graphs и логи с наносекундным разрешением. 🤖 GitHub