Первая фаза: не писать код сразу
Сильный кандидат сначала уточняет входные данные, размерность, дубликаты, сортировку, пустые значения и ожидаемый формат ответа. Это занимает минуту, но экономит десять минут неверного решения.
Если задача звучит знакомо, всё равно проговорите ограничения. Интервьюер оценивает не только итоговый код, но и то, как вы управляете неопределённостью.
Вторая фаза: от brute force к рабочему trade-off
Назовите простое решение и его сложность. Затем объясните, почему оно может быть недостаточным, и перейдите к улучшению: hash map, two pointers, heap, binary search, graph traversal или dynamic programming.
Важно не угадывать оптимальный паттерн молча, а показать логическую дорогу к нему. Так интервьюер видит, что решение воспроизводимо.
Третья фаза: код и проговаривание
Во время написания держите код маленькими блоками: подготовка структур, основной цикл, обновление состояния, возврат результата. После каждого блока коротко объясняйте, какую инварианту он поддерживает.
Если застряли, не молчите. Сформулируйте, что уже известно, где риск и какой вариант проверки вы выбираете.
Финал: dry run и edge cases
Проверьте решение на минимальном примере, пустом входе, одном элементе, повторяющихся значениях и верхней границе размера. Даже если код не идеален, хороший dry run показывает зрелость мышления.
AetherLoop помогает держать эту последовательность рядом: условие, ограничения, подход, сложность, edge cases и следующий безопасный шаг.


