1. Tell us what Pricing Model Do You Use?

Custom game developers generally use one of two pricing models: fixed-price or time-and-materials. Knowing up front what model a developer uses will prevent you from costly surprises when time comes to pay the bill.

Neither model is necessarily any better or worse than the other. Which one is best for you is determined by the following factors, among others:

☛ Do you have a fixed budget, or can your budget accommodate a development fee that is totaled up after the project is completed?
☛ Do you expect to make more than minor changes to your game specifications once development has begun?
☛ Are you providing the developer with complete specifications and user stories, or will they need to help you develop those?

2. Please tell us what are your lifelong dreams?

If your dreams don't relate to the job closely, make sure you highlight aspects of the job that will help develop the skills that will help you with your dreams. Ideally, you want your dreams to relate strongly to the career path you're interviewing for though.

3. Tell me the basic construction of a C# program. Write a simple program that outputs “Hello World” to the console?

A typical C# program consists of a namespace declaration, a class, methods, attributes, a main method, statements, expressions, and comments. A potential example for printing “Hello World” to the console is detailed below.

using System;
namespace HelloWorldApplication
{
class HelloWorld
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
Console.ReadKey();
}
}
}

4. Explain me how does C# handle encapsulation?

Encapsulation is a classic object-oriented design principle that reduces coupling between objects and encourages maintainable code. It involves enclosing objects within a logical package by limiting access to implementation details. In C#, this is accomplished through the access specifiers-public, private, protected, internal, and protected internal.

5. Tell me how articulate are you in expressing your ideas?

One of the best ways to answer this question is clearly articulate three points that demonstrate how articulate you are (and in a sense show that in a live setting) - for example: "I would say I'm articulate because one, I typically gather my thoughts before speaking, two, I organize my thoughts well, and three I'm concise when making a point.

6. Can you tell us what attracted you to this company?

You could discuss the company's vision, culture and solutions/services as reasons for wanting to join it.

7. Tell me the role of structs in C#. Why would you choose to define a type as a struct instead of a class?

Structs are used to create structures, a value type that is used to represent a record. Structs play a similar role to classes, which are a reference type in C#. Since structs are value types, they are allocated and deallocated on the stack or inline in containing types. This generally makes structs cheaper to allocate or deallocate than classes, which are reference types. Reference types are allocated on the heap and garbage-collected, which tends to take up more resources. If the instances of a type are small and short-lived, it makes sense to define a value type using structs.

The opposite is true when it comes to boxing and unboxing. A value type can get boxed when it is cast to a reference type or some other interface it implements. Because boxes are objects allocated to the heap and deallocated via garbage collection, too much boxing and unboxing of a value can negatively impact performance. Reference types like classes are preferred in these situations.

8. Tell me what is the difference between dynamic type variables and object type variables in C#?

The difference between dynamic and object type variables has to do with when the type checking takes place during the application lifecycle. Dynamic type variables handle type checking at run time, while object type variables handle type checking during compile time.

9. Explain what types of situations do you consider "unfixable"?

Most situations are "fixable" - the ones that are not are typically related to business ethics (someone is cheating the company, someone is stealing, etc)

10. Tell us what is Your Relevant Experience?

As you consider Unity game developers for hire, keep in mind that all experience is not equal. A game developer with 20 years' experience is not necessarily more qualified to develop your VR game than one with 15 or even 5 years under their belt. The field is ripe with developers who have spent a decade or more creating games for desktops or consoles, but who have yet to crack the nut on mobile or 3D gaming. On the other hand, a unity game developer who has spent the last 5 years creating mobile games with experience in Unity might be well-qualified to write your next 3D action-adventure game for iOS.

Download Interview PDF

11. Tell me you name three ways to pass parameters to a method in C#?

The three ways to pass a parameter to a method are detailed below.

☛ Value Parameters: Passing a parameter to a method by value creates a new storage location for the value parameter. Any changes to the value parameter by the method have no effect on the argument.
☛ Reference Parameters: Passing a parameter to a method by reference can be achieved by using the ref keyword. Instead of creating a new storage location for the parameter, the method accesses the memory location of the argument and passes it as a parameter. Changes made to the parameter will also affect the argument.
☛ Output Parameters: The out keyword allows a method to return two values from a function. It's similar to passing a reference parameter, except in this case data is being transferred out of the method.

12. Tell us what are some of the features of generics in C#?

Generics allow a developer to define a class or method that can work with virtually any data type by delaying specification of the programming elements' data types until they are needed. Generics come with a number of features.

☛ They make C# code reusable, type safe, and performance optimized.
☛ They allow the developer to create generic classes, methods, events, delegates, and interfaces.
☛ They allow the developer to create generic collection classes in the System.Collections.Generic namespace.
☛ They make it possible to get real-time information on the types used in a generic data type at runtime via reflection.

13. Explain what a "lot of work" looks like to you?

Ideally you'd like to state that you can take on a lot of work - this shows your work ethic, but at the same time it's okay to tell them that you value work and life balance.

14. Tell us are You A Lone Developer, Or Do You Have Team?

The importance if this question cannot be overstated. As we discussed, successful Unity development of complex games requires effective project management, with Agile being the most popular tool used for that purpose. But Agile and similar systems are team-based tools.

The question you ask your developer actually needs some follow-up. If the developer says they have a team, ask them to describe the makeup of the team. For some developers, their “team” consists of a loose arrangement of individuals, who may or may not work together in a cohesive, integral manner.

15. Do you know the change in the business industry now requires you to have a new set of skills you have to learn, how do you react to that?

First, find out which skills are the ones that you're currently lacking. Then identify what the steps would be to acquire/build those skills. Then take action to do so.

16. Basic Unity Developer Job Interview Questions:

☛ Difference between Update,Fixed Update and Late Update.
☛ What is Prefabs in Unity 3D?
☛ What is the use of AssetBundle in Unity?
☛ What is difference between Resources and StreamingAssets Folder.
☛ What is Batching and what is the use of Batching?
☛ Difference between Destroy and DestroyImmediate unity function
☛ Difference between Start and Awake Unity Events.
☛ What is the use of Occlusion Culling?How can you call C# from Javascript, and vice versa?Arrange the event functions listed below in the order in which the

17. Tell us have you ever been fired and if yes, why?

Answer this as positively as possible and try to avoid disparaging the company you had previously worked for. The key is to accept the fact that yes, you were fired, but you've learned from the mistakes that got you there and you're better now because of it. If you haven't been fired, well, then this question's a piece of cake isn't it?

18. Tell me what are your thoughts about working from home?

This is a new policy some companies are adopting. If the company you are interviewing for allows for it, then you should be thankful for the flexibility and convenience yet state that working from home is a privilege that you would honor. The key point you want to make is that you would still be able to focus and be just as productive working at home.

19. Tell me are You A Gamer?

Kick off your interview with a game developer by asking if they are a gamer. This is a no-brainer, but you might be surprised how few clients just assume that every game developer plays games as well as writes them. Not so.

20. Tell me a specific example of a time when you had to conform to a policy with which you did not agree?

You want to first understand why the policy was put into effect. From there, if you truly disagree with it, explain your position to your management. If they don't change it, then you must accept their decision and continue to work or the alternative decision would be to find a new job.

21. Tell us have you ever mentored anyone before? If yes, describe the situation?

Describe a time where you've helped someone else. Mentorships can be informal so as you've helped someone over a period of time that can certainly count. The key is to highlight how you utilized certain skills/attributes like coaching, teaching, patience, communication skills, and so forth to mentor that person.

22. Can you predict the output of the code below?

delegate void Iterator();

static void Main()
{
List iterators = new List();
For (int i = 0; i < 15; i++)
{
iterators.Add(delegate { Console.WriteLine(i); });
}


Foreach (var iterator in iterators)
{
iterator();
}
}
This program tests the prospective developer on their experience working with loops and delegates. At first glance, one would expect the program to output the numbers 0 to 15, fifteen times. Instead, the number 15 is printed fifteen times. Since the delegate is being added within the for loop, and because the delegate is only referencing the variable i instead of the value itself, the loop sets the value of the variable i to 15 before it is invoked within each delegate.

23. Tell us do you value recognition or pay more? Why?

Either preference is fine, but just remember you have to be able to explain why. If you say recognition, then back that up by describing how achievement really carries weight with you and how you like to feel valued in the work that you do because it validates that you're helping your teammates / customers and so forth. If you choose money, you can also explain that is important to you as validation and you can highlight how money is important to you because of your goals (financial security, providing for your family, and so forth). The key is to be authentic with your answer. However, if you say you value pay more because you're greedy - know that doesn't align usually to most company's values/vision.

24. Tell me what other jobs are you applying for?

If you're applying with other similar companies in a similar or the same industry, it's actually okay to state that as it shows you're valued and wanted.

Download Interview PDF

25. Do you know nullable types in C#?

Nullable types are data types that, in addition to their normal values, also contain a defined data type for null. Nullable types exist to help integrate C#, which generally works with value types, and databases, which often use null values. You can declare a nullable type in C# using the following syntax:

? = null;