Introduction and personal observations
The interview for a unit developer consists mainly of three parts. The process looks almost the same as for any other technical specialty in IT. First, an interview with HR or a recruiter, then a technical interview with the Team Leader of the development team. At the end, if the previous stages are successfully completed, the final boss is waiting for you – Project Manager (or Product Owner). This article will be useful for juniors and middles, as well as people who have recently become acquainted with Unity. Bearded seniors and leads – I will be glad to see your experience from you in the comments.
The first part is an interview with a recruiter
It usually takes 10 to 30 minutes. On it, the task of the recruiter is to give a preliminary assessment of the candidate. They usually ask you to tell about yourself.
The goal is to check the adequacy of a person, match the keywords of the vacancy, and also check the English language if necessary. It is customary to check English by talking on a free topic for 5-10 minutes (talking about hobbies, favorite games, why they left their previous job or modeling communication with a customer). It is important to understand that the availability of an English language test is highly dependent on the type of company and the position for which you are being selected.
From personal experience, I came to the conclusion that you need to learn how to briefly summarize your experience in 3 minutes, highlight the most important thing and confidently present yourself to another person. This information should only apply to your developer path. The fact that you can skate, paint with oils or skydive is of little interest to anyone at this stage. You are expected to be paid for completing the tasks described in the job posting, so make sure the recruiter is as interested as possible by talking about skills that are relevant to the position. This will be more than enough. You will be asked in more detail about your hobbies and other things, if necessary.
An example response to “Tell me about your experience.”:
Part Two – Technical Interview
So we got screened. In general, it seems that not crazy, the recruiter was able to compare some words from your speech with the requirements in the vacancy, “London from the capital of Great Britain” was able to squeeze out of themselves. Super! Move on!
And then there is the technical interview. It is important to note that the questions will differ depending on the level of the developer. For a junior, it is necessary to determine the ability to learn and whether he has heard at least some of the technologies used in the project. Considering the middle, they usually try to understand how much a person’s experience corresponds to the position in order to start bringing money to the business as soon as possible, preferably yesterday. When they interview a bearded gentleman, they want to see an expert in the field who can lead a team, communicate with the customer and generally find problems that need to be solved.
The interview is usually divided into the following parts:
- General questions on software development (OOP, algorithms, DI, SOLID, etc.).
- C# questions (boxing/unboxing, GC, async/await, reference types, etc.).
- Unity and experience in a specific game genre (match 3, slots, AAA, FPS, etc.) or direction (mobile, PC, consoles, AR/VR, etc.).
General development questions
- OOP principles. Tell about each. How is this implemented in C#? How was it applied in practice?
- SOLID. What is the meaning of each principle and how was it applied in practice?
- Data structures. What data structures do you know? For what tasks is it better to use one or the other.
- What is the difference between array and List?
- What is a hash table? What is a hash function? How are collisions handled in dictionaries?
- Algorithms. Finding a path in a graph, sorting collections, finding an element in a collection. What approaches to handling object collisions in 2D and 3D do you know?
- Big O notation
- Design patterns. Architectural patterns (MVC, MVP, MVVM, component approach, ECS). Templates for solving typical problems (GoF, GRASP, Game Programming Patterns).
- Dependency Injection