Вопросы на собеседовании: Геймдев-разработчик
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior-разработчик игр.
Смотреть пример резюме: Геймдев-разработчик →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Я сниму профили CPU и GPU до изменения контента, чтобы иметь базовую линию.
- В Unreal Insights или Tracy разделю время игрового потока, потока рендеринга и RHI-потока на выборке из 200 кадров.
- В PIX или RenderDoc проверю количество вызовов отрисовки, смены состояний, избыточную отрисовку и самые долгие GPU-проходы.
- Подтвержу исправление восстановлением бюджета 16,67 мс на том же маршруте камеры и настройках изображения.
Зачем это спрашивают: Вопрос проверяет, умеет ли кандидат диагностировать измеряемую просадку кадров, а не гадать.
Я ограничу оба процессора на уровне 14 мс, оставив примерно 2,5 мс запаса на пиковые нагрузки.
- Сначала проверю перекрытие: при 11 мс CPU и 15 мс GPU узкое место обычно в GPU, а не последовательные 26 мс.
- По данным профилирования задам лимиты подсистемам: 4 мс на игровую логику, 3 мс на анимацию и физику, 10 мс на графику.
- Буду контролировать P95 времени кадра на типовых сценах, так как среднее 16,0 мс всё равно даёт заметные просадки.
Зачем это спрашивают: Вопрос показывает понимание параллельного выполнения кадра и рабочего запаса.
Я использую archetype chunks с раскладкой structure-of-arrays и распределю системам непересекающиеся диапазоны чанков.
- Часто используемые компоненты размещу последовательно в памяти, редкие данные вроде имён вынесу из чанков перемещения и боя.
- Объявлю наборы чтения и записи явно, чтобы граф задач мог запускать независимые системы без грубых блокировок.
- Проверю промахи кэша, накладные расходы задач и P99 времени обновления на 10 000 активных сущностей, не на спящих.
Зачем это спрашивают: Вопрос проверяет cache-aware дизайн ECS и безопасный параллелизм на заданном масштабе.
Я оставлю код исполнения компактным, а настраиваемые параметры способностей вынесу в валидируемые версионируемые data assets.
- Стоимость, время восстановления, теги, выбор цели и эффекты представлю композируемыми записями вместо 120 подклассов.
- В CI включу валидацию ассетов на битые ссылки, недопустимые комбинации тегов и детерминированный порядок.
- В повторах сохраню версию способности и зерно генератора, чтобы балансный патч не нарушал воспроизводимость.
Зачем это спрашивают: Вопрос оценивает поддержку быстрой итерации без потери корректности рантайма.
Оставлю кастомными только технологии, создающие преимущество продукта, остальное возьму из Unreal через стабильные границы.
- За 6 недель создам прототип уникальной симуляции или рендерера и потребую измеримого выигрыша над Unreal на целевом оборудовании.
- Сохраню инструментарий Unreal, поддержку платформ, упаковку ассетов и систему отчётов о крашах, если они не блокируют письменные требования.
- Вокруг ввода, физики и сетевых сервисов создам адаптеры, чтобы выбор поставщика не распространялся на игровой код.
Зачем это спрашивают: Вопрос проверяет ограниченное по срокам решение о движке с измеримым преимуществом.
Я найду первый расходящийся тик методом бисекции по хешам состояния и сравню точные входные данные и порядок контактов.
- На каждом тике захеширую квантованное авторитетное состояние и выгружу только расходящиеся сущности при первом несовпадении.
- Уберу неупорядоченные итерации, зависящие от архитектуры операции с плавающей точкой и нестабильную сортировку ограничений.
- В CI прогоню 10 000 кросс-платформенных зёрен повтора и упаду на первом неравном хеше.
Зачем это спрашивают: Вопрос проверяет практическую работу с детерминированной симуляцией, а не общий совет про fixed point.
Я устраню создание PSO в рантайме, собрав, запекая и прогревая фактически достижимые перестановки.
- В PIX свяжу маркеры зависаний с вызовами создания конвейеров и ключами шейдеров.
- Автоматизированными прохождениями соберу стабильный кеш PSO и прогрею набор следующего уровня при загрузке.
- Буду отслеживать промахи кеша и потребую отсутствия создания дольше 2 мс за 30-минутное прохождение.
Зачем это спрашивают: Вопрос проверяет, может ли кандидат превратить first-use stutter в проверяемое исправление пайплайна.
Я выведу время жизни ресурсов из графа и совмещу выделение памяти для непересекающихся временных ресурсов.
- Визуализирую время жизни проходов и найду текстуры, удерживаемые случайным чтением или избыточно широкими барьерами.
- Совмещу ресурсы одного класса и снижу разрешение только для проходов, где метрика качества остаётся в пределах допуска.
- Проверю пик занятой VRAM ниже 3,6 ГБ на 20 стрессовых камерах, отключив накладные расходы захвата.
Зачем это спрашивают: Вопрос проверяет понимание lifetime в render graph и доказательное сокращение памяти.
По захвату GPU я классифицирую стоимость освещения: пропускная способность, вычисления, геометрия или синхронизация.
- При фиксированной камере сравню длительность проходов, утилизацию, пропускную способность текстур и количество пикселей.
- Проверю отсечение источников, разрешение теней и сложность материалов по одной переменной с визуальным сравнением.
- Приму изменение только если освещение остаётся ниже 4 мс на P95 на минимально поддерживаемой GPU.
Зачем это спрашивают: Вопрос оценивает дисциплинированную диагностику GPU относительно конкретной цели.
Я снимем профиль стеков выделения памяти и устраню текучку на критических путях кадра до настройки сборщика.
- Разметим выделения по подсистемам и отсортирую места по байтам за кадр и времени жизни, не только по общему объёму.
- Заменим временные контейнеры frame arenas, пулами или буферами вызывающей стороны с явным сбросом.
- Проведу 2-часовой прогон и поставлю критерий: ноль неожиданных выделений в кадре и P99 паузы ниже 2 мс.
Зачем это спрашивают: Вопрос проверяет знание аллокаторов и доказательство исчезновения заметных игроку пауз.
Я подтвержу внешнюю фрагментацию инспекцией размеров свободных блоков, а не общего количества свободной памяти.
- Выгружу состояние корзин аллокатора и теги выделений в момент отказа.
- Перенесу крупные текстуры в выделенный постраничный аллокатор и уплотню только перемещаемые ресурсы.
- Воспроизведу 50 переходов между уровнями с крупнейшим свободным блоком выше 256 МБ.
Зачем это спрашивают: Вопрос проверяет диагностику и локализацию фрагментации.
Я измерю работу, ожидание и накладные расходы планировщика на каждый рабочий поток до изменения гранулярности задач.
- Через Tracy zones обнаружу задержки на зависимостях, конкуренцию за блокировки и пустые промежутки.
- Объединю задачи короче 50 микросекунд и расщеплю одну доминирующую последовательную зависимость.
- Потребую как минимум 5,5-кратного ускорения на той же нагрузке из 10 000 сущностей.
Зачем это спрашивают: Вопрос проверяет доказательную работу с масштабированием параллелизма.
Я сделаю нарушения владения наблюдаемыми и заставлю расписание варьироваться при детерминированной рабочей нагрузке.
- Запущу ThreadSanitizer где поддерживается и добавлю проверки поколений к дескрипторам анимации.
- Запишу зависимости задач и зёрна, затем внедрю рандомизированные уступки вокруг подозрительных записей.
- Сохраню 12-часовой стресс-тест, воспроизводящий ноль повреждённых состояний на 3 сборках.
Зачем это спрашивают: Вопрос проверяет воспроизводимую диагностику ошибки, зависящей от тайминга.
Я заменю её, пока тест линеаризуемости не докажет корректность и профилирование не докажет значимость блокировки.
- Явно опишу количество производителей и потребителей плюс поведение при переполнении.
- Прогоню рандомизированные истории под sanitizer и проверю появление каждого event ID ровно один раз.
- Сравню P99 времени кадра с ограниченной mutex-очередью до принятия сложности.
Зачем это спрашивают: Вопрос проверяет зрелость решения о рискованном lock-free коде.
Я сохраню авторитетные состояния фиксированного шага и отдельно интерполирую преобразование для рендера.
- Буду хранить предыдущую и текущую позу симуляции с аккумулятором кадра.
- Экстраполирую только ограниченное косметическое движение, никогда коллизионный авторитет.
- Проверю дрожание относительно камеры ниже 0,2 пикселя на 10-минутных записях.
Зачем это спрашивают: Вопрос проверяет разделение часов симуляции и отображения.
Я включу непрерывную коллизию со смещением только для быстрых тел, превышающих порог относительно размера.
- Вычислю движение за шаг относительно толщины минимального значимого коллайдера.
- Применю спекулятивные контакты или shape casts для отмеченных тел, не для каждого объекта.
- Проверю ноль туннелирований в 100 000 выстрелов с физикой ниже 2,5 мс.
Зачем это спрашивают: Вопрос проверяет точечное повышение надёжности коллизий в рамках бюджета.
Я распределю точность симуляции по релевантности и объединю пространственные запросы до изменения качества поведения.
- Дальних агентов буду обновлять на 5 Гц, сохранив реакции около игрока на 30 Гц.
- Применю общие поля потоков и сетку широкой фазы для соседей вместо поиска пути каждым агентом.
- Проверю P95 в 3 мс плюс неизменные метрики столкновений и прибытия в 3 сценах толпы.
Зачем это спрашивают: Вопрос оценивает масштабируемый игровой AI с пользовательскими критериями.
Я перестрою грязные тайлы навигации асинхронно и опубликую их на безопасной границе симуляции.
- Отмечу только тайлы, затронутые 20 изменёнными препятствиями, плюс необходимых соседей.
- Запросы продолжат работать на старой неизменяемой сетке, пока не готов заменяющий тайл.
- Ограничу публикацию на главном потоке до 0,5 мс и инвалидацию путей в пределах 2 тиков.
Зачем это спрашивают: Вопрос проверяет инкрементальное обновление навигации без зависаний.
Я уберу синхронизированные полные обходы деревьев и распланирую ограниченную работу по кадрам.
- Проведу профиль посещений узлов и выявлю дорогие запросы восприятия и путей.
- Применю прерывания по событиям плюс разнесённые сервисы по ключу entity ID.
- Ограничу работу AI 2 мс, сохранив задержку реакции ниже 100 мс.
Зачем это спрашивают: Вопрос проверяет контроль всплесков вычисления AI.
Я объединю частоту обновления по видимости, общие позы и измеряемый 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