199

Game Programmer interview questions shared by candidates

Top Interview Questions

Sort: Relevance|Popular|Date
Game Programmer was asked...8 February 2012

How do you find the max depth of a binary tree?

breadth first search will be better than the recursion method for min-depth searching, but works same as recursive in the case of finding max depth problem Less

public static int maxDepth(TreeNode root) { if (root == null) return 0; //base case return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; } Less

This entirely depends on the implementation. It can be calculated as the integer log base 2 of the highest index of the tree. This would prevent quite a few cache misses from traversing the tree each time, and would be a fairly quick calculation using bitwise operations. int val;// the value int result;// the result int tmp; result = (val &gt; 0xFFFF ? 0 : 1) &gt;= result; tmp= (val &gt; 0xFF ? 0 : 1) &gt;= tmp; result |= tmp; tmp= (val &gt; 0xF ? 0 : 1) &gt;= tmp; result |= tmp; tmp= (val &gt; 0x3 ? 0 : 1) &gt;= tmp; result |= tmp; result |= (val &gt;&gt; 1); While this may seem like a lot, assuming the tree is small, these calculations are actually quite fast, don't involve branching, and don't require arbitrary pointers to sub-tree members. This works best for trees that are either complete or nearly complete, however, since otherwise there will be a lot of wasted memory for indices that contain nothing. Less

What is negative 2 in hex?

0xFE

For a 32 bit, 0xFFFFFFFE (or 0xFE if sign extension is guaranteed)

-0x2

Given several cities and their mutual distance, find an algorithm to find the minimum time to spread a message throughout all cities.

Dijkstra's algorithm will make more sense

Dijkstra's algorithm will make more sense

use Prim's algorithm

Told to code a small 2d game.

It is not bad.

Hello - thanks for your feedback. Because of the many perks we offer to our team members (flexible working hours, ability to work from home, the opportunity to have a positive impact on the world with their work, etc.), we tend to get around 120 applications on average for every open position that we have in Learning Yogi. This means that our recruitment process necessarily needs to be extremely rigorous and selective, and only a handful of candidates are able to clear the initial technical tests that we ask all potential team members to do. We are sorry that we were unable to offer you the position because of this, and wish you all the best for your career in the future. You are of course welcome to apply again after a few years :-) Thank you. Less

Very basic programming questions

Can you please elaborate on the questions asked in technical interview???

Can u please tell the question that were asked

Portfolio

By showing it

In these sorts of interviews you really need to drill down and understand what the interviewer is looking for. A good way to simulate a real interview experience is to do a mock with one of the Ubisoft Game Programmer experts on Prepfully, rated super strongly on TrustPilot... prepfully.com/practice-interviews Less

How do you represent rotation in 3D and why?

Quaternion, Smoother interpolation ( SLERP ) , Relatively compact ( vec4 ) Euler Angle, Gimbal lock, but compact. ( vec3 ) Matrix, All transformation will finally come to matrices. Less

Quternions instead of Vector3 because of gimbal lock.

Given two rectangles on a plane, determine if they are overlapping.

// Check if the rects overlap. // Checks 4 conditions: // 1. Is the right side of one rect to the right of the other's left bound? (if not, this rect is completely left of the other) // 2. Is the left side of that same rect to the left of the other's right bound? (if not, this rect is completely right of the other) // 3. Is the top side of that same rect above the bottom side of the other's? (if not, this rect is completely below the other) // 4. Is the bottom side of that same rect below the top side of the other's? (if not, this rect is completely above the other) // // Note that this checks all cases: // Either rect will always be totally to the right, totally to the left, or horizontally overlapping with the other. // Either rect will always be totally above, totally below, or vertically overlapping with the other. // // By process of elimination, we simply need to check the failure cases // (completely left, completely right, completely above, and completely below). // If none of those are true when comparing either rect to the other, then the two rects overlap. // // rect0: the first rect to check for overlap // rect1: the second rect to check for overlap bool checkRectsOverlap(Rect rect0, Rect rect1) { return (rect0.xMax &gt; rect1.xMin) &amp;&amp; (rect0.xMin rect1.yMin) &amp;&amp; (rect0.yMin &lt; rect1.yMax); } Less