cswork / libraryOpen practice workspace

Interview guides · Milliman

Milliman Software Engineer Interview Guide

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

The 60-second brief

As a Software Engineer at Milliman, you are not just writing code; you are building the technological foundation for one of the world’s largest providers of actuarial, risk management, and related technology solutions. Milliman products and services protect the financial well-being of millions of people worldwide. The software you develop directly impacts how healthcare systems manage risk, how pension funds secure retirements, and how financial institutions hedge complex market exposures. Unlike traditional tech companies where software is often consumer-facing or advertising-driven, Milliman engineering centers on high-precision, high-scale mathematical computations, data pipeline integrity, and complex domain logic. You will work on sophisticated calculation engines, cloud-based SaaS platforms, and advanced analytical tools.

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

Focus areas

  • Data Structures & Algorithms (DSA)
  • Problem Solving (Logic)
  • Object-Oriented Programming (OOP)

The Milliman interview process

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

Recruiter Screen

Initial discussion to align on background, technical stack preferences, and compensation expectations.

What to demonstrate

  • Initial discussion to align on background, technical stack preferences, 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.

Technical Screening

May include a technical video call, online coding assessment, or take-home programming test.

What to demonstrate

  • May include a technical video call, online coding assessment, or take-home programming test
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Answer aloud and timed: What is the difference between an abstract class and an interface, and when would you choose one over the other in a system architecture?
  • Answer aloud and timed: Explain how garbage collection works in your preferred language (e.g., Java or C#), and how you prevent memory leaks in long-running applications.

Final Round

Comprehensive in-person or virtual loop lasting three to four hours with multiple panels covering technical and behavioral topics.

What to demonstrate

  • Comprehensive in-person or virtual loop lasting three to four hours with multiple panels covering technical and behavioral topics
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Answer aloud and timed: How do you handle exception propagation in asynchronous code blocks?
  • Answer aloud and timed: Write a console program that reads a structured text file, applies different selection and calculation strategies based on file headers, and outputs a formatted summary.

Where candidates lose points

Clarify the Tech Stack Early

Because Milliman's offices operate independently, one team might be a dedicated C#/.NET shop while another is purely Java or C++. Ask your recruiter during the initial call which technologies the team uses so you can tailor your language-specific preparation.

Do not attempt to fake knowledge of a specific language or framework

If you are a Java developer interviewing for a C# role, be honest about your background. Milliman interviewers value strong OOP fundamentals and problem-solving over memorized syntax, but they will quickly catch inconsistencies if you try to overstate your experience with a specific tool.

Over-Communicate During Coding Sessions

When completing a live coding exercise or discussing a design, talk through your thought process. Explain the trade-offs of your approach, why you chose a specific data structure, and how you plan to handle potential edge cases.

Prepare Your Professional Narrative

If you are interviewing at an office that uses the Topgrading methodology (such as Brookfield or Milwaukee), spend time reviewing your resume chronologically. Be ready to discuss your managers, your specific contributions, and the exact reasons for your career transitions.

Questions & practice

How does recursion work under the hood? Explain this concept as if you were explaining it to your grandmother.

Medium · Object-Oriented Programming (OOP) & Core

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 garbage collection works in your preferred language (e.g., Java or C#), and how you prevent memory

Medium · Object-Oriented Programming (OOP) & Core

Explain how garbage collection works in your preferred language (e.g., Java or C#), and how you prevent memory leaks in long-running applications.

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 a console program that reads a structured text file, applies different selection and calculation strateg

Medium · Coding & Problem-Solving

Write a console program that reads a structured text file, applies different selection and calculation strategies based on file headers, and outputs a formatted summary.

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 a matrix of data representing financial transactions, write an algorithm to identify anomalous patterns

Medium · Coding & Problem-Solving

Given a matrix of data representing financial transactions, write an algorithm to identify anomalous patterns or duplicate entries within a specific sliding time window.

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?

Implement a custom data structure that supports insert, delete, and get-random operations in O(1) time.

Medium · Coding & Problem-Solving

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?

Solve a medium-difficulty array or string manipulation puzzle, and write the corresponding unit tests to valid

Medium · Coding & Problem-Solving

Solve a medium-difficulty array or string manipulation puzzle, and write the corresponding unit tests to validate edge cases (such as null inputs, empty bounds, and overflow limits).

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?

Walk through how you would optimize a nested-loop calculation engine that is currently bottlenecked by CPU con

Medium · Coding & Problem-Solving

Walk through how you would optimize a nested-loop calculation engine that is currently bottlenecked by CPU constraints.

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 a SQL query utilizing window functions to find the top three highest-value transactions per department f

Medium · SQL & Data Management

Write a SQL query utilizing window functions to find the top three highest-value transactions per department for each month.

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 the concept of database normalization (up to 3NF) and discuss a scenario where you would intentionally

Medium · SQL & Data Management

Explain the concept of database normalization (up to 3NF) and discuss a scenario where you would intentionally denormalize a schema for performance gains.

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 the four pillars of Object-Oriented Programming and provide a real-world example of how you have used

Medium · Object-Oriented Programming (OOP) & Core

Explain the four pillars of Object-Oriented Programming and provide a real-world example of how you have used encapsulation to protect state in a recent project.

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?

What is the difference between an abstract class and an interface, and when would you choose one over the othe

Medium · Object-Oriented Programming (OOP) & Core

What is the difference between an abstract class and an interface, and when would you choose one over the other in a system architecture?

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

Explain the difference between a clustered and a non-clustered index. How do indexes impact read performance v

Medium · SQL & Data Management

Explain the difference between a clustered and a non-clustered index. How do indexes impact read performance versus write performance?

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 would you design a database schema to support a multi-tenant healthcare application where data privacy and

Medium · SQL & Data Management

How would you design a database schema to support a multi-tenant healthcare application where data privacy and strict isolation are required?

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

Walk us through your most complex project, explaining the architectural decisions you made, the trade-offs inv

Medium · Behavioral & Scenario-Based

Walk us through your most complex project, explaining the architectural decisions you made, the trade-offs involved, and what you would do differently today.

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

Edge instances grow 400 MB per hour until the nightly restart

Hard · memory leak · heap analysis · metric cardinality

Edge API instances start at 700 MB resident and grow about 400 MB/hour; a nightly rolling restart has hidden it for weeks. Growth continues unchanged when request rate halves overnight, p99 degrades in the last hours before an instance is recycled, and heap used immediately after a forced full GC rises monotonically. The service holds no product state. Name the discriminating measurement that separates the plausible causes, give the most likely cause, and give the fix and how you would verify it.

Approach

  1. Separate resident memory from live heap first, because they fail differently. Resident size can grow from fragmentation, native buffers or thread stacks while the heap is flat; heap used after a full GC rising monotonically is the measurement that says objects are reachable and not being released. You already have it, so this is retention, not fragmentation, and that closes off half the candidate list.
  2. Use the rate's independence from traffic as the discriminator. Growth that continues at half the request rate rules out per-request objects that are merely slow to collect and points at a structure that grows with distinct values observed rather than with call volume. Write the candidates that have that property: a metrics registry keyed on a high-cardinality label, an unevicted cache, an interner, a per-key lock map.
  3. Take two heap snapshots an hour apart and diff by retained size, reading the dominator tree, not by allocation count or instance count. Expect one root holding a map with millions of entries, then follow the reference chain to the code that inserts and never removes. Allocation profilers point at churn, which is the wrong signal here.
  4. The candidate that fits this service is an observability label carrying an identifier, such as a request path recorded before templating so that /v1/resources/48213 becomes its own metric series. That grows with distinct ids seen, is independent of rate, and explains the late p99 degradation, since GC cost rises with the size of the live set.

Follow-up

  • Post-GC heap is now flat but resident size still creeps. What are you looking at, and does it matter?
  • How would you have detected this before an OOM, given the nightly restart masked the trend?

Suggested practice checklist

Built from the rounds and topics Milliman candidates report.

Day 1 — Map the Milliman loop

  • Write out the reported sequence: Recruiter Screen, Technical Screening, Final Round.
  • 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.

Day 2 — Work Data Structures & Algorithms (DSA)

  • Spend the session on Data Structures & Algorithms (DSA), which Milliman 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 Problem Solving (Logic)

  • Spend the session on Problem Solving (Logic), which Milliman candidates report being tested on.
  • Write one worked example in Problem Solving (Logic) and time yourself on it.

Deliverable: One timed worked example in Problem Solving (Logic).

Day 4 — Work Object-Oriented Programming (OOP)

  • Spend the session on Object-Oriented Programming (OOP), which Milliman candidates report being tested on.
  • Write one worked example in Object-Oriented Programming (OOP) and time yourself on it.

Deliverable: One timed worked example in Object-Oriented Programming (OOP).

Day 5 — Answer out loud: Object-Oriented Programming (OOP) & Core CS

  • Answer aloud, timed: Explain the four pillars of Object-Oriented Programming and provide a real-world example of how you have used encapsulation to protect state in a recent project.
  • Answer aloud, timed: How does recursion work under the hood? Explain this concept as if you were explaining it to your grandmother.

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

Day 6 — Answer out loud: Coding & Problem-Solving

  • Answer aloud, timed: Write a console program that reads a structured text file, applies different selection and calculation strategies based on file headers, and outputs a formatted summary.
  • Answer aloud, timed: Given a matrix of data representing financial transactions, write an algorithm to identify anomalous patterns or duplicate entries within a specific sliding time window.

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

Day 7 — Answer out loud: SQL & Data Management

  • Answer aloud, timed: Write a SQL query utilizing window functions to find the top three highest-value transactions per department for each month.
  • Answer aloud, timed: Explain the difference between a clustered and a non-clustered index. How do indexes impact read performance versus write performance?

Deliverable: Spoken answers to 2 reported SQL & Data Management question(s), under time.

Behavioural preparation

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

How do you handle exception propagation in asynchronous code blocks?

Medium · Object-Oriented Programming (OOP) & Core

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 time when you had to work with a non-technical stakeholder (like an actuary or business analyst) wh

Medium · Behavioral & Scenario-Based

Describe a time when you had to work with a non-technical stakeholder (like an actuary or business analyst) who provided ambiguous requirements. How did you clarify the scope?

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?

What is your most controversial technical take, and how do you defend it?

Medium · Behavioral & Scenario-Based

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 think the rapid advancement of generative AI will impact the future of software engineering and dat

Medium · Behavioral & Scenario-Based

How do you think the rapid advancement of generative AI will impact the future of software engineering and data security?

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?