cswork / libraryOpen practice workspace

Interview guides · Hexagon Ab

Hexagon Ab Software Engineer Interview Guide

Hexagon Ab Software Engineer interview guide: reported rounds, questions and how candidates describe the process.

The 60-second brief

At Hexagon AB, Software Engineers build high-precision digital solutions that bridge the physical and virtual worlds. The systems you design directly power geospatial domain applications, autonomous industrial workflows, CAD/CAM production software, smart factory automation, and enterprise geospatial solutions. Operating at the intersection of complex geometry, hardware-software integration, and large-scale data processing, engineering at Hexagon AB demands a blend of low-level computational rigors and high-level architectural clarity. As a Software Engineer, your work directly impacts real-world industrial operations, global manufacturing lines, and critical infrastructure.

This guide is scoped to a Software Engineer candidate at Hexagon Ab.

Focus areas

  • Data Structures & Algorithms (DSA)
  • SQL
  • CI/CD Pipelines

The Hexagon Ab interview process

Hexagon Ab candidates report 5 rounds over 4-6 weeks. The stages below are what candidates describe, not a published process.

Recruiter Screening

Initial contact with a recruiter to discuss the resume, location, hybrid working models, and compensation expectations.

What to demonstrate

  • Initial contact with a recruiter to discuss the resume, location, hybrid working models, and compensation expectations
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Be able to walk your CV end to end in two minutes, and say why this company specifically.
  • Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.

Online Assessment

For university hires or specific tracks, this step includes an online assessment covering quantitative aptitude, logical reasoning, and programming snippets.

What to demonstrate

  • For university hires or specific tracks, this step includes an online assessment covering quantitative aptitude, logical reasoning, and programming snippets
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Answer aloud and timed: Explain delegates, events, and the async/await pattern in C#.
  • Answer aloud and timed: What are virtual destructors in C++, and why are they necessary?

Technical Evaluation

Candidates undergo virtual or on-site technical interviews focusing on object-oriented design, live coding, and database/SQL queries.

What to demonstrate

  • Candidates undergo virtual or on-site technical interviews focusing on object-oriented design, live coding, and database/SQL queries
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Answer aloud and timed: How does memory management work in C++ vs. managed environments like C# or Java? Explain heap vs. stack allocation.
  • Answer aloud and timed: Solve a dynamic programming problem and optimize your solution from recursion to the tabulation method.

Project Presentation

Candidates present a past technical project for 30 to 45 minutes, followed by a Q&A session with potential team members.

What to demonstrate

  • Candidates present a past technical project for 30 to 45 minutes, followed by a Q&A session with potential team members
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Answer aloud and timed: Given an array of integers, write an algorithm to identify and optimize search and sort operations.
  • Answer aloud and timed: How would you implement a custom Linked List or graph traversal algorithm from scratch?

Managerial and HR Evaluation

Final evaluation focusing on behavioral alignment, compensation parameters, and team integration.

What to demonstrate

  • Final evaluation focusing on behavioral alignment, compensation parameters, and team integration
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Answer aloud and timed: Explain memory management, pointer manipulation, and garbage collection mechanics during array or string transformations.
  • Answer aloud and timed: Write code to solve a string pattern-matching problem while minimizing time and space complexity.

Where candidates lose points

Review your resume in depth

Interviewers frequently ask detailed questions about past projects, technologies, and architecture decisions listed on your resume. Be ready to explain your exact technical contributions and why you chose specific approaches.

Speak out loud during problem-solving

When working through algorithmic, geometric, or puzzle-based challenges, talk the interviewer through your thought process. Showing a clear, structured analytical approach is often just as important as arriving at the final answer.

Emphasize quality and testing

Highlight your experience writing clean code, designing unit tests, and leveraging CI/CD pipelines. Hexagon AB places high value on pragmatic software quality and system reliability.

Do not attempt to fake domain knowledge in geometry or low-level framework mechanics

If you aren't familiar with a specific concept, acknowledge it and explain how you would go about researching and solving the problem.

Questions & practice

Explain object-oriented programming concepts: Polymorphism, Abstraction, Encapsulation, and Inheritance.

Medium · Object-Oriented Design & Core Languages

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

What is the difference between compile-time and run-time polymorphism? Give code examples.

Medium · Object-Oriented Design & Core Languages

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

Explain delegates, events, and the async/await pattern in C#.

Medium · Object-Oriented Design & Core Languages

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

What are virtual destructors in C++, and why are they necessary?

Medium · Object-Oriented Design & Core Languages

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

How does memory management work in C++ vs. managed environments like C# or Java? Explain heap vs. stack alloca

Medium · Object-Oriented Design & Core Languages

How does memory management work in C++ vs. managed environments like C# or Java? Explain heap vs. stack allocation.

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

Solve a dynamic programming problem and optimize your solution from recursion to the tabulation method.

Medium · Data Structures, Algorithms & Problem-So

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Given an array of integers, write an algorithm to identify and optimize search and sort operations.

Medium · Data Structures, Algorithms & Problem-So

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

How would you implement a custom Linked List or graph traversal algorithm from scratch?

Medium · Data Structures, Algorithms & Problem-So

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Explain memory management, pointer manipulation, and garbage collection mechanics during array or string trans

Medium · Data Structures, Algorithms & Problem-So

Explain memory management, pointer manipulation, and garbage collection mechanics during array or string transformations.

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

Write code to solve a string pattern-matching problem while minimizing time and space complexity.

Medium · Data Structures, Algorithms & Problem-So

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Explain how bounding boxes or spatial indexing (e.g., Quadtrees or R-Trees) optimize spatial search queries.

Medium · Computational Geometry & Mathematical Fo

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Write SQL queries involving complex INNER, LEFT, and RIGHT JOIN statements along with aggregation.

Medium · Systems, Full-Stack & Database Engineeri

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

Explain database normalization, indexing mechanisms, and query optimization techniques.

Medium · Systems, Full-Stack & Database Engineeri

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

How do you calculate vector dot products, cross products, and transformation matrices for 3D space?

Medium · Computational Geometry & Mathematical Fo

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

Explain the logic required to detect point-in-polygon containment or intersection between geometric primitives

Medium · Computational Geometry & Mathematical Fo

Explain the logic required to detect point-in-polygon containment or intersection between geometric primitives.

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

How do coordinate systems convert raw sensor/metrology data into global mapping planes?

Medium · Computational Geometry & Mathematical Fo

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

Solve a logical puzzle involving geometric shapes, spatial optimization, and basic probability.

Medium · Computational Geometry & Mathematical Fo

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

How do you design RESTful APIs or Web APIs using ASP.NET Core or Spring Boot?

Medium · Systems, Full-Stack & Database Engineeri

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

Explain containerization and pipeline automation using Docker, Kubernetes, and Jenkins.

Medium · Systems, Full-Stack & Database Engineeri

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

Describe how to implement unit testing and mocking frameworks (e.g., Mockito, NUnit) to prevent hotfixes in pr

Medium · Systems, Full-Stack & Database Engineeri

Describe how to implement unit testing and mocking frameworks (e.g., Mockito, NUnit) to prevent hotfixes in production.

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

Listing latency scales with page size, not with filters

Easy · n+1 · latency · query batching

The tenant listing endpoint reads resource filtered by tenant_id and status, ordered by updated_at DESC, and returns each row plus the owner's display name from app_user and the actor of that resource's latest resource_revision. p99 is 55 ms at 10 rows per page and 1.4 s at 200. Database telemetry shows 401 statements per request, each under 1 ms, and nothing in the slow-query log. Diagnose the cause and give the fix, stating the statement count per request and the p99 you expect afterwards.

Approach

  1. Read the counters before forming a theory. 401 statements for 200 rows is one driver query plus two per row, and sub-millisecond execution with an empty slow-query log rules out a bad plan. The time is round trips, which is why it is invisible in every per-query metric and scales with rows returned rather than with filter selectivity.
  2. Name the two per-row statements from their normalised text: a single-row app_user lookup by user_id, and a resource_revision lookup by resource_id ordered by version DESC LIMIT 1. Confirm by dropping those two response fields and watching the statement count fall to one. That locates the calls in the serialisation layer, not the repository.
  3. Check that the arithmetic accounts for the whole gap. Measure one round trip to the replica in isolation; 400 trips at roughly 3 ms of network plus 0.2 ms of execution is about 1.3 s on top of a 55 ms baseline, which matches. If the multiplication had fallen short, the N+1 would only be part of the story and you would keep looking.
  4. Batch both lookups. Collect owner_user_ids and resource_ids from the driver query, then issue WHERE tenant_id = $1 AND user_id = ANY($2) for the users, and PostgreSQL's SELECT DISTINCT ON (resource_id) ... WHERE resource_id = ANY($2) ORDER BY resource_id, version DESC for the latest revision, which the UNIQUE (resource_id, version) index serves directly. On an engine without DISTINCT ON, use a lateral join or a row_number window. Three statements per request at any page size.

Follow-up

  • The page size is capped at 200 today. What breaks first if it is raised to 2,000, and is it still this bug?
  • How do you stop the next N+1 from reaching production, given that no individual query is slow and the endpoint's tests pass?

Suggested practice checklist

Built from the rounds and topics Hexagon Ab candidates report.

Day 1 — Map the Hexagon Ab loop

  • Write out the reported sequence: Recruiter Screening, Online Assessment, Technical Evaluation, Project Presentation, Managerial and HR Evaluation.
  • For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.

Deliverable: A one-page map of the 5 reported rounds, with the weakest marked.

Day 2 — Work Data Structures & Algorithms (DSA)

  • Spend the session on Data Structures & Algorithms (DSA), which Hexagon Ab candidates report being tested on.
  • Write one worked example in Data Structures & Algorithms (DSA) and time yourself on it.

Deliverable: One timed worked example in Data Structures & Algorithms (DSA).

Day 3 — Work SQL

  • Spend the session on SQL, which Hexagon Ab candidates report being tested on.
  • Write one worked example in SQL and time yourself on it.

Deliverable: One timed worked example in SQL.

Day 4 — Work CI/CD Pipelines

  • Spend the session on CI/CD Pipelines, which Hexagon Ab candidates report being tested on.
  • Write one worked example in CI/CD Pipelines and time yourself on it.

Deliverable: One timed worked example in CI/CD Pipelines.

Day 5 — Answer out loud: Object-Oriented Design & Core Languages

  • Answer aloud, timed: Explain object-oriented programming concepts: Polymorphism, Abstraction, Encapsulation, and Inheritance.
  • Answer aloud, timed: What is the difference between compile-time and run-time polymorphism? Give code examples.

Deliverable: Spoken answers to 2 reported Object-Oriented Design & Core Languages question(s), under time.

Day 6 — Answer out loud: Data Structures, Algorithms & Problem-Solving

  • Answer aloud, timed: Solve a dynamic programming problem and optimize your solution from recursion to the tabulation method.
  • Answer aloud, timed: Given an array of integers, write an algorithm to identify and optimize search and sort operations.

Deliverable: Spoken answers to 2 reported Data Structures, Algorithms & Problem-Solving question(s), under time.

Day 7 — Answer out loud: Computational Geometry & Mathematical Foundations

  • Answer aloud, timed: How do you calculate vector dot products, cross products, and transformation matrices for 3D space?
  • Answer aloud, timed: Explain the logic required to detect point-in-polygon containment or intersection between geometric primitives.

Deliverable: Spoken answers to 2 reported Computational Geometry & Mathematical Foundations question(s), under time.

Behavioural preparation

Behavioural rounds judge the decision you made and what it cost.

Reverse your own decision and price the reversal

Medium · reversibility · measurement · migrations

Describe a technical decision you made and later reversed. Pick one that cost something: a service you split and merged back, a cache you added and removed, an index you created that pushed the planner onto a worse plan, a projection you rebuilt from scratch. State what you believed when you decided, the measurement that changed your mind, how long the wrong version ran in production, and what the reversal cost in migrations, dual writes, and a deprecation window for callers you did not own.

Approach

  1. State the original rationale without irony, in the version you would still defend given what was known then. If it is not defensible, the story is about carelessness rather than judgement, and a different example serves you better.
  2. Give the measurement that moved with a before and after: the p99 that did not improve, the cache hit rate that sat at 40%, the plan that flipped to a sequential scan once the table passed a size you can name.
  3. Cost the reversal in steps, not adjectives: expand-and-contract deploys, the dual-write window, the callers who had to be notified, the rows already written in the wrong shape that had to be backfilled or abandoned.
  4. Distinguish reversal from rewrite by naming what you kept. Most good reversals preserve the schema or the interface and undo one decision inside it, which is also why they were affordable.

Follow-up

  • What in that decision was irreversible, and did you know it was irreversible when you made it?
  • How did you tell the people who had already built on top of the original decision?

Turn a code review disagreement into a decision

Easy · code review · optimistic concurrency · communication

A colleague's change updates a row with UPDATE resource SET version = version + 1 WHERE resource_id = $1 AND version = $2 and treats an affected-row count of zero as a successful no-op. You read that as a silently lost update; they think returning 200 is friendlier to clients than returning a conflict. Describe how you have handled a review disagreement of this shape: what goes in the comment, when you leave the thread, and who decides. Then write the comment you would leave here, in under 80 words.

Approach

  1. Sort the disagreement before writing anything. A silently discarded write is a correctness claim about data; the choice between 409 and 412 is taste. Only the first justifies blocking a merge, and saying which one you are doing is most of the value of the comment.
  2. Make the claim reproducible in the comment itself with an interleaving rather than a principle: A reads version 7, B reads version 7, B commits version 8, A's predicate matches zero rows, A is told it succeeded and A's edit is gone.
  3. Offer the alternative with its cost attached: return 409 carrying the current version and the revision that won, so the client can re-read and re-apply. Note that automatic retry is not the fix, because a retry re-reads the winner's state and reapplies an intent formed against data that no longer exists.
  4. Apply an escalation rule you can state: two round trips on the thread, then a call, and the service's owner decides rather than the reviewer. A reviewer who cannot be overruled is a bottleneck with extra steps.

Follow-up

  • Where would you put the test that fails if someone reintroduces the swallowed zero rowcount?
  • The author says clients cannot handle a 409. How do you check whether that is true?

Narrate an outage you owned from page to postmortem

Hard · incident response · blast radius · postmortems

Pick an incident you personally drove, ideally one where writes were affected rather than reads. In six to eight minutes: state the symptom as it first appeared on a dashboard, the blast radius you established before you knew the cause, the mitigation you applied and when, the mechanism you eventually proved, and the follow-up that would prevent a repeat. Bring numbers: error rate, tenants affected, minutes to mitigate, minutes to resolve. If you cannot name what you measured, choose a different incident.

Approach

  1. Open on the signal rather than the cause: which metric at which percentile moved, on which service, at what time, so the listener follows the same evidence you had rather than a conclusion you already reached.
  2. Separate mitigation from diagnosis out loud. State what you did to stop the bleeding (flag off, shed traffic, drain a lease, roll back a deploy) and say plainly that you did it before the mechanism was known, because those are two jobs with different deadlines.
  3. Establish blast radius in countable terms: how many tenants, how many writes, and crucially whether the effect was loss or only delay. An append-only revision table or a pending outbox row means the change survived and the projection was merely behind, which is a repair rather than a data-loss incident.
  4. Prove the mechanism instead of asserting it. Name the trace span that grew, the plan that flipped to a sequential scan, the lease that expired, plus one alternative you ruled out and the signal that stayed flat while you ruled it out.

Follow-up

  • What would you do differently in the first five minutes, given the same dashboard and no more information?
  • Which follow-up action did you deliberately not take, and why was dropping it the right call?