Skip to content

Практический кодинг

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)

← Дизайн AI-систем · Стратегия и метрики AI-продукта →