Collinson · Software Engineer
Updated · 2026-10-02

Collinson Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Candidate reports place Collinson in loyalty and travel technology, building platforms used by global travelers and loyalty program members. The role description mentions services that handle a high volume of customer interactions and work that connects older systems to cloud-based ones. A Software Engineer there is described as building APIs, full-stack applications and system components, joining code reviews, sprint planning and stand-ups, diagnosing production issues and writing technical documentation. The listed requirements are Java or a similar backend language, API development and Git; AWS or Azure, CI/CD pipelines and front-end frameworks are listed as extras.

This guide is for candidates applying as a Software Engineer at Collinson, especially backend or full-stack engineers who work in Java. It covers the three reported rounds, the ten reported questions (five technical discussions and five behavioral prompts), and a seven-day plan that adds hands-on API and take-home practice, with PracHub practice exercises on idempotency fingerprints and keyset paging.

Candidates report three rounds over roughly 3-5 weeks: an Initial Screening Call with a recruiter, Technical Assessments that may include take-home assignments, and Interviews with Managers. Some stages may also include psychometric or arcade-style cognitive tests.

Full-Stack DevelopmentTechnical Interview Problem SolvingTake-Home Assessments

32 min read

Browse Software Engineer questions

See the practice prompts

15Practice promptsAcross five skill areas

The work candidates describe is practical engineering: REST APIs in Java, full-stack features, integration between older and newer systems, and keeping production services healthy. That shapes preparation. Reading about design patterns is less useful than having recently built something small end to end, so you can talk about module layout, error handling and security from fresh experience rather than memory.

The reported questions split evenly. Five are technical discussions: your Java and API experience, debugging a production issue in a distributed system, trade-offs between database architectures under high concurrency, keeping a large codebase maintainable, and how you decide when to adopt new technology. Five are behavioral: a disagreement with a product manager or teammate, tight deadlines or shifting requirements, taking over a failing or stalled project, giving and receiving code review feedback, and why Collinson. Each needs a prepared structure, and the behavioral five need real stories drawn from your own projects.

Candidates also report a few practical points. The technical stage may be a take-home, with example scenarios such as building a full-stack feature from a requirements document or refactoring a slow snippet. Some stages may include psychometric or arcade-style cognitive tests, so plan a quiet room and a working keyboard. The advice that recurs is to ask clarifying questions before solving, to say out loud why you chose one approach over another, and to know every project on your CV in detail.

01

Initial Screening Call

reported

Candidates describe the Initial Screening Call as a conversation with a recruiter about your background and fit for the role. Treat it as the first test of how clearly you can explain your own work: the recruiter will not be reading your code, so your account of Java and API projects has to stand on its own. It is also the moment to ask what the later stages contain, including whether a take-home or cognitive tests are part of the loop.

What to demonstrate

  • How well your background lines up with a Java and API-focused engineering role
  • Whether you can describe your projects and your part in them concisely
  • Your reasons for wanting this company and role

How to prepare

  • Write a short walk through your CV that spends most of its time on your Java and API projects and what you personally decided
  • Prepare a specific answer to the question about what draws you to Collinson, built on its loyalty and travel context
  • Have logistics ready (notice period, location, availability) and a short list of questions about the next stages, including take-home and online tests
Collinson Software Engineer candidate reports ↗
02

Technical Assessments

reported

Technical Assessments are reported as one or more technical evaluations that may include take-home assignments. Candidates list code structure, API design (RESTful practice and security) and error handling as the areas, with example scenarios of building a full-stack feature from a requirements document and refactoring an inefficient snippet. A coding-style stage is where working code, tests and written reasoning matter, and it is also where the technical discussion topics (production debugging, database trade-offs, code quality) are practised. Read the requirements twice, ask about anything ambiguous, and keep a short note of your decisions.

What to demonstrate

  • Working code that meets the stated requirements
  • How you organise modules and components
  • REST API design, including security basics
  • Error handling that fails gracefully

How to prepare

  • Build a small Java REST service from a written spec with validation, a consistent error body, authentication and tests, then add a minimal front end to it
  • Refactor a deliberately slow snippet (repeated scans, N+1 queries, wrong collection type) and write down the before and after cost
  • Practise explaining your design choices out loud, including the database trade-offs for high-concurrency use and your approach to debugging a production fault
  • Set up a quiet space and test your keyboard in case a stage includes psychometric or arcade-style cognitive tests
Collinson Software Engineer candidate reports ↗
03

Interviews with Managers

reported

Interviews with Managers is described as a series of interviews with engineering managers and team members about your skills and how you would work with them. Candidates also list conflict resolution, project ownership and growth (learning from mistakes, mentoring junior developers) as areas to be ready for. Expect to be asked about projects on your CV in detail, including the architectural trade-offs you made, so rehearse stories with concrete decisions and results rather than general principles.

What to demonstrate

  • How you handle disagreement and shifting requirements in a team
  • Accountability for a project from start to deployment
  • How you learn from mistakes and help others improve
  • Your ability to discuss past architectural decisions and their trade-offs

How to prepare

  • Build a bank of four or five real projects and map each to several prompts: disagreement, deadline pressure, a stalled project, code review
  • For every project, write the decision you made, the alternative you rejected, and the measurable result
  • Prepare an honest example of a mistake, what changed afterwards, and a time you helped a less experienced colleague
  • Prepare questions about team practices such as code review, release process and on-call that you actually want answered
Collinson Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Describing Java and API experience as a list of frameworks and annotations with no decisions behind them

For each project, state one design choice, the alternative you rejected and the result: for example offset versus keyset paging, synchronous call versus queue, or an idempotency key on a retried POST.

02

Submitting a take-home that runs but ignores part of the requirements document, has no tests and does not record assumptions

Turn the requirements into a checklist before coding, ask about anything ambiguous, cover error handling and authentication, and add a short README with your decisions and what you would do next.

03

Answering the database trade-offs question as a product comparison (SQL versus NoSQL) rather than starting from the access pattern

Begin with the read/write mix, contention hot spots and consistency needs, then compare a single relational primary, read replicas, sharding and caching by what each costs and where it can serve stale data.

04

Jumping straight to a fix when asked about debugging a production issue in a distributed system

Walk through a sequence: confirm impact, check what changed, read logs, metrics and traces to localise the failing service, mitigate (rollback or flag) first, then find the root cause and add a regression test.

05

Telling a behavioral story in which your own role is hidden behind the team, or the other person is the villain

Name what you decided and did, include what the other side wanted, and finish with the result and what you would change. Prepare each story's numbers and facts beforehand.

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

9 technical prompts0 include a worked solution

Merge partitioned event streams into one ordered feed with bounded lateness

hard
k-way mergewatermarksout-of-order streams

The read-model service consumes 64 log partitions carrying about 4,000 events per second in total. Each partition is ordered within itself, but partitions drift by up to 30 seconds, and the activity feed must present a tenant's events in occurred_at order. Produce the merge. State its complexity, the buffer it requires in events and in bytes, what happens when one partition is idle, and what you do with an event that arrives after you have already emitted its position. Payloads average 1 KB.

Approach
  1. Merge with a min-heap over the 64 partition heads keyed on (occurred_at, event_id): O(log P) per event and O(n log P) overall. The tie-break on event_id is what makes the output deterministic when two partitions carry the same millisecond, which matters because the feed is paginated and a non-deterministic order reorders pages under the reader.
  2. Emitting the heap head is only correct once every partition has produced everything up to that timestamp, so the emit condition is a watermark: the minimum across partitions of the highest occurred_at seen, less the allowed lateness. Events are held until the watermark passes them, which is what turns individually ordered streams into a jointly ordered one.
  3. Size the buffer from the lateness rather than guessing: 4,000 events per second times 30 seconds is 120,000 buffered events, and at 1 KB each about 120 MB of heap. That number is the real price of the ordering guarantee and belongs in front of whoever asked for it.
  4. Handle the idle partition explicitly, because it fails the feed rather than corrupting it: a partition with no traffic never advances its own maximum, so the watermark freezes and output stops entirely. Either every partition emits a periodic idle marker carrying the broker's current time, or the watermark falls back to wall clock for a partition silent beyond a threshold.
Follow-up
  • The lateness budget is raised to five minutes. What is the new buffer, and what besides memory changes?
  • The consumer restarts. Where does it resume from, and what does the feed look like for the first 30 seconds?

Canonicalise a request body into a stable idempotency fingerprint

medium
parsingcanonicalisationhashing

idempotency_key.request_fingerprint is a SHA-256 over the method, path and canonicalised body, and a retry whose fingerprint differs must be rejected with 422 rather than served the stored response. Write the canonicaliser. Bodies are JSON up to 256 KB nested at most 32 levels; clients vary key order, whitespace and unicode escaping, and some send 64-bit ids as JSON numbers. Produce a deterministic byte string such that semantically identical bodies match and any semantic difference does not. State your complexity and name two normalisations you refuse to perform.

Approach
  1. Parse once into a tree, then re-serialise under fixed rules: object keys sorted, array order preserved, one escaping convention, no insignificant whitespace. Parsing is O(n) and sorting keys is O(k log k) per object, so O(n log n) overall with O(depth) stack, and the 32-level cap is enforced during parsing because hostile nesting is how a canonicaliser becomes a stack overflow.
  2. Sort keys by their UTF-8 bytes and say why the obvious implementation is wrong in some runtimes: a default string comparison that orders by UTF-16 code units places surrogate pairs, meaning code points from U+10000 up, below U+E000 to U+FFFF, which is not UTF-8 byte order, so two services written in different languages disagree on the same document.
  3. Do not re-encode numbers through a double. IEEE-754 binary64 represents integers exactly only up to 2^53, so normalising a 19-digit id through a float changes it, and 1 against 1.0 cannot be reconciled without deciding whether they are the same value. Preserve the literal token, and require ids as strings at the API boundary if you want them comparable.
  4. Reject duplicate keys rather than picking one. JSON permits them and parsers disagree, most keeping the last, so any choice you make ties the fingerprint to a parser detail that the code handling the request does not necessarily share.
Follow-up
  • A client sends the same logical request with an extra field your API ignores. Same key, different fingerprint, so you return 422. Is that the right answer?
  • Where does the fingerprint get computed relative to request decompression and the body-size limit?

Archive a resource graph without breaking live references or recursing

medium
graph traversaltopological ordertenant isolation

Resources reference other resources within a tenant; for the largest tenant the reference table holds up to 2,000,000 nodes and 8,000,000 edges. Archiving a resource must archive everything reachable from it that nothing outside the set still references, refuse when a live external referrer exists, and terminate when references form cycles, which they legitimately do. Produce the archive order and the refusal list, targeting O(V+E). Say what stops the traversal crossing a tenant boundary, and why recursion is the wrong control structure at this size.

Approach
  1. Load the subgraph with the tenant predicate on both endpoints of the edge, not only on the side you started from. Scoping the left table alone is the classic cross-tenant leak: one mis-entered edge then pulls another tenant's resources into the traversal and, worse, into the archive.
  2. Traverse iteratively with an explicit stack. A 2,000,000-node graph can hold a chain deep enough to exhaust a native stack in the low tens of thousands of frames, and that failure is a process crash rather than an error you can return.
  3. Treat cycles as data rather than corruption: compute strongly connected components with Tarjan in O(V+E) using its own explicit stack, then condense. The condensation is a DAG, so a topological order over it gives the archive order, and every member of a component archives in one transaction because no order within a cycle is valid.
  4. Decide refusals with reverse edges. A candidate is archivable only if every in-edge originates inside the candidate set, so build the transpose or count in-degrees restricted to the visited set, and emit each blocked resource with the id of the external referrer, which is the only part of the answer an operator can act on.
Follow-up
  • The graph is read in one query and the archive writes a minute later. What can change in between, and how do you make the write safe?
  • The candidate set is 400,000 resources. Is that one transaction, and if not, what does a half-finished archive look like to a reader?

The plan follows the three reported rounds: it starts with the recruiter-call material, spends the middle days building the Java API and full-stack work that the technical assessments describe, then rehearses the discussion and behavioral questions.

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
01Map the loop and write your project walkthroughs
  • Write out the three reported rounds (Initial Screening Call, Technical Assessments, Interviews with Managers) and mark which one you are least ready for.
  • List the projects on your CV that involved Java or APIs and write a spoken walkthrough for the strongest two: what you owned, one design choice, one failure and its fix.
  • Write and practise your answer to what draws you to Collinson, using public information about its loyalty and travel work.

Deliverable: A one-page loop map, two written project walkthroughs for the Java and API question, and a written answer to the why-Collinson question.

Practice prompt ↗Practice prompt ↗
02Build a Java REST service from a spec
  • Write a short requirements document for a small service (for example bookings or points balances) and implement it in Java with validation, a uniform error body, authentication and unit and integration tests.
  • Add an idempotency key to the create endpoint and test that a repeated request gives the same result.
  • Work the PracHub practice exercise on canonicalising a request body into a stable idempotency fingerprint and compare it with your approach.

Deliverable: A tested Java service in a Git repository with an error contract, an idempotent create endpoint and a worked fingerprint exercise.

Practice prompt ↗
03Rehearse the full-stack take-home
  • Take a new written requirement and build a thin vertical slice: API, persistence and a simple front-end page, with small, meaningful Git commits.
  • Write a README listing assumptions, trade-offs, what is tested and what you would improve; run the tests in a CI workflow if you can.
  • Review your code against a checklist: module boundaries, input validation, authentication, error handling and logging.

Deliverable: A working full-stack slice with commit history, a README of decisions and a self-review checklist.

04Refactor for performance and data-layer trade-offs
  • Take a slow snippet (a nested loop, an N+1 query, a list used for lookups) and refactor it, recording the complexity before and after.
  • Work the PracHub practice exercise on replacing offset paging on a resource feed with keyset paging, then explain why it holds up under concurrent writes.
  • Say out loud, then write down, your answer to the database trade-offs question for a high-concurrency workload: single primary, read replicas, sharding, caching and the consistency each gives up.

Deliverable: A refactored snippet with measured improvement, a keyset paging solution and a written database trade-offs answer.

Practice prompt ↗Practice prompt ↗
05Production debugging, code quality and technology choices
  • Write a step-by-step incident checklist for a distributed system (impact, recent changes, logs, metrics, traces, mitigation, root cause, follow-up) and apply it to a failure you have handled.
  • Write your approach to code quality in a large codebase: review practice, tests, linters, documentation and dependency hygiene.
  • Write how you follow new technology and the criteria you use before adopting it in a production system.

Deliverable: An incident checklist, a code-quality answer, and a technology-adoption answer, each short enough to say aloud.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
06Behavioral story bank
  • Write a story for each of the disagreement, tight-deadline, stalled-project and code-review prompts in a situation, action and result outline, with one fact or measurement in each.
  • Add one story about a mistake and one about mentoring someone, since growth is a reported area.
  • Say each story aloud and trim it until your own decision and the outcome come first.

Deliverable: Five rehearsed stories mapped to the reported behavioral questions, each with a stated result.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
07Full dry run
  • Run the loop in order: a recruiter-style walkthrough of your CV, a build-or-refactor task from a fresh requirement, then a mixed set of technical discussion and behavioral questions answered aloud.
  • Review where you lost clarity and tighten those answers; list the questions you want to ask managers and team members.

Deliverable: A completed mock in loop order, revised weak answers and a written list of questions to ask.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗

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

Candidates report behavioral questions on conflict with a product manager or teammate, deadlines and shifting requirements, rescuing a stalled project, code review and motivation for joining. They also name project ownership from start to deployment and growth, including mentoring junior developers, as areas to cover. Build a bank of four or five real projects and map each to several prompts, so every answer has a decision and a result.

Can you walk us through your experience with Java and API development?

medium
Technical and Domain Knowledge

Can you walk us through your experience with Java and API development?

Approach
  1. Choose one or two projects you can describe in depth and open with what the service did, who called it and what you personally owned. Then go layer by layer: resource design (nouns, HTTP verbs, status codes), request validation, a consistent error body, authentication and authorisation, pagination and versioning.
  2. Name the Java pieces you actually used and the decision behind each: the framework, how you handled concurrency or thread safety, how you modelled data (immutable DTOs versus entities), and how you tested (unit tests for logic, integration tests against a real database or test container).
  3. Cover reliability: timeouts and retries on outbound calls, idempotency for POST or payment-like operations (an idempotency key), and what the API returns when a dependency fails. A concrete incident or bug you fixed is more convincing than a list of annotations.
  4. End with a trade-off and a retrospective, for example why you chose synchronous REST over a queue for one flow, and what you would change now. Avoid a pure technology list; every item should come with a reason.
Follow-up
  • How did you version the API or change a response without breaking existing clients?
  • A client retries a request after a timeout. How do you stop a duplicate write?
  • Which part of that Java code would you refactor today, and why?

Describe a time you had to manage a disagreement with a product manager or team member.

medium
Behavioral and Leadership

Describe a time you had to manage a disagreement with a product manager or team member.

Approach
  1. Use a situation-task-action-result outline and choose a disagreement about substance (scope, priority, technical approach, a release date), not about personality. Give the two positions fairly in a sentence each, including the other person's real constraint, such as a launch date or a customer commitment.
  2. Show what you did to resolve it with evidence rather than volume: a small prototype, a measurement, a list of risks with costs, or a smaller version of the feature that met both goals. Say how the decision was finally made and who made it.
  3. State the result and the relationship afterwards. If you lost the argument, say how you committed to the decision and what you did to reduce its risk. If you won, say what you conceded.
  4. The mistake that sinks this answer is a story where the other person is plainly wrong and you were plainly right. Show that you understood their goal and changed something because of it.
Follow-up
  • What if the product manager had overruled you and the decision turned out to be wrong?
  • What did you learn about that person's priorities that you used later?
  • How did you keep working together after the disagreement?

How do you handle tight deadlines or shifting project requirements?

medium
Behavioral and Leadership

How do you handle tight deadlines or shifting project requirements?

Approach
  1. Pick one real project where both pressures appeared. Describe the deadline or the change in requirement, then show a method: separate must-have from nice-to-have with the stakeholder, slice the work vertically so something usable ships early, and put unfinished parts behind a feature flag.
  2. Explain how you communicated. Raise the risk as soon as you saw it and offer options (cut scope, move the date, add people), rather than announcing a miss on the last day. Mention a written record of requirement changes, so later disagreement is about facts.
  3. Say what you protected under pressure: tests on the critical path, error handling, and a rollback plan. Be explicit about any shortcut you took on purpose and how you logged it and paid it down.
  4. Avoid a hero story of long hours as the whole answer. The point is judgment about what to cut and how you kept stakeholders informed.
Follow-up
  • Which feature did you cut, and who agreed to that?
  • What technical debt did you take on, and did you pay it back?
  • How do you handle a requirement that changes after the code is already in review?

Tell us about a time you took ownership of a project that was failing or stalled.

medium
Behavioral and Leadership

Tell us about a time you took ownership of a project that was failing or stalled.

Approach
  1. Start by explaining why the project was failing: unclear scope, a blocked dependency, no clear owner, a technical risk nobody had tested, or constant changes in direction. Show how you found out, for example by talking to each contributor and reviewing the backlog and the code state.
  2. Describe the reset: write down the current state, agree a single goal and the smallest next milestone, assign owners to the remaining work, and remove the top blocker yourself or by escalating with a specific request. Make progress visible with a short regular update.
  3. Give the outcome with numbers or facts, such as what shipped, what was dropped and how stability changed. If the honest result was stopping the project, say how you reached that decision and who agreed.
  4. Be specific about your part. Saying that you pushed everyone to deliver is vague; saying you split the work into three pieces, took the integration piece, and agreed a cut with the stakeholder is checkable.
Follow-up
  • How did you decide the project was worth rescuing instead of stopping it?
  • What authority did you have, and who did you need to bring in?
  • What would you have noticed earlier to prevent it stalling?

How do you provide and receive constructive feedback during code reviews?

medium
Behavioral and Leadership

How do you provide and receive constructive feedback during code reviews?

Approach
  1. Answer both halves with habits and one example each. As a reviewer: keep pull requests small, check behavior, tests, error handling, API compatibility and security first, leave style to formatters and linters, and mark each comment as blocking or optional. Ask a question when unsure and explain the reason behind a request.
  2. Phrase feedback about the code, not the person, and offer an alternative or a short snippet. Mention that you read the whole change for intent before commenting, and that praise for a good solution is part of review too.
  3. As an author: write a clear description of what changed and why, keep the diff reviewable, and respond to every comment. When you disagree, answer with evidence such as a benchmark or a failing test, and accept the point when you cannot disprove it.
  4. Include a real moment where a review caught a defect in your own code or where you changed how you work because of a comment. This covers the growth side without sounding rehearsed.
Follow-up
  • How would you give feedback on a design flaw in a much more senior colleague's change?
  • Tell me about a review comment you disagreed with and how it ended.
  • What do you do when a pull request sits waiting for review?

What draws you to the mission of Collinson specifically?

medium
Behavioral and Leadership

What draws you to the mission of Collinson specifically?

Approach
  1. Do your research before the call and then answer from it. Read Collinson's public materials and note what it does in loyalty and travel, and what kind of platform that implies for an engineer: customer-facing APIs, high traffic, integrations and moving older systems to the cloud.
  2. Link that to your own experience in two or three sentences, for example work on high-volume APIs, integrations or reliability that makes the problem space familiar. Specific connections to a real project carry more weight than praise.
  3. Add a forward-looking point about what you would want to work on or learn there, framed around the role as candidates describe it (APIs, full-stack features, production support).
  4. Do not recite a mission statement or make claims about the company that you cannot source. If you do not know something, say so and turn it into a question for the team.
Follow-up
  • What do you know about how loyalty programs or travel platforms work, and where does engineering matter most?
  • What would you want to learn or build in your first months?
  • Why this role rather than similar roles at other companies?
  • 01

    Can you walk us through your experience with Java and API development?

  • 02

    Describe a time you had to manage a disagreement with a product manager or team member.

  • 03

    How do you handle tight deadlines or shifting project requirements?

  • 04

    Tell us about a time you took ownership of a project that was failing or stalled.

  • 05

    How do you provide and receive constructive feedback during code reviews?

  • 06

    What draws you to the mission of Collinson specifically?

PracHub preparation framework ↗
How long does the interview process typically take?

Candidates report three rounds spread over about 3-5 weeks, with variation by team and region. Use that span to pace your preparation: finish the recruiter-call material first, then the hands-on API and take-home practice, then behavioral stories.

Collinson Software Engineer candidate reports ↗
Is the technical assessment purely theoretical?

Candidates describe practical tasks. Example scenarios include building a full-stack feature from a requirements document and refactoring an inefficient snippet, and the areas listed are code structure, REST API design with security, and error handling. Practise by building a small Java service and a thin front end from a written spec.

Collinson Software Engineer candidate reports ↗
What is the best way to stand out?

Candidates are advised to ask clarifying questions before solving and to explain why they chose an approach over the alternatives. In practice, restate the requirement, list your assumptions, think aloud as you work, and keep a short record of your decisions.

Collinson Software Engineer candidate reports ↗
What technology does the Software Engineer role list?

The requirements candidates describe name Java or a similar backend language, API development and Git. AWS or Azure, CI/CD pipelines and front-end frameworks are listed as extras. Prepare Java and REST design in depth, and be able to say how you have used cloud, pipelines or front-end work if you have.

Collinson Software Engineer candidate reports ↗
Should I expect a take-home or online tests?

Candidates report that the technical stage may include take-home assignments and that some stages may include psychometric or arcade-style cognitive tests. Ask your recruiter which apply. For any online test, use a quiet room and a reliable keyboard; for a take-home, work from a requirements checklist and include a README and tests.

PracHub Software Engineer practice ↗
What if I have another offer during the process?

Candidates are advised to tell their recruiter promptly if they receive another offer, since that lets the recruiter plan around your timeline. Mention it as soon as you have a date for the other decision.

PracHub Software Engineer practice ↗
Sources & methodology 3 sources ↗

No official company page is cited. Rounds and questions come from candidate reports and PracHub editorial material; each source shows the date it was read.