Python вопросы с собеседований
24.9K subscribers
751 photos
101 videos
17 files
615 links
Вопросы с собеседований по Python

@workakkk - админ

@machinelearning_interview - вопросы с собесдований по Ml

@pro_python_code - Python

@data_analysis_ml - анализ данных на Python

@itchannels_telegram - 🔥 главное в ит

РКН: clck.ru/3FmrFd
Download Telegram
В Python 3.15 одна звёздочка заменяет вложенный цикл

Раньше для объединения списков писали:


rows = [[1, 2], [3], [4, 5]]

flat = [x for row in rows for x in row]


Теперь достаточно:


flat = [*row for row in rows]
# [1, 2, 3, 4, 5]


Двойная звёздочка объединяет словари:


configs = [
{"debug": False, "timeout": 10},
{"timeout": 30},
]

config = {**part for part in configs}
# {'debug': False, 'timeout': 30}


При совпадении ключей побеждает последнее значение — удобно собирать настройки из нескольких источников.

Распаковка убирает один уровень вложенности. В Python 3.14 такой синтаксис внутри comprehensions вызовет SyntaxError.

https://peps.python.org/pep-0798/
❤13👍5🔥2
LLM в 200 раз быстрее: скоринг вместо генерации

Как превратить открытую LLM в быстрый локальный движок решений через скоринг следующего токена в SGLang: код, тесты на Qwen и сравнение с генерацией.

Многие вызовы LLM в продакшене вообще не требуют нового текста. Приложение заранее знает все допустимые ответы, и модели остается только выбрать один из них. Классический пример: тикет в поддержку «С меня дважды списали деньги за одну и ту же подписку», который нужно отправить в биллинг, техподдержку или отдел доступа к аккаунтам.

https://uproger.com/lokalnaya-llm-jev-skoring-sglang/
❤4👍2🔥1
Как выучить Python с нуля в 2026 году: пошаговый план для начинающих

Пошаговый план изучения Python с нуля: установка, синтаксис, первые проекты, ошибки новичков и ответы на частые вопросы. С примерами кода.

Python — один из самых популярных языков программирования в мире.

В этой статье - пошаговый план, как выучить Python с нуля: от установки до первых проектов, с примерами кода, типичными ошибками новичков и ответами на частые вопросы.

https://uproger.com/kak-vyuchit-python-s-nulya/
👍3❤2🔥1
LRU-кэш на Python: разбор задачи с собеседования (O(1), OrderedDict, TTL)

Разбираем LRU-кэш на Python за O(1): двусвязный список и хеш-таблица, решение через OrderedDict, TTL и потокобезопасность. Код, тесты и типичные ошибки.

LRU-кэш (Least Recently Used) - одна из самых популярных задач на собеседованиях Python-разработчиков уровня middle и senior. Она короткая, но сразу показывает, понимает ли кандидат сложность алгоритмов, умеет ли комбинировать структуры данных и пишет ли чистый код. В этой статье разберём задачу по шагам: от наивного решения к оптимальному за O(1), затем к Pythonic-версии через OrderedDict и к усложнениям, которые любят давать интервьюеры.

https://uproger.com/lru-cache-python-sobesedovanie/
❤2👍2🔥1
Django 6.1: загрузка связанных данных по требованию, каскадное удаление силами БД и новая настройка почты.

Релиз вышел 5 августа. Три основных изменения:

1. Новые режимы загрузки полей

FETCH_PEERS при обращении к незагруженному полю получает данные сразу для объектов из того же QuerySet. Это помогает бороться с N+1:


from django.db import models

books = Book.objects.fetch_mode(models.FETCH_PEERS)

for book in books:
print(book.author.name)


В этом примере Django выполняет два запроса: за книгами и за их авторами.

Режим `FETCH_RAISE` вместо неявного запроса выбрасывает исключение – полезно для обнаружения неожиданных обращений к БД.

2. Удаление на уровне базы

Для ForeignKey.on_delete появились `DB_CASCADE`, `DB_SET_NULL` и `DB_SET_DEFAULT`. Логику выполняет сама БД через SQL ON DELETE.

Нюанс: `DB_CASCADE` не вызывает сигналы `pre_delete` и `post_delete`.

3. Несколько почтовых бэкендов

Настройка `MAILERS` позволяет описывать разные подключения словарём, а при отправке выбирать нужное через using.

Перед обновлением проверьте версии БД: нужны PostgreSQL 15+, MySQL 8.4+, MariaDB 10.11+ или SQLite 3.37+.

https://www.djangoproject.com/weblog/2026/aug/05/django-61-released/
❤4👏2👍1
Одна библиотека для сериализации и проверки данных в Python

🔥 msgspec объединяет работу с JSON, MessagePack и валидацию типов.

Что внутри:

- Быстрая сериализация.
- Проверка данных по типам.
- Поддержка JSON и MessagePack.
- Типизированные структуры Python.

Установка: pip install msgspec

Стоит присмотреться, если в проекте много обмена структурированными данными и хочется совместить их обработку с проверкой.

https://github.com/msgspec/msgspec
❤4🔥2👍1
📄️️️️️️ Agent Harness Course 2026 - как построить своего AI-агента с нуля

Пошаговый курс на ~8 недель (1–2 часа в день): от одного запроса к LLM до агента с инструментами, памятью, субагентами, защитой и тестами
- и финального проекта.

Свой учебный харнес на чистом Python без единой зависимости, 7 запускаемых уроков, финальный проект, 19 тестов и разбор архитектуры настоящего open-source агента. Ai Ml — материал переработан, структурирован и дополнен кодом, схемами и справочниками.

Курс не учит «пользоваться ещё одним фреймворком». Он показывает, из чего сделан любой агент — Claude Code, Codex, Cursor, Devin, LearnHarness — и даёт собрать каждую деталь руками. После этого любой фреймворк читается за вечер, а любой баг агента - объясним.

https://github.com/justxor/agent-harness-course/
❤6👍3🥰1
Зачем вам Hugo и Jekyll? На Python теперь можно собрать статический сайт в три строки

Разработчик nanodjango показал, как превратить Django в генератор статических сайтов без сложной конфигурации и десятков файлов.

Всё приложение:


from nanodjango import Django

app = Django()
app.pages("/", path="pages")


Устанавливаем зависимости:


pip install nanodjango django-nanopages django-distill


Теперь достаточно положить Markdown-файлы в папку pages/. Они автоматически превращаются в страницы с поддержкой Django-шаблонов.

Что особенно интересно:

- Markdown и HTML с поддержкой frontmatter.
- Автоматическая перезагрузка страниц при редактировании.
- Генерация статического сайта одной командой.
- Поддержка Django ORM, моделей и админки.
- Возможность превратить проект в полноценное веб-приложение без переписывания с нуля.

Сборка HTML:


nanodjango manage website.py distill generate \
--output-directory=output/ --collectstatic


Самая необычная возможность: можно управлять контентом через Django Admin и базу данных, а на выходе получать обычные статические HTML-файлы без серверной логики.

Подойдёт для документации, блогов, лендингов и небольших сайтов.

https://nanodjango.dev/blog/2026-10-static-site-builder/
👍4❤3🔥3🤔1
Media is too big
VIEW IN TELEGRAM
10 лет программирования на Python за 10 минут. База, которая сэкономит тебе годы

Всё, что обычно понимаешь только через годы работы и код-ревью: как Python хранит данные, питонический стиль, структуры данных, декораторы, генераторы, dataclass, обработка ошибок, типы и тесты, uv и pyproject.toml, профилирование, asyncio и numpy. Без синтаксиса для новичков, только опыт.

00:00 Вступление
00:16 Год 1. Как Python хранит данные
01:10 Год 2. Пиши по-питоновски
01:58 Год 3. Структуры данных
02:47 Год 4. Функции как объекты
03:41 Год 5. Генераторы
04:30 Год 6. ООП по-питоновски
05:22 Год 7. Ошибки и ресурсы
06:01 Год 8. Типы и тесты
06:42 Год 9. Окружение и проекты
07:27 Год 10. Производительность
08:12 Итоги

https://www.youtube.com/watch?v=yQH3Hoo7JeM
🥴6👍5🔥1
Python: одна строка, которая изменит список, а потом выбросит исключение

Что выведет этот код?


data = ([1, 2],)

try:
data[0] += [3]
except TypeError:
print("Ошибка!")

print(data)


Варианты:

A

Ошибка!
([1, 2],)


B

Ошибка!
([1, 2, 3],)


C

([1, 2, 3],)


D

TypeError: 'tuple' object does not support item assignment


Здесь проверяется сразу несколько особенностей Python: неизменяемость кортежей, изменяемость вложенных объектов и поведение оператора +=.

Какой вариант правильный и почему?
❤3👍2🔥1
🖥️ Черная пятница на Stepik на один из лучших курсов по контейнеризации!

Если давно хотел разобраться в теме, но постоянно откладывал или терялся среди десятков материалов, этот курс на Stepik поможет выстроить обучение последовательно.

Что получишь:
- Понятные объяснения без лишней воды.
- Практические задания для закрепления знаний.
- Возможность учиться в удобном темпе.
- Структурированный подход вместо хаотичного поиска информации.

Подойдёт тем, кто начинает с нуля или хочет систематизировать знания.

Начни прокачивать навыки уже сейчас:

https://stepik.org/course/303477/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1😁1
Python: задача, на которой легко ошибиться даже опытному разработчику 🧠

Что выведет этот код?


a = [0, 1, 2]
i = 0

i, a[i] = 1, a[i] + 10

print(a, i)


Варианты:

A

[10, 1, 2] 1


B

[0, 10, 2] 1


C

[0, 1, 12] 1


D

IndexError


Здесь проверяется неочевидная особенность Python: порядок вычисления правой части множественного присваивания и последовательность присваивания целевых переменных.

У задачи есть подвох, связанный с тем, в какой момент Python вычисляет индекс a[i].

Какой вариант правильный? Объясните порядок выполнения по шагам.