Kinaxis · Software Engineer
Updated · 2026-09-20

Kinaxis Software Engineer
Interview Questions & Guide 2026

THE 60-SECOND BRIEF

Kinaxis develops Maestro, a platform for supply chain planning and decision-making.

Prepare for planning software through dependency graphs, versioned inputs and explainable calculation results.

Practise the engineering decisions below, then map them to the format specified for your opening.

Dependency reasoningConsistent scenariosPerformance evidence

12 min read

Practice 11 Software Engineer prompts
11Practice promptsAcross five skill areas
4With worked solutionsIncluded in the practice prompts

A plan is useful only when its assumptions are visible. A supplier delay can affect several dependent activities. Practise explaining which inputs changed, what needs recomputation and why a result belongs to a particular scenario revision.

Kinaxis describes Maestro as a supply chain planning and decisioning platform built around concurrent planning. That product description motivates these preparation topics; it does not reveal the company’s internal algorithms or establish a hiring sequence.

Separate planning from execution. A hypothetical scenario can explore a change without authorizing a real order. In the examples, publishing a result means making a computed scenario visible, not triggering a purchase. State this boundary before discussing retries or user actions.

Choose a small, testable model. Use a directed acyclic dependency graph, integer quantities and immutable scenario revisions. Real supply chains can involve cycles, uncertain lead times and optimization objectives. Explain where the simplified model stops rather than describing a toy calculation as a complete planning engine.

01

Define the scenario data

editorial

Give a scenario immutable inputs and a revision. Distinguish an item identifier from a tenant-scoped item identity and document what a missing demand row means.

What to demonstrate

  • Keep units, scope and revision explicit.
  • Reject inconsistent inputs before computing results.

How to prepare

  • Create a small demand-and-stock fixture.
  • Add an item with no demand and the same item ID in another tenant.
Read the source
02

Explain the dependency algorithm

editorial

Draw a graph before reaching for an optimization technique. A topological order is enough for one simple acyclic propagation exercise, but it does not solve every planning problem.

What to demonstrate

  • State an invariant and complexity bound.
  • Detect invalid cycles rather than returning a partial plan.

How to prepare

  • Implement the dependency-order exercise.
  • Compare a chain, a diamond and a disconnected task.
Read the source
03

Publish a result from one consistent revision

editorial

A long calculation can finish after a planner changes the inputs. Identify the scenario revision that produced the result and decide whether it is still eligible to become current.

What to demonstrate

  • Prevent stale work from replacing a newer result.
  • Keep performance comparisons tied to the same inputs and output meaning.

How to prepare

  • Trace an old worker finishing after a replacement.
  • Prepare a story where measurement changed a performance decision.
Read the source

PracHub editorial advice for the preparation topics above.

Visual walkthrough

Which calculation result can become current?

Choose a scenario to trace what changes.

The current owner completes the job.

  1. 01QueuePersist the scenario revision and input manifest before a worker claims the job.
  2. 02Run with tokenAllocate a token that identifies this worker’s current ownership. Store calculated output under its attempt ID.
  3. 03Commit current tokenCompare the token and eligible input revision while atomically selecting the published result.
WHAT YOUR SYSTEM SHOULD DO

Publish the artifact only when the ownership token and intended input revision still match in the atomic commit.

PracHub calculation-worker model: compare a current worker, a late worker and a retry. A token identifies ownership of the result publication step; these are teaching scenarios, not Kinaxis infrastructure.

01

Returning a majority candidate without verification

Pair cancellation finds a candidate, not proof of a majority. Count it again when no majority is guaranteed.

02

Dropping tasks from a cyclic graph

A partial topological order is not a valid plan. Detect the unresolved cycle and expose a useful error.

03

Benchmarking different scenarios

Hold the inputs and output semantics constant. Record algorithm version, workload shape and correctness checks alongside timing.

04

Publishing results from stale work

Tie the atomic commit to the current token and input revision. A lease check performed earlier leaves a race.

Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.

8 technical prompts4 include a worked solution

Order dependent planning tasks

mediumWorked solution
GraphsTopological sortComplexity

Given unique task IDs and directed prerequisite edges (before, after), return a valid execution order or reject a cycle. Reject unknown endpoints. Duplicate edges should not inflate indegrees.

Approach
  1. Deduplicate adjacency edges, initialize every task including isolated ones, and count incoming prerequisites.
  2. Process zero-indegree tasks with a queue and decrement each outgoing neighbor. If fewer than all tasks are produced, a cycle remains. This is O(V+E) time and space.
Worked solution 35 min
  1. Initialize every node so isolated tasks are retained.
  2. Increment indegree only when an edge is first inserted. Process tasks only after all prerequisites have been removed.
  3. Compare output length with node count. A shorter output is a cycle failure, not a partially successful plan.
Python
from collections import deque

def task_order(tasks, edges):
    if len(set(tasks)) != len(tasks):
        raise ValueError("duplicate task")
    adj = {x: [] for x in tasks}
    degree = {x: 0 for x in tasks}
    seen = set()
    for a, b in edges:
        if a not in adj or b not in adj:
            raise ValueError("unknown endpoint")
        if (a,b) not in seen:
            seen.add((a,b)); adj[a].append(b); degree[b] += 1
    ready = deque(x for x in tasks if degree[x] == 0)
    result = []
    while ready:
        a = ready.popleft(); result.append(a)
        for b in adj[a]:
            degree[b] -= 1
            if degree[b] == 0:
                ready.append(b)
    if len(result) != len(tasks):
        raise ValueError("cycle")
    return result

Scroll sideways to view long lines.

EXPECTED RESULTA diamond dependency graph emits a before b/c and d after both; cycles raise ValueError.
Follow-up
  • How would you return only tasks affected by changing one input?

Detect a strict majority signal

medium
Voting algorithmValidation

Given a list of categorical supplier signals, return a value occurring more than half the time, or None. The input may be empty. Distinguish more than half from at least half.

Approach
  1. Use pair cancellation to find a candidate, then verify its actual count in a second pass.
  2. Explain why the candidate alone proves nothing if the input has no guaranteed majority. Test two different values in a two-element input.
Follow-up
  • What changes if the threshold becomes one-third or the data is an unrepeatable stream?

Count recent planning input arrivals

medium
Sliding windowQueuesBoundaries

Given nondecreasing integer timestamps, count events in (now − 10, now]. Each event counts once. The clock can advance without a new event; an event at the lower boundary has expired.

Visual walkthrough

Which events still count?

ROLLING TOTAL+2units
(0, 10]Events in window: 2
In windowExpiredNot arrived

The left boundary is excluded; the right boundary is included. Drag past an event to see it enter, then expire 10 seconds later.

See the event values
  • At 0s: +1expired
  • At 5s: +1in window
  • At 10s: +1in window
  • At 14s: +1not arrived
  • At 19s: +1not arrived

Synthetic planning input arrivals at 0, 5, 10, 14 and 19 seconds, each with weight one. Drag the clock: at 10 seconds only 5 and 10 count; at 30 seconds none remain. The lower boundary is excluded.

Approach
  1. Keep a deque and remove timestamps at or before now − 10 before reporting a count. Equal timestamps represent distinct events unless a separate event ID says otherwise.
  2. Expose both add(time) and count(now). Reject a backward clock and document the O(k) retained-event memory cost. Each event is inserted and removed once, giving amortized O(1) updates.
Follow-up
  • How would late arrivals, multiple producers or a per-customer limit change the contract?

A PracHub practice schedule with one outcome per session. Adjust the pace to your experience and interview date; it is not a company hiring timeline.

Small steps. Visible outcomes.0 / 7 completed
ONE WEEK · YOUR PACE

Prepare, practise & reflect

One practical outcome each day. Spend longer where you need it.

0 / 7 done
01Model one scenario
  • Draw inputs, dependencies and result revisions.
  • State which actions are hypothetical calculations.

Deliverable: A scenario contract

02Order dependencies
  • Implement topological ordering.
  • Test duplicates, a cycle and an isolated task.

Deliverable: A tested graph routine

Practice prompt ↗
03Check shortage grain
  • Run the stock-and-demand SQL.
  • Add colliding tenant IDs and empty demand.

Deliverable: A verified shortage fixture

Practice prompt ↗
04Trace one calculation
  • Create an immutable manifest.
  • Walk a worker failure and a new attempt.

Deliverable: A reproducible run design

Practice prompt ↗
05Challenge stale ownership
  • Resume an old worker after replacement.
  • Identify the exact atomic check.

Deliverable: A failure timeline

Practice prompt ↗
06Explain performance evidence
  • Prepare one benchmark story.
  • Name the correctness check and the workload limitation.

Deliverable: A defensible performance explanation

Practice prompt ↗
07Rehearse the full model
  • Explain the majority follow-up and dependency invalidation.
  • Use the clock diagram to test stale input assumptions.

Deliverable: A focused practice review

Practice prompt ↗Practice prompt ↗Practice prompt ↗

Expand any day for tasks and deliverables. Your progress is saved on this device.

Use a real project. Explain your responsibility, the decision you made, the evidence you used and what you would change.

Make a performance claim defensible

medium
ReasoningCollaboration

Describe a slow calculation or query you improved. Explain how you chose the workload and checked output equivalence.

Approach
  1. Name the assumption, your responsibility and the experiment or evidence you used.
  2. Describe the decision, limitations and follow-up. Keep your personal contribution separate from the whole team’s outcome.
Follow-up
  • What new evidence would cause you to reverse that decision?

Resolve competing planning assumptions

medium
ReasoningCollaboration

Describe a technical disagreement caused by different assumptions about the same requirement.

Approach
  1. Name the assumption, your responsibility and the experiment or evidence you used.
  2. Describe the decision, limitations and follow-up. Keep your personal contribution separate from the whole team’s outcome.
Follow-up
  • What new evidence would cause you to reverse that decision?

Reduce an ambiguous problem

medium
ReasoningCollaboration

Tell a story where you turned an underspecified request into a small, verifiable first result.

Approach
  1. Name the assumption, your responsibility and the experiment or evidence you used.
  2. Describe the decision, limitations and follow-up. Keep your personal contribution separate from the whole team’s outcome.
Follow-up
  • What new evidence would cause you to reverse that decision?
  • 01

    Choose examples you can discuss without sharing confidential customer data.

Do I need to build a complete optimization solver?

These exercises focus on general software engineering: graphs, state, data and reproducibility. Optimization-heavy roles may require additional mathematics and algorithms; use the exact posting to determine that depth.

Are these verified company interview questions?

These are PracHub practice exercises informed by the supplied guide themes and official product context. They include original constraints and worked solutions; they are not an independently verified list of questions asked by the employer.

Why include SQL alongside coding and design?

SQL is supplemental practice for inspecting system state and checking invariants. Its inclusion does not mean every role has a SQL interview. Prioritize the skills in your exact opening.

How should I use the seven-day checklist?

Attempt each task before opening its solution. Save one artifact per session, such as a tested function, fixture or failure timeline. Repeat weak areas and adjust the pace instead of treating seven days as a readiness guarantee.

Sources & methodology 3 sources ↗

Official role evidence, timestamped platform data and clearly labeled preparation advice.