handbook

Справочник

Одна тема — один сквозной пример, разобранный до конца, и задачи в браузере, чтобы закрепить руками.

Практические задачи

Запустите открытые примеры в браузере, затем отправьте одну гостевую попытку на скрытые тесты.

SQL

Темы, которые спрашивают на собеседованиях по SQL. Каждый разбор — один сквозной пример, типовые ошибки и задачи с автопроверкой в браузере.

JOIN в SQL: виды соединений с примерами

INNER, LEFT, RIGHT, FULL и CROSS JOIN на одном примере из двух таблиц: что возвращает каждый вид, куда пропадают строки без пары и на чём ловят на собеседовании.

LEFT JOIN в SQL: примеры, NULL и поиск строк без пары

Как LEFT JOIN ведёт себя с NULL: антиджойн через IS NULL, фильтр в WHERE против ON, ошибка COUNT(*) при агрегатах и почему NOT IN возвращает пустоту.

Оконные функции в SQL: примеры и синтаксис

OVER, PARTITION BY, ROW_NUMBER, RANK, LAG и накопительный итог на одном наборе заказов: чем окно отличается от GROUP BY, где прячется ловушка ROWS и RANGE и почему окно нельзя писать в WHERE.

Задачи по SQL с решениями: 8 типовых с собеседования

Восемь задач на одном наборе данных — от топ-N и антиджойна до окон и LAG. У каждой разбор: что на самом деле проверяет интервьюер и на каком месте обычно ошибаются.

GROUP BY и HAVING в SQL: группировка строк с примерами

Как GROUP BY схлопывает строки в группы, чем count(*) отличается от count(колонка) и почему WHERE и HAVING фильтруют разное. С ошибкой must appear in GROUP BY.

Подзапросы в SQL: виды, примеры, коррелированный подзапрос

Скалярный подзапрос, IN, EXISTS, производная таблица и подзапрос в SELECT на одном наборе заказов: чем коррелированный дороже и где на нём ошибаются.

CTE (WITH) в SQL: что это, синтаксис и примеры запросов

Чем CTE отличается от подзапроса, как связать несколько WITH в цепочку, когда PostgreSQL материализует CTE и как работает WITH RECURSIVE с якорем и UNION ALL.

UNION в SQL: объединение таблиц и разница с UNION ALL

Как UNION склеивает результаты запросов по строкам, чем отличается от UNION ALL и от JOIN, что делают INTERSECT и EXCEPT, где ломается порядок колонок.

Нормализация базы данных: 1НФ, 2НФ и 3НФ на примере

Как одна плоская таблица разваливается на users и orders. Три нормальные формы по шагам, аномалии вставки и удаления, замеры денормализации на 2 млн строк в PostgreSQL 16.

Индексы в PostgreSQL: виды, создание и когда они бесполезны

B-tree, составной, частичный и GIN индекс на живых данных: 200 тыс. клиентов и 800 тыс. заказов в PostgreSQL 16. Планы EXPLAIN до и после, реальные мс.

«You have an error in your SQL syntax»: разбор и фикс

Что означает «near ... at line N» в ошибке MySQL, почему опечатка стоит перед указанным местом, и разбор пяти частых причин с воспроизведением и исправлением.

Gaps and Islands в SQL: как найти непрерывные серии дат

Как найти непрерывные серии дат в PostgreSQL через ROW_NUMBER, сдвинутый ключ и GROUP BY. Разбор дублей, часовых поясов и допустимых разрывов.

Python

Python по темам: GIL и конкурентность, декораторы, генераторы, запуск своего телеграм-бота — с работающим кодом, замерами и практикой в браузере.

Потоки в Python: threading, start, join, Lock и Event

Как создать поток через Thread(target=, args=), зачем join и daemon, почему исключение в потоке теряется, как поймать гонку данных и остановить поток.

GIL в Python: что это, зачем нужен и как его обойти

Global Interpreter Lock простыми словами: почему CPU-задачи в потоках не ускоряются, а сетевые ускоряются, замеры на Python 3.14 и статус free-threading.

asyncio в Python: корутины, async/await и запуск задач

Почему вызов корутины ничего не запускает, чем create_task отличается от gather и TaskGroup и как один time.sleep внутри корутины останавливает весь цикл.

Python multiprocessing, потоки и asyncio: что выбрать

Когда брать процессы, когда потоки, когда asyncio: развилка на одном примере, multiprocessing по существу, forkserver по умолчанию в 3.14 и живые замеры.

Декораторы в Python: как работают и зачем нужны

Декоратор — функция, которая оборачивает другую функцию. Как разворачивается @, зачем functools.wraps, декораторы с аргументами и классом, порядок применения и типовые ошибки.

Генераторы в Python: yield, ленивые вычисления и итераторы

Как работает yield, чем генераторное выражение отличается от спискового включения, замеры памяти на 10 млн элементов, yield from, send и почему генератор одноразовый.

Как запустить телеграм-бота на Python: токен и первый старт

Токен у @BotFather, переменная окружения на Linux, macOS и Windows, запуск python3 main.py, ошибки 401 и 409 и автозапуск без открытого терминала.

Виртуальное окружение Python: как создать и активировать venv

Команды для создания и активации venv на Windows, macOS и Linux. Разбираем установку пакетов, requirements.txt, .gitignore и частые ошибки.

Изменяемые и неизменяемые типы в Python: mutable vs immutable

list, dict, set меняются на месте, str, tuple, int нет. Разбор через id(), парадокс t[0] += [x], хешируемость и кэш малых int на CPython 3.14.5.

List comprehension в Python: списковые включения с примерами

Как читать генератор списка построчно: цикл, условие, вложенность, dict/set включения, ловушка перезаписи ключей, замер против append и где он не подходит.

Контекстные менеджеры в Python: with, __enter__ и __exit__

Как устроен with python на практике: протокол __enter__/__exit__, свой таймер блока, ловушка return True в __exit__, contextlib и ExitStack на реальных замерах.

Где используется Python: области применения и примеры крупных продуктов

Где применяют Python: бэкенд, данные, ML, автоматизация и тесты. Разбираем примеры Instagram, Netflix, Dropbox, Spotify и Яндекса.

SyntaxError: invalid syntax в Python — причины и исправление

Как читать стрелку в SyntaxError, где искать пропущенную скобку или двоеточие и почему pip install нельзя вводить после >>>. Семь ошибок с исправлениями.

IndentationError: unexpected indent в Python — как исправить

Почему Python выдаёт unexpected indent, expected an indented block, unindent does not match и TabError. Исправляем лишний отступ, табы и пробелы.

uv для Python: установка, зависимости и переход с pip

Как установить uv, создать проект и окружение, добавить зависимости, работать с uv.lock и перенести requirements.txt. Разница между uv add и uv pip.

Как проверить пароль в Python: несколько правил и все ошибки

Как проверить длину пароля, наличие цифр, строчных и заглавных букв в Python, собрать все нарушения и не пропустить границы и Unicode.

Сбалансированные скобки на Python: как работает стек

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

Как удалить дубликаты из списка Python и сохранить порядок

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

Как перевести секунды в минуты и часы в Python

Как форматировать длительность в Python как M:SS или H:MM:SS: divmod, целочисленное деление, ведущие нули и граница 3600 секунд.