Практический кодинг¶
English · Русский · AI Interview Atlas › Темы
Кодинг, похожий на работу: конкурентность, лимиты, повторы, растущая спецификация, отладка и code review.
На этой странице: Оба трека (1) · AI-инженерия (27)
Оба трека¶
- Отрефакторите небольшую плохо структурированную программу с проходящими тестами. Объясните первое изменение и сохранение наблюдаемого поведения.
- Кодинг · Где спрашивали: OpenAI † · ✍ Ответ · Предложить правку
- Что проверяет: Умение улучшать код постепенно с понятной пользой для сопровождения.
- Сильный ответ покрывает:
- Сначала зафиксировать наблюдаемое поведение, добавив характеризующие тесты там, где существующие проверяют слишком мало.
- Сделать первое изменение маленьким и механическим, например выделить функцию, прогоняя тесты после каждого шага.
- Обосновывать каждый шаг устранённой ценой сопровождения и никогда не смешивать рефакторинг с изменением поведения.
- Читать: Working Inside Existing Systems (Palantir Careers) · Refactoring (Martin Fowler)
AI-инженерия¶
- Реализуйте scaled dot-product attention с causal mask и тестами, выявляющими доступ к будущим токенам.
- Кодинг · Где спрашивали: Amazon †, Anthropic †, Google и Google DeepMind † · ✍ Ответ · Предложить правку
- Что проверяет: Умение корректно реализовать размерности, маскирование и численную устойчивость.
- Сильный ответ покрывает:
- Проверить размерности батча, последовательности и голов до вычисления scores.
- Использовать устойчивый softmax после маскирования запрещённых позиций.
- Проверить малые ручные примеры и неизменность ранних выходов при изменении будущих входов.
- Читать: Attention Is All You Need (Vaswani et al., arXiv)
- Реализуйте multi-head attention, затем измените код так, чтобы несколько query-голов делили пару голов key и value.
- Кодинг · Где спрашивали: Google и Google DeepMind † · Предложить правку
- Что проверяет: Умение согласованно реализовать расположение тензоров и группировку голов.
- Сильный ответ покрывает:
- Сначала зафиксировать размерности: батч, последовательность, головы и размер головы; требовать, чтобы число query-голов делилось на число KV-голов.
- Сопоставить query-голову h с KV-головой h // group_size; при расширении использовать repeat_interleave, а не tile.
- Проверить, что при равном числе голов получается обычный multi-head attention, а при одной KV-голове — multi-query.
- Читать: GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints (Ainslie et al., arXiv) · Attention Is All You Need (Vaswani et al., arXiv)
- Реализуйте декодирование одного токена с KV-кешем и сравните результат с полным проходом по префиксу.
- Кодинг · Предложить правку
- Что проверяет: Корректность позиций, обновлений кеша и attention mask.
- Сильный ответ покрывает:
- Определить структуру кеша по слоям и смещения позиций, включая батчи с левым паддингом разной длины.
- Дописать новые key и value и вычислить внимание по кешу: линейная работа на шаг без пересчёта префикса.
- Проверить совпадение логитов с полным проходом по префиксу в пределах допуска на нескольких шагах и батчах с паддингом.
- Читать: Optimizing inference (Hugging Face Transformers docs)
- Напишите небольшой BPE trainer и encoder, задав правила при равной частоте пар и неизвестных входных символах.
- Кодинг · Предложить правку
- Что проверяет: Согласованность обученных слияний и поведения encoder.
- Сильный ответ покрывает:
- Зафиксировать базовый алфавит (байты или символы), предварительную токенизацию и детерминированное правило при равных частотах.
- Обучать, повторно сливая самую частую соседнюю пару; кодировать, применяя слияния в порядке их ранга, а не жадно по длине.
- Проверить обратное декодирование, равные частоты, пустой ввод и откат неизвестных символов к байтам или токену unknown.
- Читать: Neural Machine Translation of Rare Words with Subword Units (Sennrich et al., arXiv)
- Реализуйте температуру, top-k фильтрацию и nucleus sampling для вектора логитов, включая граничные случаи.
- Кодинг · Где спрашивали: Google и Google DeepMind † · Предложить правку
- Что проверяет: Корректная обработка вероятностей, равенств и недопустимых параметров.
- Сильный ответ покрывает:
- Задать контракт параметров: нулевая температура как argmax, допустимые диапазоны k и p, нечисловые логиты.
- Использовать устойчивый softmax; nucleus оставляет наименьший отсортированный префикс с массой не меньше p — сортировка за O(V log V).
- Проверить равенства на границе отсечения, p около единицы, k больше словаря и частоты выборки при фиксированном seed.
- Читать: The Curious Case of Neural Text Degeneration (Holtzman et al., arXiv)
- Напишите кеш с постоянным временем поиска и обновления давности, затем добавьте срок действия без нарушения правил вытеснения.
- Кодинг · Где спрашивали: OpenAI † · Предложить правку
- Что проверяет: Умение сохранить инварианты структуры данных при расширении требований.
- Сильный ответ покрывает:
- Уточнить ёмкость, обновляет ли чтение давность и учитываются ли просроченные записи до их удаления.
- Использовать хеш-таблицу с двусвязным списком для O(1); один путь удаления обслуживает и истечение, и вытеснение.
- Проверить ёмкость, равную единице, обновление существующего ключа и истечение ровно на границе с подменяемыми часами.
- Читать: collections: OrderedDict objects (Python Software Foundation) · heapq: Heap queue algorithm (Python Software Foundation)
- Реализуйте token-bucket limiter и объясните изменения для общего лимита, применяемого несколькими воркерами.
- Кодинг · Где спрашивали: Anthropic †, OpenAI † · ✍ Ответ · Предложить правку
- Что проверяет: Умение сохранить квоту при учёте времени и параллельных обновлениях.
- Сильный ответ покрывает:
- Пополнять токены по монотонному времени с ограничением ёмкости.
- Сделать проверку и списание атомарными для конкурирующих вызовов.
- Проверить всплески и временные границы; задать контракт общего хранилища или разбиения для распределённого лимита.
- Читать: Scaling your API with rate limiters (Stripe)
- Напишите асинхронный обработчик батча API-запросов с ограничением конкурентности, jitter повторов и изоляцией ошибок элементов.
- Кодинг · Где спрашивали: Anthropic †, Perplexity † · ✍ Ответ · Предложить правку
- Что проверяет: Умение корректно задать отмену, повторы и результаты при частичных отказах.
- Сильный ответ покрывает:
- Ограничить число выполняемых запросов и передавать отмену и deadline.
- Повторять подходящие ошибки с ограниченным backoff и jitter, учитывая идемпотентность.
- Возвращать результат каждого элемента и проверить тайм-ауты, постоянные ошибки и частичный успех.
- Читать: Designing robust and predictable APIs with idempotency (Stripe) · Site Reliability Engineering (Google)
- Реализуйте инкрементальный SSE parser, где JSON в событиях данных может быть разбит произвольными сетевыми чанками.
- Кодинг · Предложить правку
- Что проверяет: Умение отличать границы транспорта от границ сообщений.
- Сильный ответ покрывает:
- Буферизовать данные между чанками, декодировать UTF-8 инкрементально, делить строки по CRLF, LF или CR и не пересканировать уже разобранное.
- Склеивать строки data в одно событие и разбирать JSON только тогда, когда пустая строка завершает событие.
- Проверить разрез на каждом байтовом смещении, в том числе внутри многобайтовых символов, пары CRLF и последнего события.
- Читать: HTML Standard: Server-sent events (WHATWG)
- Реализуйте перекрывающиеся чанки текста с сохранением смысловых единиц; задайте поведение, если единица больше целевого размера.
- Кодинг · Предложить правку
- Что проверяет: Умение уточнить неоднозначные требования к размеру и границам до реализации.
- Сильный ответ покрывает:
- Уточнить единицу размера (токены или символы), что считается смысловой единицей и как измеряется перекрытие.
- Жадно укладывать целые единицы за один линейный проход; слишком большую единицу делить по следующей, более мелкой границе.
- Проверить слишком большие единицы, пустой ввод, перекрытие не меньше целевого размера и восстановление текста по смещениям без потерь.
- Читать: Chunk and vectorize with the Document Layout skill (Microsoft Learn)
- Реализуйте точный поиск по cosine similarity и объясните ограничения, требующие иной production-архитектуры.
- Кодинг · Предложить правку
- Что проверяет: Умение отличать корректный baseline от масштабируемого сервиса.
- Сильный ответ покрывает:
- Нормализовать векторы один раз, чтобы косинус свёлся к скалярному произведению; обработать нулевые векторы и несовпадение размерностей.
- Считать оценки одним матричным произведением и брать top-k частичным отбором: O(N·d) на запрос.
- Проверить равные оценки и k больше N; когда масштаб потребует ANN, оставить точный поиск эталоном полноты.
- Читать: Faiss indexes (Faiss maintainers)
- Реализуйте минимальный агентный runner с проверяемой диспетчеризацией инструментов, обработкой ошибок и жёстким лимитом шагов.
- Кодинг · ✍ Ответ · Предложить правку
- Что проверяет: Умение явно задать состояние цикла и условия завершения.
- Сильный ответ покрывает:
- Держать состояние цикла явно: сообщения, счётчик шагов, дедлайн, бюджет и причину остановки.
- Проверять имя инструмента и аргументы по схеме до вызова; никогда не исполнять незарегистрированный инструмент.
- Возвращать ошибки инструментов модели как наблюдения, сохраняя жёсткий предел шагов и времени.
- Читать: Building Effective AI Agents (Anthropic)
- Реализуйте key-value хранилище в памяти с begin, commit и abort, явно задав поддерживаемую семантику транзакций.
- Кодинг · Где спрашивали: OpenAI † · Предложить правку
- Что проверяет: Соответствие отката и видимости чёткому контракту.
- Сильный ответ покрывает:
- Зафиксировать контракт: вкладываются ли транзакции и видят ли другие клиенты незакоммиченные записи.
- Держать стек слоёв записей с маркерами удаления; чтение идёт сверху вниз, commit сливает слой в родительский.
- Проверить удаление ключа, заданного в той же транзакции, откат вложенного уровня и commit или abort без открытой транзакции.
- Читать: Transaction Isolation (PostgreSQL documentation)
- Напишите функцию сбора постраничного REST-ответа с явной обработкой размера страницы, завершения и неполных ответов.
- Кодинг · Где спрашивали: Palantir † · Предложить правку
- Что проверяет: Умение предотвратить пропуски и дублирование записей на границах страниц.
- Сильный ответ покрывает:
- Предпочесть курсорную пагинацию: при смещениях параллельные вставки и удаления сдвигают страницы и дают пропуски или дубли.
- Завершать по отсутствию следующего курсора, а не по короткой странице, и защититься от зацикливания на повторном курсоре.
- Проверять каждую страницу, повторять сбои с backoff, отсеивать дубли по id; проверить пустой результат и кратность размеру страницы.
- Читать: AIP-158: Pagination (Google)
- Спланируйте продукт вместе с интервьюером, затем примерно за два часа соберите его с любыми AI-инструментами для программирования и защитите решения, код и путь в продакшен.
- Прикладной сценарий · Где спрашивали: Sierra ✅ · ✍ Ответ · Предложить правку
- Что проверяет: Умение ограничить задачу, собрать и защитить рабочий продукт с помощью AI за отведённое время.
- Сильный ответ покрывает:
- До делегирования ограниченных частей согласовать пользовательский сценарий, минимальный результат, бюджет времени и сознательные исключения.
- Давать AI интерфейсы, нужный контекст и критерии приёмки; проверять diff и поведение вместо подсчёта сгенерированного кода.
- Защитить архитектуру, допущения алгоритмов и отвергнутые предложения; отделить проверенное поведение от production-пробелов и незавершённого прототипа.
- Читать: The AI-native interview (Sierra) · AI Interview Success: An Interviewer's Inside Guide (Canva Engineering Blog)
- Проверьте и доработайте черновой pull request коллеги со сквозной функцией в незнакомой кодовой базе, работая вместе с coding-агентами.
- Прикладной сценарий · Где спрашивали: Sierra ✅ · ✍ Ответ · Предложить правку
- Что проверяет: Умение критически оценить чужое изменение, а не принимать всё, что предлагает агент.
- Сильный ответ покрывает:
- До объяснения или правки diff агентом проследить ожидаемое поведение, точки входа, вызывающий код и инварианты.
- Проверить все затронутые пути, особенно авторизацию, повторы, общее состояние и миграции; построить контрпример и регрессионную проверку.
- Отделить найденные дефекты от гипотез, проверить советы агента и объяснить решение ревью и остаточные риски; соблюдать ограничения AI на сессии.
- Читать: The AI-native interview (Sierra) · AI Interview Success: An Interviewer's Inside Guide (Canva Engineering Blog) · Demystifying evals for AI agents (Anthropic)
- В клоне репозитория продукта реализуйте структуру данных, которую продукт действительно использует; к AI обращайтесь только с точечными вопросами по синтаксису.
- Кодинг · Где спрашивали: Cursor (Anysphere) 🗣 · ✍ Ответ · Предложить правку
- Что проверяет: Умение разобраться в незнакомом реальном коде и правильно реализовать ключевую структуру.
- Сильный ответ покрывает:
- Найти вызывающий код, нужные операции, их частоту и тесты; вывести представление из этого контракта.
- Задать инварианты и затраты времени/памяти; проверить выбор дублями, пустым входом и изменённым ограничением.
- Соблюдать соглашения репозитория и проверять поведение у вызывающего кода; помощь AI ограничить вопросами синтаксиса, разрешёнными в описанной сессии.
- Читать: Working Inside Existing Systems (Palantir Careers) · collections: OrderedDict objects (Python Software Foundation) · Algorithms, fourth edition: Directed Graphs (Robert Sedgewick and Kevin Wayne, Princeton University)
- Получив реальную кодовую базу на рабочий день, решите, что построить, выпустите это и объясните свои решения и компромиссы.
- Прикладной сценарий · Где спрашивали: Cursor (Anysphere) 🗣 · Предложить правку
- Что проверяет: Умение самому определить объём работы, довести её до результата и защитить без пошаговых указаний.
- Сильный ответ покрывает:
- Сначала изучить кодовую базу, затем выбрать изменение, полезное и реально завершимое за день.
- Рано получить работающее ядро и дальше итерировать, по ходу записывая решения и компромиссы.
- Завершить демонстрацией, назвав тесты, ограничения и то, что вы сделали бы следующим.
- Читать: Working Inside Existing Systems (Palantir Careers)
- В таблице, где ячейки могут ссылаться на другие ячейки, определите, есть ли циклическая ссылка.
- Кодинг · Где спрашивали: Sierra 🗣 · Предложить правку
- Что проверяет: Умение представить зависимости графом и правильно и эффективно находить циклы.
- Сильный ответ покрывает:
- Уточнить формы ссылок, диапазоны и ссылки на себя, а также что вернуть: факт цикла или все ячейки в нём.
- Построить граф зависимостей и запустить DFS с тремя цветами или алгоритм Кана за O(ячейки + ссылки).
- Проверить петли на себя, длинные цепочки на глубину рекурсии, несвязные части и повторную проверку после изменения одной формулы.
- Читать: Algorithms, fourth edition: Directed Graphs (Robert Sedgewick and Kevin Wayne, Princeton University)
- Сделайте семантический поиск по каталогу товаров, который чат-модель может вызывать как инструмент.
- Кодинг · Где спрашивали: OpenAI † · Предложить правку
- Что проверяет: Умение совместить поиск с понятным, проверяемым интерфейсом инструмента, которым модель может надёжно пользоваться.
- Сильный ответ покрывает:
- Задать контракт инструмента: запрос, типизированные фильтры, лимит результатов и компактный ответ со стабильными id товаров.
- Индексировать описания товаров эмбеддингами вместе с поиском по ключевым словам и применять фильтры до ранжирования.
- Возвращать понятные ошибки и явный пустой результат; оценить выбор инструмента и аргументы на реалистичных запросах в чате.
- Читать: Writing effective tools for AI agents—using AI agents (Anthropic) · Tool use with Claude (Claude Platform Docs)
- Реализуйте систему кредитов с разными правилами сгорания и условиями использования и расширяйте её по мере поступления новых требований.
- Кодинг · Где спрашивали: OpenAI † · Предложить правку
- Что проверяет: Выдерживает ли ваше решение меняющиеся бизнес-правила без переписывания.
- Сильный ответ покрывает:
- Моделировать кредиты как начисления с суммой, сроком и условиями, а списания — как записи в журнале только на добавление.
- Вынести политику списания, например сначала ближайший срок через кучу, чтобы новые правила подключались без переписывания.
- Проверить истечение ровно в момент срока, списание из нескольких начислений, нехватку баланса и пересчёт остатков по журналу.
- Читать: heapq: Heap queue algorithm (Python Software Foundation) · Transaction Isolation (PostgreSQL documentation)
- Найдите в массиве пару чисел с заданной суммой: уточните условия, протестируйте код и обсудите сложность и граничные случаи.
- Кодинг · Где спрашивали: Яндекс ✅ · Предложить правку
- Что проверяет: Уверенность в базовых структурах данных, тестировании и граничных случаях при живом кодинге.
- Сильный ответ покрывает:
- Уточнить, отсортирован ли массив, есть ли дубли и отрицательные числа, можно ли брать элемент дважды и что вернуть.
- Использовать хеш-множество за O(n) времени или два указателя на отсортированном массиве с O(1) дополнительной памяти.
- Проверить пустой массив и массив из одного элемента, отсутствие пары, цель, равную удвоенному значению, и переполнение.
- Читать: Алгоритмические собеседования в Яндексе: как подготовиться и чего ожидать (Яндекс Образование)
- Оптимизируйте реализацию заданной системы расписаний, сохранив код чистым.
- Кодинг · Где спрашивали: Palantir 🗣 · Предложить правку
- Что проверяет: Умение найти настоящее узкое место и ускорить код, не делая его менее понятным.
- Сильный ответ покрывает:
- Профилировать на реалистичной нагрузке до любых изменений и назвать размеры входа, которые важны.
- Заменить доминирующую стоимость более подходящей структурой, например кучей или индексом интервалов, за прежним интерфейсом.
- Сохранить прохождение существующих тестов, добавить бенчмарк и показать сложность и замеры до и после.
- Читать: heapq: Heap queue algorithm (Python Software Foundation) · Site Reliability Engineering (Google)
- Отладьте сломанный API-сервис: разберите логи, найдите узкое место и устраните утечку памяти.
- Кодинг · Где спрашивали: Palantir 🗣 · Предложить правку
- Что проверяет: Умение системно отлаживать работающий сервис по фактам, а не по догадкам.
- Сильный ответ покрывает:
- Воспроизвести симптом, затем пройти один запрос по логам и найти, где уходит время.
- Проверять гипотезы по одной; сравнивать снимки кучи во времени, чтобы найти постоянно растущие объекты.
- Устранить первопричину, например неограниченный кеш или незакрытые дескрипторы, и подтвердить исправление под нагрузкой.
- Читать: Site Reliability Engineering (Google) · Working Inside Existing Systems (Palantir Careers)
- Напишите SQL-запросы, отвечающие на вопросы о наборе данных, без возможности их запустить.
- Кодинг · Где спрашивали: Palantir 🗣 · Предложить правку
- Что проверяет: Выдерживают ли ваши базовые навыки запросов к данным проверку без инструментов.
- Сильный ответ покрывает:
- Переформулировать каждый вопрос через гранулярность результата: что означает одна строка и какие строки в него попадают.
- Следить за размножением строк при join, семантикой NULL в фильтрах и агрегатах и разницей между WHERE и HAVING.
- Прогнать каждый запрос вручную на нескольких строках, включая равные значения, NULL и пустые группы.
- Читать: Table Expressions (PostgreSQL Global Development Group)
- На сессии с AI-кодингом объясните, какими моделями пользуетесь и почему, как следите за расходом токенов и как задаёте агенту контекст и задачу.
- Прикладной сценарий · ✍ Ответ · Предложить правку
- Что проверяет: Умение осознанно управлять coding-агентами, а не полагаться на их настройки по умолчанию.
- Сильный ответ покрывает:
- Выбирать разрешённые модели по сложности, наблюдаемой надёжности, задержке и бюджету, а не универсальному рейтингу.
- Разбить работу на проверяемые шаги; дать нужные файлы, интерфейсы, инварианты, исключения и готовность; текст репозитория считать недоверенным входом.
- Учитывать контекст, вывод и повторы; сохранять проверенные решения в краткой передаче и останавливаться или восстанавливаться при превышении лимита затрат, отклонения или неопределённости.
- Читать: Effective context engineering for AI agents (Anthropic) · AI Interview Success: An Interviewer's Inside Guide (Canva Engineering Blog)
- На интервью, где от вас ждут работы с AI-инструментами, как вы сохраняете ответственность за код, который не писали руками, и где отказываетесь от того, что предложила модель?
- Прикладной сценарий · Где спрашивали: Canva ✅ · ✍ Ответ · Предложить правку
- Что проверяет: Сохраняются ли ответственность и проверка при делегировании модели в условиях нехватки времени.
- Сильный ответ покрывает:
- До промпта самому задать интерфейс, ограничения, допущения алгоритма и границы; прочитать соответствующий вызывающий код.
- Принимать лишь объяснимые изменения; отклонять выдуманные API, скрытые ошибки, ослабленные тесты, лишний scope и инструкции в недоверенном содержимом.
- Независимо проверить выбранные контрпримеры, объяснить принятые и отвергнутые советы и раскрыть непроверенное с учётом правил инструментов интервью.
- Читать: Designing AI resistant technical evaluations (Anthropic) · AI Interview Success: An Interviewer's Inside Guide (Canva Engineering Blog)