MarshBerry · Software Engineer
Updated · 2026-10-02

MarshBerry Software Engineer
Interview Guide

THE 60-SECOND BRIEF

As a Software Engineer at MarshBerry, you are at the intersection of high-stakes financial consulting and sophisticated data technology. MarshBerry is a leader in the insurance and financial services industry, and the engineering team is tasked with building the platforms that drive business intelligence, M&A advisory, and performance benchmarking for their clients. Your work directly impacts how industry leaders make data-driven decisions that shape the future of the insurance market. This role requires more than just technical proficiency; it demands a deep curiosity about how your code creates value for business stakeholders. You will be responsible for designing and maintaining robust, scalable systems that handle sensitive financial data, ensuring that MarshBerry remains at the forefront of digital transformation in its sector.

This guide is scoped to a Software Engineer candidate at MarshBerry.

MarshBerry candidates report 3 rounds over 3-5 weeks. The stages below are what candidates describe, not a published process.

JavaGenerative AIBackend Engineering

22 min read

Browse Software Engineer questions

See the practice prompts

17Practice promptsAcross five skill areas

As a Software Engineer at MarshBerry, you are at the intersection of high-stakes financial consulting and sophisticated data technology. MarshBerry is a leader in the insurance and financial services industry, and the engineering team is tasked with building the platforms that drive business intelligence, M&A advisory, and performance benchmarking for their clients. Your work directly impacts how industry leaders make data-driven decisions that shape the future of the insurance market. This role requires more than just technical proficiency; it demands a deep curiosity about how your code creates value for business stakeholders. You will be responsible for designing and maintaining robust, scalable systems that handle sensitive financial data, ensuring that MarshBerry remains at the forefront of digital transformation in its sector. You will likely work on full-stack or backend initiatives that require a balance of clean code, architectural foresight, and a collaborative mindset within cross-functional teams. ##### Tip While the role is technical, MarshBerry highly values engineers who can translate complex business requirements into elegant software solutions. Focus your preparation on both your coding ability and your capacity to understand the 'why' behind the software you build.

01

Initial Screening

reported

Gauge your background and interest in the position.

What to demonstrate

  • Gauge your background and interest in the position
  • Depth in Java

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.
MarshBerry Software Engineer candidate reports ↗
02

Technical Deep Dives

reported

Engage in a series of technical assessments including live coding and system design discussions.

What to demonstrate

  • Engage in a series of technical assessments including live coding and system design discussions
  • Depth in Java

How to prepare

  • Answer aloud and timed: Describe a time you had to optimize a slow-running query or backend service.
  • Answer aloud and timed: What strategies do you use for ensuring data consistency in a distributed system?
MarshBerry Software Engineer candidate reports ↗
03

Behavioral Interviews

reported

Participate in interviews with peers and leadership to assess cultural fit.

What to demonstrate

  • Participate in interviews with peers and leadership to assess cultural fit
  • Depth in Java

How to prepare

  • Prepare three examples from your own work, each with a decision you made and an outcome you can quantify.
  • Re-read the description of the behavioral interviews above and write down what you would ask to confirm before it.
MarshBerry Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Structure your answers

Use the STAR method for all behavioral questions to keep your responses concise and impactful.

02

Be honest about what you don't know

If you encounter a question you aren't sure about, talk through your thought process rather than guessing.

03

Ask meaningful questions

At the end of your interview, ask about the team’s current technical challenges or the product roadmap to show you are already thinking like a member of the team.

04

Focus on the business impact

Whenever possible, link your technical decisions to the business value they provide.

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

13 technical prompts0 include a worked solution

Collapse a redelivered event batch into per-aggregate high-water marks

easy
hashingat-least-onceaggregation

You drain a batch of up to 5,000,000 events, each (aggregate_id BIGINT, aggregate_version INT, event_type, payload). The log guarantees order within one aggregate only; the batch merges 64 partitions, and a relay failover has redelivered a range, so an older version for an aggregate can appear after a newer one. Given a map of last_applied_version per aggregate, produce the events worth applying, at most one per (aggregate_id, version), plus the count discarded. Target O(n) time. State the memory for 2,000,000 distinct aggregates and what you do when it does not fit.

Approach
  1. One pass, one hash map from aggregate_id to the highest version kept, and a discard counter. An event whose version is at or below last_applied_version for its aggregate is dropped without further work, which is the whole reason the event carries its version rather than a delta. O(n) expected time, O(d) space in distinct aggregates.
  2. Keep the maximum, never the last occurrence. The redelivered range means the final appearance of an aggregate in the batch can be an older version than one seen earlier in the same batch, so last-wins applies stale state over newer state and the projection regresses with no error anywhere.
  3. Cost the memory instead of calling it large: an 8-byte key plus a 4-byte version is 12 bytes of payload, and an open-addressed table held at a 0.7 load factor costs roughly 17 bytes per entry before per-slot metadata, so 2,000,000 aggregates is tens of megabytes in a native layout and several times that in a runtime that boxes both key and value.
  4. If the distinct set exceeds memory, partition on hash(aggregate_id) mod P and reduce each partition independently. Every event for one aggregate hashes to the same partition, so the per-partition result is exact and the merge is concatenation rather than a second reduction.
Follow-up
  • The payload is a patch rather than a snapshot, so applying only the highest version loses the intermediate changes. What changes in your reduction?
  • How do you detect that version 7 arrived while version 6 was never delivered, and what should the consumer do about the gap?

Track a rolling failure rate per destination for circuit decisions

easy
sliding windowring buffercircuit breaker

The egress service delivers about 1,500 webhooks per second across roughly 40,000 destinations, each call bounded by a 10 second timeout. Maintain, per destination, the failure rate over the trailing 60 seconds so a caller can ask before dispatch whether the circuit should open. Attempts arrive as (destination_id, finished_at_ms, outcome). Requirement: amortised O(1) per attempt, with total memory bounded by the destination count rather than by traffic. Give the structure, its exact memory, and the rule that stops a destination with three attempts from opening a circuit.

Approach
  1. Name the exact-deque version and then reject it as the default. Holding timestamps and advancing a tail pointer past anything older than now minus 60 seconds is a correct two-pointer window at amortised O(1) per attempt, but its memory tracks in-window traffic, so one destination in a retry storm holds hundreds of thousands of entries while thousands of quiet destinations hold none.
  2. Use a ring of 60 one-second buckets per destination, each bucket a pair of counters for attempts and failures. On an attempt, advance the ring by the elapsed whole seconds, zeroing at most min(elapsed, 60) buckets, then increment the head. That is amortised O(1) with a fixed footprint per destination.
  3. State the footprint: 60 buckets times two 4-byte counters is 480 bytes of payload per destination, so 40,000 destinations is roughly 20 to 25 MB with per-entry overhead, bounded by the catalogue rather than by the rate. The cost is granularity, since the oldest bucket ages out in whole seconds, which is far tighter than the decision needs.
  4. Require a minimum sample before the circuit may open. A destination with three attempts and three failures reads as 100 percent and is not evidence; a floor of roughly 20 attempts in the window makes the ratio meaningful, and below that floor use a run of consecutive failures as the trigger instead.
Follow-up
  • The fleet is 30 instances and each sees roughly a thirtieth of a destination's traffic. Where does the rate actually live, and what does a per-instance answer get wrong?
  • A destination answers in 9.5 seconds and succeeds. It is not failing but it is consuming your per-destination concurrency. What signal should open the circuit here?

Find overlapping job attempts and peak concurrency from lease records

medium
sweep lineintervalsleases

A day of job_run history yields about 50,000,000 attempt records: (job_run_id, job_type, attempt, started_at, finished_at which is NULL when the worker died, lease_expires_at). Leases expire on a clock, so a job that outran its lease ran twice. Produce (a) every job_run_id whose attempts overlapped in wall-clock time and (b) the peak number of simultaneously running attempts per job_type with the minute it occurred. Target O(n log n). State how you treat a NULL finished_at and what clock skew does to your answer.

Approach
  1. Define the interval before sorting anything: an attempt occupies [started_at, COALESCE(finished_at, lease_expires_at)). finished_at is observed and lease_expires_at is only a promise, so every attempt without a finish contributes an estimate and the whole result is a lower bound on overlap rather than an exact count.
  2. For peak concurrency, sweep: emit 2n endpoints, sort by (timestamp, kind) with ends ordered before starts at equal timestamps, then walk the sequence maintaining a counter per job_type and record each type's maximum with its timestamp. O(n log n) dominated by the sort, O(n) space, or O(1) extra if the sort is external and the walk streams.
  3. For overlap detection, do not compare attempts pairwise. A single global sort by (job_run_id, started_at) gives both the grouping and the order; within a group, keep the maximum end seen so far and report an overlap exactly when the next start is less than that running maximum, which is one linear pass after the sort.
  4. Half-open intervals matter and are easy to get wrong: with closed intervals an attempt ending at the same millisecond another begins reads as concurrency two, and across 50,000,000 records that artefact swamps the real signal.
Follow-up
  • A handler is not idempotent and you have found 400 overlapping jobs. Which of them actually caused damage, and what would you query to find out?
  • Peak concurrency for one job_type is 4 against a configured cap of 4. Is the cap working, or is the data hiding attempts that never started?

Built from the rounds and topics MarshBerry candidates report.

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 MarshBerry loop
  • Write out the reported sequence: Initial Screening, Technical Deep Dives, Behavioral Interviews.
  • 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 3 reported rounds, with the weakest marked.

02Work Java
  • Spend the session on Java, which MarshBerry candidates report being tested on.
  • Write one worked example in Java and time yourself on it.

Deliverable: One timed worked example in Java.

03Work Generative AI
  • Spend the session on Generative AI, which MarshBerry candidates report being tested on.
  • Write one worked example in Generative AI and time yourself on it.

Deliverable: One timed worked example in Generative AI.

04Work Backend Engineering
  • Spend the session on Backend Engineering, which MarshBerry candidates report being tested on.
  • Write one worked example in Backend Engineering and time yourself on it.

Deliverable: One timed worked example in Backend Engineering.

05Answer out loud: Technical Proficiency and Backend Engineering
  • Answer aloud, timed: Explain the trade-offs between different database architectures in a high-concurrency environment.
  • Answer aloud, timed: How do you approach designing a RESTful API that is both secure and performant?

Deliverable: Spoken answers to 2 reported Technical Proficiency and Backend Engineering question(s), under time.

06Answer out loud: System Design and Architecture
  • Answer aloud, timed: How would you design a system to aggregate and visualize large datasets for client reporting?
  • Answer aloud, timed: Walk me through the architecture of a recent project you led. What were the biggest technical hurdles?

Deliverable: Spoken answers to 2 reported System Design and Architecture question(s), under time.

07Answer out loud: Behavioral and Leadership
  • Answer aloud, timed: Tell me about a time you had to explain a complex technical issue to a non-technical stakeholder.
  • Answer aloud, timed: Describe a situation where you disagreed with a peer on a technical approach. How did you resolve it?

Deliverable: Spoken answers to 2 reported Behavioral and Leadership question(s), under time.

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

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

Describe a time you had to optimize a slow-running query or backend service.

medium
Technical Proficiency and Backend Engine

Describe a time you had to optimize a slow-running query or backend service.

Approach
  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.
Follow-up
  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Tell me about a time you had to explain a complex technical issue to a non-technical stakeholder.

medium
Behavioral and Leadership

Tell me about a time you had to explain a complex technical issue to a non-technical stakeholder.

Approach
  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.
Follow-up
  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Describe a situation where you disagreed with a peer on a technical approach. How did you resolve it?

medium
Behavioral and Leadership

Describe a situation where you disagreed with a peer on a technical approach. How did you resolve it?

Approach
  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.
Follow-up
  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

How do you balance the need for shipping features quickly with the need for long-term code quality?

medium
Behavioral and Leadership

How do you balance the need for shipping features quickly with the need for long-term code quality?

Approach
  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.
Follow-up
  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?
  • 01

    Describe a time you had to optimize a slow-running query or backend service.

  • 02

    Tell me about a time you had to explain a complex technical issue to a non-technical stakeholder.

  • 03

    Describe a situation where you disagreed with a peer on a technical approach. How did you resolve it?

  • 04

    How do you balance the need for shipping features quickly with the need for long-term code quality?

PracHub preparation framework ↗
How difficult are the technical interviews?

They are challenging but fair. They focus on practical engineering problems rather than obscure academic puzzles, so focus on real-world application.

MarshBerry Software Engineer candidate reports ↗
How much time should I spend preparing?

Most successful candidates spend 2–4 weeks of consistent, focused practice, especially if they need to brush up on system design or specific language patterns.

MarshBerry Software Engineer candidate reports ↗
Does MarshBerry value candidates from non-traditional backgrounds?

Yes, MarshBerry values character and problem-solving ability as much as formal experience. If you can demonstrate that you have the skills and the drive to learn, you are a strong candidate.

MarshBerry Software Engineer candidate reports ↗
What is the company culture like for engineers?

It is collaborative and mission-driven. You will work in a fast-paced environment where your work has a direct impact on the success of the business and its clients.

MarshBerry Software Engineer candidate reports ↗
What topics does MarshBerry test in interviews?

MarshBerry interviews most often cover SQL, Backend Engineering, Java, PostgreSQL, and Relational Databases. The exact emphasis depends on the specific role you apply for.

MarshBerry Software Engineer candidate reports ↗
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.