Skip to content

Вопросы на собеседовании: Геймдев-разработчик

100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior-разработчик игр.

Смотреть пример резюме: Геймдев-разработчик

Тренировка флешкарточками

Интервальное повторение · Hunter Pass

Вопросы

scene-management

Я сниму профили CPU и GPU до изменения контента, чтобы иметь базовую линию.

  • В Unreal Insights или Tracy разделю время игрового потока, потока рендеринга и RHI-потока на выборке из 200 кадров.
  • В PIX или RenderDoc проверю количество вызовов отрисовки, смены состояний, избыточную отрисовку и самые долгие GPU-проходы.
  • Подтвержу исправление восстановлением бюджета 16,67 мс на том же маршруте камеры и настройках изображения.

Зачем это спрашивают: Вопрос проверяет, умеет ли кандидат диагностировать измеряемую просадку кадров, а не гадать.

renderingtiming

Я ограничу оба процессора на уровне 14 мс, оставив примерно 2,5 мс запаса на пиковые нагрузки.

  • Сначала проверю перекрытие: при 11 мс CPU и 15 мс GPU узкое место обычно в GPU, а не последовательные 26 мс.
  • По данным профилирования задам лимиты подсистемам: 4 мс на игровую логику, 3 мс на анимацию и физику, 10 мс на графику.
  • Буду контролировать P95 времени кадра на типовых сценах, так как среднее 16,0 мс всё равно даёт заметные просадки.

Зачем это спрашивают: Вопрос показывает понимание параллельного выполнения кадра и рабочего запаса.

jobsecsperformance

Я использую archetype chunks с раскладкой structure-of-arrays и распределю системам непересекающиеся диапазоны чанков.

  • Часто используемые компоненты размещу последовательно в памяти, редкие данные вроде имён вынесу из чанков перемещения и боя.
  • Объявлю наборы чтения и записи явно, чтобы граф задач мог запускать независимые системы без грубых блокировок.
  • Проверю промахи кэша, накладные расходы задач и P99 времени обновления на 10 000 активных сущностей, не на спящих.

Зачем это спрашивают: Вопрос проверяет cache-aware дизайн ECS и безопасный параллелизм на заданном масштабе.

system-designdesigngame-design

Я оставлю код исполнения компактным, а настраиваемые параметры способностей вынесу в валидируемые версионируемые data assets.

  • Стоимость, время восстановления, теги, выбор цели и эффекты представлю композируемыми записями вместо 120 подклассов.
  • В CI включу валидацию ассетов на битые ссылки, недопустимые комбинации тегов и детерминированный порядок.
  • В повторах сохраню версию способности и зерно генератора, чтобы балансный патч не нарушал воспроизводимость.

Зачем это спрашивают: Вопрос оценивает поддержку быстрой итерации без потери корректности рантайма.

engine

Оставлю кастомными только технологии, создающие преимущество продукта, остальное возьму из Unreal через стабильные границы.

  • За 6 недель создам прототип уникальной симуляции или рендерера и потребую измеримого выигрыша над Unreal на целевом оборудовании.
  • Сохраню инструментарий Unreal, поддержку платформ, упаковку ассетов и систему отчётов о крашах, если они не блокируют письменные требования.
  • Вокруг ввода, физики и сетевых сервисов создам адаптеры, чтобы выбор поставщика не распространялся на игровой код.

Зачем это спрашивают: Вопрос проверяет ограниченное по срокам решение о движке с измеримым преимуществом.

physics

Я найду первый расходящийся тик методом бисекции по хешам состояния и сравню точные входные данные и порядок контактов.

  • На каждом тике захеширую квантованное авторитетное состояние и выгружу только расходящиеся сущности при первом несовпадении.
  • Уберу неупорядоченные итерации, зависящие от архитектуры операции с плавающей точкой и нестабильную сортировку ограничений.
  • В CI прогоню 10 000 кросс-платформенных зёрен повтора и упаду на первом неравном хеше.

Зачем это спрашивают: Вопрос проверяет практическую работу с детерминированной симуляцией, а не общий совет про fixed point.

build

Я устраню создание PSO в рантайме, собрав, запекая и прогревая фактически достижимые перестановки.

  • В PIX свяжу маркеры зависаний с вызовами создания конвейеров и ключами шейдеров.
  • Автоматизированными прохождениями соберу стабильный кеш PSO и прогрею набор следующего уровня при загрузке.
  • Буду отслеживать промахи кеша и потребую отсутствия создания дольше 2 мс за 30-минутное прохождение.

Зачем это спрашивают: Вопрос проверяет, может ли кандидат превратить first-use stutter в проверяемое исправление пайплайна.

Я выведу время жизни ресурсов из графа и совмещу выделение памяти для непересекающихся временных ресурсов.

  • Визуализирую время жизни проходов и найду текстуры, удерживаемые случайным чтением или избыточно широкими барьерами.
  • Совмещу ресурсы одного класса и снижу разрешение только для проходов, где метрика качества остаётся в пределах допуска.
  • Проверю пик занятой VRAM ниже 3,6 ГБ на 20 стрессовых камерах, отключив накладные расходы захвата.

Зачем это спрашивают: Вопрос проверяет понимание lifetime в render graph и доказательное сокращение памяти.

scene-managementgameplayrendering

По захвату GPU я классифицирую стоимость освещения: пропускная способность, вычисления, геометрия или синхронизация.

  • При фиксированной камере сравню длительность проходов, утилизацию, пропускную способность текстур и количество пикселей.
  • Проверю отсечение источников, разрешение теней и сложность материалов по одной переменной с визуальным сравнением.
  • Приму изменение только если освещение остаётся ниже 4 мс на P95 на минимально поддерживаемой GPU.

Зачем это спрашивают: Вопрос оценивает дисциплинированную диагностику GPU относительно конкретной цели.

build

Я снимем профиль стеков выделения памяти и устраню текучку на критических путях кадра до настройки сборщика.

  • Разметим выделения по подсистемам и отсортирую места по байтам за кадр и времени жизни, не только по общему объёму.
  • Заменим временные контейнеры frame arenas, пулами или буферами вызывающей стороны с явным сбросом.
  • Проведу 2-часовой прогон и поставлю критерий: ноль неожиданных выделений в кадре и P99 паузы ниже 2 мс.

Зачем это спрашивают: Вопрос проверяет знание аллокаторов и доказательство исчезновения заметных игроку пауз.

renderingdata-structures

Я подтвержу внешнюю фрагментацию инспекцией размеров свободных блоков, а не общего количества свободной памяти.

  • Выгружу состояние корзин аллокатора и теги выделений в момент отказа.
  • Перенесу крупные текстуры в выделенный постраничный аллокатор и уплотню только перемещаемые ресурсы.
  • Воспроизведу 50 переходов между уровнями с крупнейшим свободным блоком выше 256 МБ.

Зачем это спрашивают: Вопрос проверяет диагностику и локализацию фрагментации.

system-design

Я измерю работу, ожидание и накладные расходы планировщика на каждый рабочий поток до изменения гранулярности задач.

  • Через Tracy zones обнаружу задержки на зависимостях, конкуренцию за блокировки и пустые промежутки.
  • Объединю задачи короче 50 микросекунд и расщеплю одну доминирующую последовательную зависимость.
  • Потребую как минимум 5,5-кратного ускорения на той же нагрузке из 10 000 сущностей.

Зачем это спрашивают: Вопрос проверяет доказательную работу с масштабированием параллелизма.

animation

Я сделаю нарушения владения наблюдаемыми и заставлю расписание варьироваться при детерминированной рабочей нагрузке.

  • Запущу ThreadSanitizer где поддерживается и добавлю проверки поколений к дескрипторам анимации.
  • Запишу зависимости задач и зёрна, затем внедрю рандомизированные уступки вокруг подозрительных записей.
  • Сохраню 12-часовой стресс-тест, воспроизводящий ноль повреждённых состояний на 3 сборках.

Зачем это спрашивают: Вопрос проверяет воспроизводимую диагностику ошибки, зависящей от тайминга.

gameplaydata-structures

Я заменю её, пока тест линеаризуемости не докажет корректность и профилирование не докажет значимость блокировки.

  • Явно опишу количество производителей и потребителей плюс поведение при переполнении.
  • Прогоню рандомизированные истории под sanitizer и проверю появление каждого event ID ровно один раз.
  • Сравню P99 времени кадра с ограниченной mutex-очередью до принятия сложности.

Зачем это спрашивают: Вопрос проверяет зрелость решения о рискованном lock-free коде.

physics

Я сохраню авторитетные состояния фиксированного шага и отдельно интерполирую преобразование для рендера.

  • Буду хранить предыдущую и текущую позу симуляции с аккумулятором кадра.
  • Экстраполирую только ограниченное косметическое движение, никогда коллизионный авторитет.
  • Проверю дрожание относительно камеры ниже 0,2 пикселя на 10-минутных записях.

Зачем это спрашивают: Вопрос проверяет разделение часов симуляции и отображения.

physicsgameplay

Я включу непрерывную коллизию со смещением только для быстрых тел, превышающих порог относительно размера.

  • Вычислю движение за шаг относительно толщины минимального значимого коллайдера.
  • Применю спекулятивные контакты или shape casts для отмеченных тел, не для каждого объекта.
  • Проверю ноль туннелирований в 100 000 выстрелов с физикой ниже 2,5 мс.

Зачем это спрашивают: Вопрос проверяет точечное повышение надёжности коллизий в рамках бюджета.

Я распределю точность симуляции по релевантности и объединю пространственные запросы до изменения качества поведения.

  • Дальних агентов буду обновлять на 5 Гц, сохранив реакции около игрока на 30 Гц.
  • Применю общие поля потоков и сетку широкой фазы для соседей вместо поиска пути каждым агентом.
  • Проверю P95 в 3 мс плюс неизменные метрики столкновений и прибытия в 3 сценах толпы.

Зачем это спрашивают: Вопрос оценивает масштабируемый игровой AI с пользовательскими критериями.

game-designai

Я перестрою грязные тайлы навигации асинхронно и опубликую их на безопасной границе симуляции.

  • Отмечу только тайлы, затронутые 20 изменёнными препятствиями, плюс необходимых соседей.
  • Запросы продолжат работать на старой неизменяемой сетке, пока не готов заменяющий тайл.
  • Ограничу публикацию на главном потоке до 0,5 мс и инвалидацию путей в пределах 2 тиков.

Зачем это спрашивают: Вопрос проверяет инкрементальное обновление навигации без зависаний.

ai

Я уберу синхронизированные полные обходы деревьев и распланирую ограниченную работу по кадрам.

  • Проведу профиль посещений узлов и выявлю дорогие запросы восприятия и путей.
  • Применю прерывания по событиям плюс разнесённые сервисы по ключу entity ID.
  • Ограничу работу AI 2 мс, сохранив задержку реакции ниже 100 мс.

Зачем это спрашивают: Вопрос проверяет контроль всплесков вычисления AI.

animationgameplay

Я объединю частоту обновления по видимости, общие позы и измеряемый LOD костей.

  • Позы для совместимой толпы разделю и вычислю только уникальных лидеров.
  • У дальних скелетов сохраню кости скининга и сокетов на частоте 15 Гц.
  • Сохраню задержку героя от ввода до позы, удерживая полную анимацию ниже 5 мс.

Зачем это спрашивают: Вопрос оценивает оптимизацию анимации без видимых потерь.

Закрытые вопросы

  • 21

    Root-motion атака за 2 секунды расходится с серверной коллизией на 35 см; как выполнить reconciliation?

    iacgameplayphysics
  • 22

    Снимок сохранения для 50 000 объектов занимает 120 мс game thread; как переделать?

    game-designsnapshotconcurrency
  • 23

    Reflection-based serializer добавляет 18 МБ и 30 мс к загрузке; какую границу заменить?

    serialization
  • 24

    Gameplay event bus отправляет 90 000 событий за кадр и занимает 4 мс; что изменить?

    gameplaytiming
  • 25

    Стек из 40 GAS-эффектов даёт 3 разных результата; как стабилизировать вычисление?

    gas
  • 26

    В локальной игре на 4 игроков есть 12 устройств ввода и ошибки hot-plug; как моделировать input?

    game-designgameplay
  • 27

    Обновление камеры добавляет 22 мс motion-to-photon при 120 fps; куда его перенести?

    latency
  • 28

    Quaternion-камера переворачивается около 89 градусов pitch в 2 режимах; как исправить представление?

    math
  • 29

    В мире с floating origin физика дрожит на 6 см при расстоянии 80 км; как сохранить точность?

    physics
  • 30

    Шов процедурного terrain расходится на 3 см между 2 соседними chunks; как гарантировать непрерывность?

  • 31

    Renderer отправляет 22 000 draw calls и тратит 9 мс render thread; как их сократить?

    renderingconcurrency
  • 32

    В мобильной сцене overdraw 4,5 раза, поэтому она работает на 42 fps вместо 60; что менять?

    scene-management
  • 33

    У шейдера 180 permutations, которые добавляют 12 минут к сборке; как безопасно сократить варианты?

    renderingbuild
  • 34

    Temporal upscaler оставляет шлейф на 8 кадров за быстрым оружием; как отладить history rejection?

    weaponstiming
  • 35

    Shadow pass занимает 6 мс для 14 lights в сцене 60 fps; какую политику бюджета применить?

    scene-management
  • 36

    Vulkan renderer зависает раз в 500 запусков после добавления async compute; как расследовать?

    lockingasync
  • 37

    GPU particle system обрабатывает 1 миллион частиц, но readback тормозит CPU на 5 мс; какую границу изменить?

    renderingsystem-design
  • 38

    Meshlet culling медленнее CPU culling при числе объектов ниже 3 000; как выбрать границу?

  • 39

    Texture streamer не успевает загрузить 120 МБ при повороте на 90 градусов; как убрать видимые низкие mip?

    rendering
  • 40

    UI pass в 4K занимает 2,2 мс, потому что 700 widgets перестраиваются каждый кадр; как исправить invalidation?

    timing
  • 41

    Gameplay module перелинковывается 14 минут после изменения 1 header; как сократить цикл?

    gameplayiteration
  • 42

    В команде из 25 человек 18 процентов crashes связаны с lifetime-кодом движка; какой конкретный review gate добавить?

  • 43

    Две engine-команды предлагают 3 несовместимых типа entity handle, до интеграции 8 недель; что решить?

  • 44

    Изменение junior-разработчика подняло P99 кадра с 17 до 24 мс за 2 дня до milestone; что делать?

    milestonessoft-skillstiming
  • 45

    Новый allocator улучшает средний кадр на 0,4 мс, но даёт пики 30 мс каждые 20 минут; выпускать?

    timing
  • 46

    C++ plugin падает в 7 процентах hot reload после изменения ABI; какую границу установить?

    tooling
  • 47

    Asset cooker использует 32 ядра лишь на 28 процентов и работает 70 минут; как перестроить зависимости?

    dependenciesassets
  • 48

    Crash dump из 1 сессии на 50 000 не имеет symbols для 3 engine DLL; как сделать его полезным?

    sessions
  • 49

    Детерминированный replay за 30 минут вырастает до 600 МБ; как сократить без потери диагностики?

    simulation
  • 50

    10-минутный benchmark улучшился на 8 процентов, но 2 из 12 сцен стали хуже; какой release gate выбрать?

    optimizationscene-management
  • 51

    При RTT 140 мс predicted sprint расходится с сервером на 70 см; как реализовать reconciliation?

    agilereactiac
  • 52

    В матче на 100 игроков лимит репликации составляет 80 Кбит/с на клиента при 30 Гц; как его распределить?

    replicationgameplay
  • 53

    Игрок с задержкой 180 мс получает отказ по корректным попаданиям на сервере 60 Гц; как спроектировать lag compensation?

    designnetworkinglatency
  • 54

    Rollback расходится после 240 кадров только между сборками x86-64 и ARM64; как найти недетерминированную операцию?

    rollbackbuildnetworking
  • 55

    Управление машиной дергается при потере 3 процентов пакетов и snapshots на 20 Гц; какую схему восстановления выбрать?

    networkingsnapshot
  • 56

    Перестрелка 64 игроков увеличивает tick сервера 30 Гц с 18 до 42 мс; что менять сначала?

    networkinggameplay
  • 57

    Один предмет дублируется в среднем при 1 из 50 000 reconnect после потери ответа о покупке; как убрать race?

    inventory
  • 58

    Dedicated server матча 5 на 5 падает, и игроки должны продолжить за 12 секунд; какие состояние и протокол нужны?

    gameplaytyping
  • 59

    В ranked queue на 40 000 игроков P95 ожидания достигает 95 секунд, а разброс skill должен быть меньше 120 rating points; как настроить matchmaking?

    spreaddata-structuresgameplay
  • 60

    Party из 6 игроков разделяется в 0,4 процента concurrent allocations; как сделать placement атомарным?

    concurrencygameplay
  • 61

    Взломанный клиент отправляет 240 aim updates в секунду на сервер 60 Гц; как остановить exploit и не мешать честным игрокам?

    gameplay
  • 62

    Новый movement detector поднял false bans с 0,02 до 0,7 процента на 3 платформах; как его исправить?

    cross-platform
  • 63

    Четыре секунды потерь создают reliable backlog 8 МБ и задерживают движение; как переделать channels?

    backlognetworking
  • 64

    Late joiner должен получить 35 МБ состояния мира и начать играть за 5 секунд; как построить snapshot path?

    snapshotbuild
  • 65

    В fighting game на 60 Гц snapshots приходят с интервалом от 35 до 120 мс; как настроить interpolation без постоянной лишней задержки?

    game-designnetworkingsnapshot
  • 66

    Сезонное обновление меняет 18 ГБ в установленной игре объемом 70 ГБ, хотя художники изменили только 900 МБ; как уменьшить patch?

  • 67

    CDN раздает 2 ревизии контента во время 10-минутного rollout; как клиент должен использовать manifests?

  • 68

    Live content release ломает 7 процентов квестов через 20 минут после запуска; как откатить его без порчи прогресса?

  • 69

    Версия 12 должна загружать saves за 8 лет и заменить 32-bit item ID на GUID; как выполнить migration?

    persistence
  • 70

    Cloud и local saves продвинулись на 3 checkpoints офлайн на 2 устройствах; как разрешить конфликт?

    checkpoint
  • 71

    Balance hotfix должен дойти до 2 миллионов сессий за 15 минут, пока онлайн остаются 4 client builds; как версионировать данные?

    sessionsbuild
  • 72

    DLC на 12 ГБ добавляет квесты со ссылками на assets базовой игры, но после удаления любой старый save должен загружаться; где провести границу?

    game-designassets
  • 73

    Пользовательские mods могут выполнять scripts, но плохой mod не должен читать account tokens или тормозить кадр 16,67 мс; как его изолировать?

    tokenstiming
  • 74

    Сборка 48 ГБ должна стать playable после загрузки 6 ГБ в 3 stores с разными правилами chunks; как разложить файлы?

    build
  • 75

    Hotfix на 25 МБ меняет один quest graph, но его dependency closure тянет 4 ГБ; как остановить случайную связанность контента?

    dependenciesclosures
  • 76

    При езде 160 км/ч open-world cells вызывают stalls 300 мс при лимите storage 220 МБ/с; как планировать streaming?

    streaming
  • 77

    PC-сборка для 16 ГБ RAM достигает 13,8 ГБ после 45 минут перемещения по миру; как отличить рост cache от leak?

    cachingbuild
  • 78

    GPU с 8 ГБ превышает VRAM budget на 1,6 ГБ при входе в плотный город; как предотвратить residency thrash?

    rendering
  • 79

    Переход через дверь нужно сократить с 9 до 3 секунд на диске 100 МБ/с; что оставить на critical path?

    schedulingcommunicationstate-machine
  • 80

    Oodle decompression занимает 7 мс из кадра 11 мс во время fast travel; как сбалансировать IO, CPU и latency?

    latencytiming
  • 81

    Open-world музыка щелкает каждые 12 минут, когда stems 96 кГц загружаются вместе с textures; как изолировать audio IO?

    rendering
  • 82

    После 30 циклов suspend и resume консоль получает поврежденное чтение из 1 из 400 streamed packages; как расследовать?

  • 83

    World streaming оставляет 2,4 ГБ свободными, но через 6 часов не может выделить contiguous GPU upload heap 256 МБ; что изменить?

    streamingrenderingdata-structures
  • 84

    Вход в любой новый biome вызывает shader hitches 70 мс на первых 15 materials; как связать подготовку PSO со streaming?

    renderingstreaming
  • 85

    Выгрузка 1 world-partition cell уничтожает NPC, на которого ссылаются 14 активных квестов; как моделировать ownership?

    ownershippartitioning
  • 86

    Fast travel на 20 км дает spike RAM на 6 ГБ из-за пересечения исходных и целевых cells; как ограничить переход?

    state-machine
  • 87

    Консольный режим нацелен на 120 fps, но CPU frame time составляет 10,5 мс при GPU 7 мс; какой platform-specific компромисс выпустить?

    renderingtiminggameplay
  • 88

    Мобильная игра начинает с 60 fps, но падает до 38 fps через 12 минут на устройстве при 35 C; как спроектировать thermal scaling?

    scalingdesigngame-design
  • 89

    PC patch вызывает shader crashes на 2 из 18 поддерживаемых driver families, а остальные 16 получают улучшение GPU time на 9 процентов; что выпускать?

    rendering
  • 90

    Certification требует suspend-to-play за 2 секунды после 50 циклов, но игре нужно 4,6 секунды; что изменить?

    game-design
  • 91

    У консоли фиксированный title budget 12 ГБ, а PC high preset использует 15,5 ГБ в той же сцене; как сохранить parity без одинаковых assets?

    scene-managementassets
  • 92

    Mobile store ограничивает initial download 200 МБ, но localization и tutorial assets занимают 310 МБ для 8 языков; как упаковать игру?

    assets
  • 93

    Cross-play сводит mouse users на 120 Гц с controller users на 60 Гц, и win rate контроллера падает на 14 процентов; какие runtime changes допустимы?

  • 94

    Platform compliance test находит обрезанный UI при text scale 150 процентов на 23 из 180 экранов; как исправить это без риска для launch?

    cross-platform
  • 95

    Refactor коллеги увеличивает replication CPU с 3,2 до 6,8 мс за 4 дня до content lock; как разобраться с кодом и review?

    soft-skillsrefactoringreplication
  • 96

    Трем командам нужны несовместимые save schemas через 6 недель, а 28 существующих типов уже сериализуются напрямую; какое архитектурное решение продвигать?

    serializationschema
  • 97

    On-call инженер сдерживает spike disconnect на 22 процента отключением reconnect, что создает риск повторных наград; что делать в первые 30 минут?

    on-call
  • 98

    Студия хочет заменить asset streamer за 4 месяца, но никто не может объяснить missed deadlines в 6 выпущенных уровнях; какой план по коду предложить?

    estimationassets
  • 99

    Два senior engineers спорят о fixed-point и floating-point rollback, а prototype нужен через 10 дней; как решить вопрос по коду?

    conflictprototypesrollback
  • 100

    В команде из 14 инженеров ждут 37 crash fixes, а 3 главных signatures дают 61 процент потерянных сессий; как организовать техническую работу?

    sessions