Hiring guide for UNITY Engineers

UNITY Developer Hiring Guide

Unity is not a programming language, but rather a powerful cross-platform game development engine. It allows developers to create both 2D and 3D games, simulations, and experiences. Unity supports scripting through C# (C Sharp) or JavaScript languages. The platform is highly popular due to its visual editor, multi-platform support, and the ability to use a wide range of assets available in the Unity Asset Store. It also offers various services such as analytics, multiplayer networking, monetization tools etc., making it an all-in-one solution for game development needs.

Ask the right questions secure the right UNITY talent among an increasingly shrinking pool of talent.

First 20 minutes

General UNITY app knowledge and experience

The first 20 minutes of the interview should seek to understand the candidate's general background in UNITY application development, including their experience with various programming languages, databases, and their approach to designing scalable and maintainable systems.

How would you describe the difference between Update, FixedUpdate and LateUpdate?
Update is called once per frame and is used for most regular game code, while FixedUpdate is called at a consistent rate and is used for physics-related code. LateUpdate is called after all Update functions have been called, and is typically used for camera-related adjustments.
What are the main uses of Coroutines in Unity?
Coroutines in Unity are used for executing a block of code over several frames, delaying the execution of code, and creating complex sequences of events.
How would you optimize a Unity game for mobile devices?
To optimize a Unity game for mobile devices, one could reduce the polygon count of models, use compressed textures, minimize the use of real-time shadows and lighting, and use object pooling to reuse game objects.
What is the purpose of a Rigidbody component in Unity?
A Rigidbody component is used to give a game object physical properties, allowing it to interact with forces, gravity and other physical objects in a realistic way.
Describe the difference between a GameObject and a Prefab in Unity.
A GameObject is the base class for all entities in Unity scenes, while a Prefab is a type of GameObject that can be saved and reused multiple times in a game.
The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What you’re looking for early on

Has the candidate demonstrated a solid understanding of UNITY's functionalities and capabilities?
Can the candidate effectively communicate their thought process and problem-solving strategies?
Does the candidate show a strong ability to work within a team?
Has the candidate shown initiative in staying updated with the latest UNITY updates and trends?

Next 20 minutes

Specific UNITY development questions

The next 20 minutes of the interview should focus on the candidate's expertise with specific backend frameworks, their understanding of RESTful APIs, and their experience in handling data storage and retrieval efficiently.

What are the differences between Global Illumination and Baked Lighting in Unity?
Global Illumination is a group of algorithms used to model how light is bounced off of surfaces onto other surfaces (indirect light) rather than just directly from a light source. Baked Lighting stores lighting information directly into texture maps, which can help improve performance.
How would you implement a singleton pattern in Unity?
A singleton pattern in Unity can be implemented by creating a static instance of a class that is accessible from any other class. If an instance of this class does not exist, it is created; if it does exist, it is returned.
What is the purpose of the Start and Awake methods in Unity?
The Awake method is used to initialize any variables or game state before the game starts, while the Start method is called on the frame when a script is enabled just before any of the Update methods are called the first time.
What are the differences between Asset Bundles and Resources in Unity?
Asset Bundles are collections of assets that are created and loaded at runtime, allowing for efficient memory usage, while Resources are assets that are included in the built Unity player, and loaded using the Resources API.
How would you handle memory management in Unity?
Memory management in Unity can be handled by using object pooling, unloading unused assets, avoiding unnecessary allocations, and profiling regularly to identify memory leaks.
The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

The ideal back-end app developer

What you’re looking to see on the UNITY engineer at this point.

At this point, a skilled UNITY engineer should demonstrate strong problem-solving abilities, proficiency in UNITY programming language, and knowledge of software development methodologies. Red flags include lack of hands-on experience, inability to articulate complex concepts, or unfamiliarity with standard coding practices.

Digging deeper

Code questions

These will help you see the candidate's real-world development capabilities with UNITY.

What does this simple Unity C# code do?
public class HelloWorld : MonoBehaviour {
  void Start() {
    Debug.Log("Hello, World!");
  }
}
This code prints 'Hello, World!' to the Unity console when the script starts.
What will be the output of this Unity C# code?
public class Test : MonoBehaviour {
  void Start() {
    int x = 5;
    int y = x++ * 6;
    Debug.Log(y);
  }
}
The output will be 30. The postfix '++' operator increments the value of 'x' after it has been used in the expression.
What does this Unity C# code do?
public class ArrayTest : MonoBehaviour {
  void Start() {
    int[] numbers = {1, 2, 3, 4, 5};
    foreach (int i in numbers) {
      Debug.Log(i * i);
    }
  }
}
This code prints the squares of the numbers 1 through 5 to the Unity console.
What does this Unity C# code do?
public class ThreadTest : MonoBehaviour {
  void Start() {
    StartCoroutine(MyCoroutine());
  }
  IEnumerator MyCoroutine() {
    Debug.Log("Before Waiting");
    yield return new WaitForSeconds(5);
    Debug.Log("After Waiting");
  }
}
This code prints 'Before Waiting' to the Unity console, waits for 5 seconds, and then prints 'After Waiting'. This is achieved using Unity's coroutine functionality.

Wrap-up questions

Final candidate for UNITY Developer role questions

The final few questions should evaluate the candidate's teamwork, communication, and problem-solving skills. Additionally, assess their knowledge of microservices architecture, serverless computing, and how they handle UNITY application deployments. Inquire about their experience in handling system failures and their approach to debugging and troubleshooting.

What is the difference between forward and deferred rendering paths in Unity?
Forward rendering calculates the lighting for each object and renders each one separately, while deferred rendering calculates the lighting after all objects have been rendered, and can therefore be more efficient when there are many lights in a scene.
How would you implement multiplayer functionality in a Unity game?
Multiplayer functionality in a Unity game can be implemented using Unity's built-in networking, or using a third-party solution. This involves setting up networked player objects, syncing game state across clients, and handling latency and disconnections.
What are shaders and how would you use them in Unity?
Shaders are scripts that control how the game's graphics are rendered. In Unity, they can be used to create a wide range of effects, such as changing the color of an object, creating a dissolve effect, or simulating water.

UNITY application related

Product Perfect's UNITY development capabilities

Beyond hiring for your UNITY engineering team, you may be in the market for additional help. Product Perfect provides seasoned expertise in UNITY projects, and can engage in multiple capacities.