Как проходить собеседования на Unity разработчика
Общие вопросы по разработке
- Принципы ООП. Рассказать про каждый. Как это реализовано в языке C#? Как применяли на практике?
- SOLID. В чем смысл каждого принципа и как применяли на практике?
- Структуры данных. Какие структуры данных вы знаете? Для каких задач лучше использовать ту или иную.
- В чем разница между array и List?
- Что такое хеш-таблица? Что такое хеш-функция? Как обрабатываются коллизии в словарях?
- Алгоритмы. Поиск пути в графе, сортировки коллекций, поиск элемента в коллекции. Какие подходы в обработке коллизий объектов в 2д и 3д знаете?
- Сложность алгоритма. Big O notation.
- Шаблоны проектирования. Архитектурные шаблоны(MVC, MVP, MVVM, компонентный подход, ECS). Шаблоны для решения типовых задач(GoF, GRASP, Game Programming Patterns).
- Dependency Injection. Что это за подход разработки и умеете ли работать с Zenject?
- Реактивность. Что это за подход разработки и умеете ли работать с UniRx?
- Клиент-серверные приложения. В чем основные принципы разработки клиент-серверных игр? Какие типы вы знаете и разрабатывали?
- CI/CD окружение. Для чего используется? Есть ли опыт работы с ним?
Вопросы по C#
- Что такое .NET? Что такое CLR? Что такое IL?
- Чем отличается динамическая типизация от статической?
- Значимые и ссылочные типы. Спецификаторы аргументов функций ref, out.
- Boxing и unboxing. Что это и почему это плохо?
- Строки. Операции над строками, StringBuilder.
- Что такое класс? Что такое структура? В чем отличие между структурой и классом?
- Модификаторы доступа.
- Что такое интерфейс? Какие члены можно описывать в интерфейсе?
- Отличие интерфейса и абстрактного класса.
- Upcasting, downcasting.
- Обработка исключений. Блок try, catch, finally. Порядок выполнения.
- Что такое делегат? Ковариантность, контрвариантность.
- Что такое замыкание? Привести пример с замыканием.
- Может ли структура реализовывать интерфейс?
- Что такое атрибут? Для каких целей используются атрибуты?
- Что такое рефлексия? Для решение каких задач приходилось использовать?
- LINQ. Extension syntax, query syntax.
- Как работает сборщик мусора? Что происходит с объектами которые имеют циклические зависимости?
- Есть ли опыт написания авто-тестов и юнит-тестов?
Вопросы по Unity
- Игровой движок. Что собой представляет и какие проблемы решает?
- Корутины. Что это? Работают в одном потоке или в разных? Какой механизм C# используется для реализации корутин в юнити? Можно ли запустить рутину не из MonoBehaviour? Какие типы yield инструкций вы знаете? Когда они вызываются?
- Что такое Game Object? Что такое сцена?
- Что такое MonoBehaviour? От чего он наследуется? Можно ли создать тип наследуемый от Component?
- Жизненный цикл MonoBehaviour.
- Порядок вызова Event функций в runtime режиме Unity.
- Физика. Какие компоненты позволяют работать с физикой. Что такое rigid body? Что такое рейкаст? Отличие от лайнкаста?
- NavMesh. Поиск пути.
- Опыт работы с UI компонентами? Что такое канвас? Что такое панель? Чем плох и хорош канвас? Как верстать адаптивный интерфейс? Что такое LayoutGroup?
- Камера. Типы камер, параметры для настройки. Скай бокс, occlusion culling.
- Что такое deltaTime и fixedDeltaTime? Отличия между ними.
- Аниматор. Можно ли дописывать логику к состояниям аниматора? Что такое Timeline и опыт работы с ним?
- Опыт написания кастомного редактора, окна для инструментов, расширения для ускорение и автоматизации рутинных задач.
- Ассет бандлы и адрессаблы. Для чего используются и есть ли опыт разработки с их использованием?
- Батчинг и Draw calls. Что это? Какие подходы оптимизации вызовов отрисовки вы знаете?
- Что такое mesh? Из чего состоит 3д модель?
- Опыт работы с шейдерами. Приходилось ли писать шейдеры?
- Профайлинг. Какие инструменты для диагностики проблем производительности вы знаете(profiler, deep profiling, frame debugger, memory profiling, profiling on device)?
- Unity Web Requests. Что это? Приходилось ли работать с клиент-серверным взаимодействием?
- Есть ли опыт работы с нативным слоем? Android Studio, XCode.
- Опыт интеграции SDK(реклама, аналитика, конфиги, БД, пуш уведомления).
- Test Runner. Опыт работы с тестами в движке.