HackTheRounds Interview Experiences

Roblox DS Summer Intern OA Experience (2026) - Factory Sim, Build-a-Car, Four CodeSignal Problems

Roblox DS intern OA walkthrough: Factory simulation game, Build a Car gauntlet, 23 question behavioral quiz, and four CodeSignal coding problems in 50 minutes.

By Anonymous ยท 2026-03-20

Background

I'm a masters student in data science graduating next spring, and Roblox opened a DS Summer Intern seat in January that I applied for through the careers site. The OA landed in my inbox about ten days later. I had heard rumors that Roblox ran a weirdly gamified assessment, and those turned out to be accurate. The whole thing ran a little over two hours and felt less like an exam and more like being asked to play two short video games, take a personality quiz, and then solve four coding puzzles on a timer.

Timeline

Total elapsed so far: about 2 weeks.

OA Structure (roughly 135 min total)

Four distinct sections back to back. No breaks between them beyond the time you leave on the clock:

  1. Factory Simulation Game (interactive)
  2. Build-a-Car Game (interactive)
  3. Behavioral multiple choice (25 min, 23 questions)
  4. Coding on CodeSignal (50 min, 4 problems, Python or R)

Part 1: Factory Simulation Game

This part is closer to an Operations Research case than a coding question. You are handed a production floor with a handful of raw materials and a menu of products you can manufacture. Each product consumes some combination of raw materials and yields some profit. You set a production plan within a time budget, watch the system simulate the outcome, and iterate.

My first instinct was to calculate per-product margin, then greedily schedule the highest-margin ones. That underperformed. The real trick is identifying which single raw material is the bottleneck first, then allocating that bottleneck to the most margin-per-bottleneck-unit products. This is just the shadow-price intuition from linear programming, applied by hand.

I ran three passes: quick heuristic, check the simulator, adjust the mix. By the third pass I had something like 180k points and wrote a short blurb describing my decision rule. The system wants to see iteration and justification, not a perfect answer on the first try.

Part 2: Build-a-Car Game

You assemble a car from a library of components (tires, body, sensors, etc.) and have to survive a gauntlet of terrains: bridges, deep water, missile fire, acid pools. Each component has tradeoffs. The prompt rewards variety: more viable configurations beats one over-tuned configuration.

I spent the first two minutes reading the component descriptions and noticed most terrains pair with exactly one or two critical component features. So my strategy was to build five "specialists," each tuned for a different hazard, rather than one generalist. That covered the terrain matrix better than trying to optimize a single car.

These two interactive sections are not testing coding. They are testing whether you iterate, whether you can articulate a decision rule under pressure, and whether you recover from a bad first attempt.

Part 3: Behavioral Multiple Choice (25 min)

Twenty-three workplace scenarios. Each gives you a situation and four candidate responses. You mark one as the best response and one as the worst. There is no "I would do nothing" option that is ever correct. The pattern is obvious after five questions: Roblox is filtering for proactive communicators who flag issues early and loop others in.

If two options look equally good, the tiebreak is usually whichever one does NOT silo the problem to one person. Collaboration beats solo heroics.

Part 4: Coding (50 min, 4 problems on CodeSignal)

Four questions in fifty minutes is tight. Skip any problem that is not making progress at the ten-minute mark and come back.

This question is coming soon to HackTheRounds.

Problem 1: Efficient Transportation

Problem: A warehouse manager has products packed in boxes of a single uniform size. Each product has a number of available boxes and a units-per-box value. Given a truck capacity expressed as "max number of boxes," return the maximum total units the truck can carry across any combination of products.

Classic greedy. Sort products by units-per-box descending, then fill the truck by taking as many boxes as possible of the highest-density product first. Stop when the truck is full. O(n log n) for the sort dominates; the packing pass is O(n). No DP needed because fractional box choices are not allowed but each product has unbounded box availability within its own cap.

This question is coming soon to HackTheRounds.

Problem 2: Newspaper Layout

Problem: Given a list of paragraphs (each a list of words), a per-paragraph alignment ("LEFT" or "RIGHT"), and a line-width limit, format the text into lines bounded by a border. Words within a line are separated by single spaces. Pad each line with trailing spaces (LEFT) or leading spaces (RIGHT) to hit exactly Width characters.

Pure implementation. Two loops: an outer loop over paragraphs, an inner greedy that packs words onto a line until the next word would overflow, then flushes the line with alignment padding. The edge case is the last word of the last line of a paragraph: still padded, same rules. Wrap the whole block in border characters on all four sides at the end.

The trap here is off-by-one errors on the border width versus content width. I drew a 3x8 example on paper before writing a line of code, which saved me time later.

This question is coming soon to HackTheRounds.

Problem 3: Magic Number Pairs

Problem: Given an array of integers, count the number of index pairs (i, j) with i < j such that nums[i] can be transformed into nums[j] by swapping at most two of its digits (zero swaps counts too, i.e. equal numbers qualify).

The insight: two numbers are "at most two swaps" equivalent iff they have the same digit multiset AND differ in at most four digit positions (since two swaps touch at most four positions). Canonicalize each number as its sorted-digit string for a multiset check, then bucket by canonical form. Within each bucket, count pairs where the raw numbers differ in at most four positions.

I used a dict-of-lists keyed by sorted-digit string. Inside each bucket I did an O(k^2) pairwise check on the raw strings. Worst case is degenerate if one bucket is huge, but the inputs in my run were small enough that this passed comfortably.

This question is coming soon to HackTheRounds.

Problem 4: Digital Square Puzzle

Problem: A large matrix of shape 4 x (4n) is made of n adjacent 4x4 blocks. Each block contains the integers 1..16 with exactly one missing, shown as "?" . Replace every "?" with the correct missing integer (use the fact that 1+2+...+16 = 136 ), then sort the blocks in ascending order of their missing value while preserving relative order for ties (stable sort), and reassemble the large matrix.

Three-step pipeline. First, slice the big matrix into n blocks by taking columns [4k .. 4k+4) for each k . Second, for each block, sum its non- ? entries, compute 136 - sum , and write that value into the ? cell. Third, sort the blocks by their missing value using a stable sort (Python's sorted is stable by default, so you can pass a key function directly) and stitch them back together column-wise.

This question is coming soon to HackTheRounds.

What I Learned

The biggest mental shift was treating the interactive games as graded scenarios, not warmups. They carry meaningful weight. I spent the last minute of each game writing a short description of my optimization logic, because the prompt explicitly invited it and I suspect the writeup matters more than the raw score.

Result

OA submitted, waiting to hear back. Roblox's review timeline is reportedly 2 to 4 weeks for intern decisions. I will update if and when I get a response.

Tips

  1. For the Factory game, find the bottleneck resource first. The optimal production plan is always downstream of that one scarce material. Margin-maximization without identifying the bottleneck is a trap. I learned this the hard way on my first pass.
  2. For the Car game, build five specialists not one generalist. The terrain matrix rewards diversity. Also, read the full component descriptions before placing anything, because some components are outright better than others and new candidates do not notice.
  3. On the behavioral quiz, eliminate options that silo the problem. Anything that says "I would handle it alone and not bother others" is almost always the worst choice. Roblox DS work is cross-team by default.
  4. Sort by units-per-box density, not total units, for the transportation problem. Candidates who sort by total units get partial credit and wonder why.
  5. Do not try to write the newspaper layout code without a worked example. The border math is not hard but every candidate I talked to who tried it in their head got it wrong once before fixing it. Draw the 3x8 example first.
  6. Keep the Magic Number Pairs canonical-form trick in your toolbox. It shows up in multiple DS OA problems, not just this one. "Bucket by sorted-digit string" generalizes to "bucket by anagram signature" and similar.

Happy to compare notes with anyone else in the Roblox intern pipeline this cycle.