AIG · Software Engineer
Updated · 2026-10-02

AIG Software Engineer
Interview Guide

THE 60-SECOND BRIEF

AIG is a global insurance organization; candidates describe it as operating across roughly 190 countries and jurisdictions. Reports describe technology as part of underwriting, claims processing and defending internal systems against security threats. Candidates describe the role as building software applications for those functions. The work as candidates describe it spans enterprise integration services written with MuleSoft or Java, microservices on Spring Boot, Angular front ends that call REST services, cloud work on AWS, CI/CD pipelines, and data access across relational and NoSQL stores. Candidates describe the work as happening in Agile teams alongside product owners and IT leads.

This guide is for candidates interviewing for a Software Engineer position at AIG. It walks through the four reported rounds, gives preparation notes for the reported technical, design, coding and behavioral questions, and ends with a seven-day plan. It does not cover other AIG roles or compensation.

Candidates report four rounds over about three to five weeks: Recruiter Screening, Virtual/Panel Interviews, Technical Evaluation and Behavioral Evaluation. The format and the number of rounds may differ depending on the team, the location and the level of the role.

JavaSailPoint IdentityIQ (IGA)Identity Lifecycle Management

36 min read

Browse Software Engineer questions

See the practice prompts

18Practice promptsAcross five skill areas

The requirements candidates describe for this role combine Java or Python with object-oriented design, microservices (Spring Boot or an integration platform such as MuleSoft), hands-on work with relational and NoSQL databases, CI/CD, automated testing and Agile delivery. Nice-to-have items are AWS, Terraform, Docker, Kubernetes, Angular, cloud or integration certifications, and prior work in enterprise or financial-services settings. Use that list to decide where you need depth and where you only need to speak accurately about what you have used.

The reported questions fall into four groups. Technical and domain questions cover integration services, a MongoDB aggregation that uses preserveNullAndEmptyArrays, memory leaks in production, and secure identity lifecycle management. Design questions cover Spring Boot microservices on AWS, wiring an Angular front end to REST services, CI/CD pipeline design, and database access across relational and NoSQL stores. Behavioral questions cover working with stakeholders, deadlines against quality and technical debt, troubleshooting under pressure, and mentoring. Coding questions cover a Caesar Cipher style string task, easy-to-medium algorithm problems, unit tests that include exception paths, and a data transformation pipeline. Expect breadth, so rehearse each group, then go deep on the stack that appears on your own CV.

The topic breakdown candidates report lists Java next to SailPoint IdentityIQ, identity lifecycle management, access provisioning and deprovisioning, and entitlement management. The reported identity question is phrased in general terms, so prepare the concepts instead of a single product: how an account is created when someone joins, changed when they move teams, and removed when they leave; how entitlements are requested, approved and reviewed; and how you would prove who had access to what. If you have used an identity governance tool, say so and describe what you configured.

Candidate tips repeat three habits: say your assumptions and trade-offs aloud while you code or design, have project deep dives ready with your own contribution made clear, and mention testing and security without being asked. The plan in this guide turns those habits into daily exercises, so each day ends with something you can reread or say aloud.

01

Recruiter Screening

reported

Candidates describe the first stage as a conversation with a recruiter about your background, your interest in technology and how well you line up with the role's core technical requirements. Treat it as the point where your stack becomes visible: the requirements candidates describe name Java or Python, Spring Boot or MuleSoft, relational and NoSQL databases, CI/CD and Agile delivery, so be ready to say which of those you have used in real projects and at what depth.

What to demonstrate

  • How your background maps onto the role's core technical requirements
  • Your stated interest in technology and in this role

How to prepare

  • Write a short career walkthrough that names the languages, frameworks and data stores from your CV that match the requirements, with one concrete deliverable for each.
  • List which items from the requirements and nice-to-haves (AWS, Terraform, Docker, Kubernetes, Angular) are strong, which are working knowledge and which you have not used, and be ready to say so plainly.
  • Ask the recruiter what the technical evaluation will look like for this team, since candidates report that live coding, architecture discussion and assessment platforms vary by team.
AIG Software Engineer candidate reports ↗
02

Virtual/Panel Interviews

reported

Candidates report a series of virtual or panel interviews with hiring managers, technical leads and engineering peers. Because the audience is mixed, prepare each project twice: a short version that states the business problem and your result, and a detailed version that covers architecture, your own contribution, one design decision with its trade-off and one thing that went wrong. Rehearse your project explanations aloud instead of only rereading them.

What to demonstrate

  • Hands-on knowledge of the primary stack, shown through your past projects
  • How clearly you explain your own work to a mixed audience
  • Collaboration and culture fit, which candidates report among the criteria for this role

How to prepare

  • Build two project deep dives on a single page each: context, your role, the architecture, a trade-off you chose, a defect or incident, and the measurable outcome.
  • Explain each project aloud in your own words, short version first and detailed version second, and note where you start guessing; those gaps are your study list.
  • Prepare one example of a code review you gave or received and how it changed the code.
AIG Software Engineer candidate reports ↗
03

Technical Evaluation

reported

Candidates report a technical stage that mixes coding done live, discussion of architecture, and assessments tied to particular platforms, with HackerRank named as one example that some teams use. Prepare for both the coding side and the design side, out loud, in the language you intend to use.

What to demonstrate

  • Working code written live, including its edge cases
  • Architectural reasoning: scoping requirements, choosing components and stating trade-offs

How to prepare

  • Solve easy-to-medium problems in Java or Python in a plain editor, state the brute-force approach and its complexity first, and finish each with tests you write yourself.
  • Practise writing edge-case tests for a small string task: negative and large shift values, mixed case and non-letter characters.
  • Practise one design walkthrough per reported design topic, each ending with how you would handle failure, scaling and security.
AIG Software Engineer candidate reports ↗
04

Behavioral Evaluation

reported

Candidates describe the last stage as a behavioral evaluation centred on past projects and the way you solve problems. The reported behavioral prompts are about translating business requirements with stakeholders, balancing deadlines against quality and technical debt, troubleshooting under pressure and explaining the outcome to non-technical colleagues, and mentoring junior developers. Prepare a small set of stories where you made the decision, and be able to retell each with a different emphasis.

What to demonstrate

  • Your contribution to past projects, as you describe it
  • How you approach and explain a problem when it is unfamiliar
  • Collaboration with product owners, peers and non-technical colleagues

How to prepare

  • Write four stories in situation, action, result form, one for each reported behavioral theme, and mark the sentence in each that says what you personally did.
  • Attach one number or observable outcome to every story, such as a defect rate, a delivery date kept or a review cycle shortened.
  • Rehearse the troubleshooting-under-pressure story with two audiences: an engineer, and a stakeholder who only needs impact and next steps.
AIG Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Answering the production memory leak question with 'restart it' or 'raise the heap size'

Give a sequence: confirm heap usage keeps growing after full collections, capture a heap dump (or enable dump on out-of-memory), inspect the largest retained objects in a tool such as Eclipse MAT, and check usual causes like unbounded caches, static collections, unremoved listeners, ThreadLocals and unclosed connections. Then say how you would verify the fix.

02

Describing a MongoDB aggregation without saying what happens to documents whose array is missing, null or empty

Say that $unwind drops those documents by default. With preserveNullAndEmptyArrays: true, a document whose array is empty or missing comes out without that field, and a document where the field is null keeps it as null. Put $match first so an index can be used, and say how $lookup followed by a preserving $unwind behaves like a left outer join.

03

Writing the Caesar Cipher or another string task for the happy path only

Handle shifts that are negative or larger than 26 with modulo arithmetic, preserve case, leave non-letters unchanged, and decide what null or empty input does. Say these cases before coding and cover them in unit tests.

04

Describing unit testing as 'I aim for high coverage' with no structure

Group tests by behaviour: normal flows, boundaries, invalid input, and each exception the method can throw, asserted by type and message. Say what you mock and what you keep real, and name the framework you use.

05

Telling project and behavioral stories in 'we' terms, with no decision or result of your own

For every story, write the sentence that starts with 'I decided' or 'I built', and add one measurable outcome. Keep the situation to two sentences and spend the rest on your reasoning.

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

15 technical prompts0 include a worked solution

Can you walk through your approach to solving LeetCode easy-to-medium algorithmic coding problems?

medium
Problem-Solving and Coding

Can you walk through your approach to solving LeetCode easy-to-medium algorithmic coding problems?

Approach
  1. Clarify inputs and constraints, then work two or three examples by hand, including an edge case. The input size sets the target: with n around 10^5, an O(n^2) solution is too slow, and O(n log n) or O(n) is the goal.
  2. State the brute force and its complexity out loud, then name the pattern that improves it: a hash map for complement or frequency lookups, two pointers on sorted input, a sliding window for contiguous subarrays or substrings, binary search on a sorted or monotonic condition, BFS for shortest paths in unweighted graphs, a heap for top-k in O(n log k), and dynamic programming for overlapping subproblems.
  3. Write clean code with clear names and small helpers, then dry-run it on one example line by line before saying it is done.
  4. Give the time and space complexity of the final version, and check the edges: empty input, a single element, duplicates, negatives, and Java int overflow on sums or midpoints (use long, or lo + (hi - lo) / 2).
Follow-up
  • Can you reduce the extra space, and what does that cost in time?
  • How does the solution change if the input arrives as a stream?
  • Why is the greedy choice here correct, or show an input where it fails.

How do you structure comprehensive unit tests to cover both expected execution flows and exception scenarios?

medium
Problem-Solving and Coding

How do you structure comprehensive unit tests to cover both expected execution flows and exception scenarios?

Approach
  1. Structure every test as Arrange-Act-Assert, with one behaviour per test and a name that states the scenario and the expected result, so a failure explains itself.
  2. Choose cases by partition and boundary: a typical valid input, then null, empty, minimum, maximum and off-by-one values. In JUnit 5, @ParameterizedTest with @CsvSource or @MethodSource covers the boundary table without copy-pasted tests.
  3. For exception flows, use assertThrows, which returns the exception so its type and message can be asserted. Use Mockito's when(...).thenThrow(...) to simulate a failing dependency, and verify(...) or verifyNoInteractions to prove nothing was written or sent after the failure.
  4. Keep unit tests isolated and deterministic: mock external services, inject a java.time.Clock (Clock.fixed in tests) instead of calling now(), and move real database or HTTP checks into separate integration tests (for example with Testcontainers).
  5. Treat coverage as a signal, not the goal. JaCoCo line coverage shows code that ran, not what was asserted. Branch coverage and mutation testing (PIT) show whether the tests would actually catch a changed condition.
Follow-up
  • How do you test code that depends on the current date or time?
  • How would you test a private method?
  • A test passes locally but fails intermittently in CI. How do you track it down?

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?

The plan follows the four reported rounds and the reported question groups: stack and projects first, then integration and data, debugging and identity, coding, architecture, and finally behavioral stories. PracHub practice exercises are attached where they match the day's topic.

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 your stack
  • Write the four reported rounds in order and one line on what each stage covers: Recruiter Screening, Virtual/Panel Interviews, Technical Evaluation, Behavioral Evaluation.
  • Mark each requirement and nice-to-have (Java or Python, Spring Boot, MuleSoft, SQL and NoSQL, CI/CD, AWS, Terraform, Docker, Kubernetes, Angular) as strong, working knowledge or unused.
  • Write the short career walkthrough you would give a recruiter, naming the matching projects.

Deliverable: One page with the loop map, the stack self-rating and the written career walkthrough.

02Integration services and REST with Angular
  • Outline your answer on API development and enterprise integration services using a real project: authentication, error handling, retries, and how you tested it.
  • Sketch how an Angular front end talks to a REST backend: service layer, HTTP interceptors for auth and errors, CORS, and what the UI shows when a call fails.
  • Solve the PracHub practice exercise on turning a request body into a stable idempotency fingerprint, and relate it to retries in an integration service.

Deliverable: A written outline for each of the two reported answers plus a working solution to the practice exercise.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
03MongoDB aggregation and mixed data stores
  • Write a small collection with a missing array, a null array and an empty array, then run an aggregation with $match, $unwind and $group both with and without preserveNullAndEmptyArrays to see the difference.
  • Outline how you would manage access to both a relational database and a NoSQL store in a distributed service: where transactions are needed, how you avoid cross-store inconsistency, and which indexes matter.
  • Work through the PracHub practice exercise on detecting a concurrent edit in an update path.

Deliverable: A saved aggregation with its output for each variant, a half-page answer on mixed data stores, and the finished practice exercise.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
04Memory leaks and identity lifecycle
  • Write your memory leak sequence for a production service: confirm growth, capture a heap dump, find retained objects, form a cause, fix, verify with a repeat run.
  • Write an outline of identity lifecycle management: joiner, mover and leaver events, provisioning and deprovisioning, entitlements, access reviews and audit evidence.
  • List the terms from the reported topic breakdown (SailPoint IdentityIQ, entitlement management) and write a plain definition of each in your own words.

Deliverable: A one-page debugging runbook and a one-page identity lifecycle outline with definitions.

Practice prompt ↗Practice prompt ↗
05Coding, tests and a data pipeline
  • Implement a Caesar Cipher in Java or Python with tests for negative and large shifts, mixed case, punctuation and empty input.
  • Solve three easy-to-medium problems, saying the brute-force approach and its complexity before the improved one.
  • Write unit tests for a method that can throw: normal flows, boundaries and each exception path.
  • Outline a data transformation pipeline from a requirements list: stages, validation, bad-record handling, idempotent reruns.

Deliverable: A tested cipher, three solved problems with complexity notes, a unit test class and a pipeline outline.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
06Architecture on AWS and CI/CD
  • Design a Spring Boot microservices system on AWS out loud: service boundaries, API gateway and authentication, data stores, messaging, observability, and failure handling.
  • Write a CI/CD pipeline from commit to production: build, unit tests, security and dependency checks, packaging, staged deployment, rollback.
  • Add where Terraform, Docker and Kubernetes would fit, and say which parts you have used yourself.

Deliverable: A diagram for the microservices design and a stage-by-stage pipeline outline, each with a trade-offs list.

Practice prompt ↗Practice prompt ↗
07Behavioral stories and a full rehearsal
  • Write the four reported behavioral stories in situation, action, result form and add one measurable outcome to each.
  • Rehearse the troubleshooting-under-pressure story for an engineer and then for a non-technical stakeholder.
  • Run the full sequence aloud: career walkthrough, one project deep dive, one design question, one coding task, one behavioral story.

Deliverable: Four written stories and a full recorded rehearsal with a list of the weakest moments.

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

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

Candidates describe the final stage as a conversation about past projects and how you solve problems. For a Software Engineer the reported prompts cover working with stakeholders to turn requirements into software, weighing deadlines against code quality and technical debt, troubleshooting under pressure and explaining the result to non-technical people, and mentoring other developers. Prepare stories in which you made the decisions and can state a result. Also prepare a project deep dive of your own: your specific contribution, the main challenge and how you resolved it.

Tell me about a time when you had to collaborate with cross-functional stakeholders to translate complex busin

medium
Behavioral and Situational

Tell me about a time when you had to collaborate with cross-functional stakeholders to translate complex business requirements into technical solutions.

Approach
  1. Choose a project where the request arrived in business language and had to become something buildable, such as a rule, a workflow or a report. Name the stakeholders by function (product owner, IT lead, another team) and say what each wanted.
  2. Spend most of the answer on how you closed the gap: clarifying questions, concrete examples and edge cases written down, acceptance criteria agreed before coding, a diagram or prototype that let non-engineers react to something real.
  3. Show one moment where the first interpretation was wrong or two stakeholders conflicted, and how you resolved it, for example by laying out options with cost and risk in plain language.
  4. Close with the result and how you confirmed you built what they meant: sign-off, a demo, a metric, or a defect that never occurred. The usual mistake is a story about receiving a spec, with no translation and no conflict.
Follow-up
  • What did the stakeholders misunderstand about the technical constraints, and how did you explain it?
  • How did you handle a requirement that changed after development had started?
  • What would you do differently to catch that misunderstanding earlier?

How do you handle tight deadlines and competing priorities while maintaining high code quality and addressing

medium
Behavioral and Situational

How do you handle tight deadlines and competing priorities while maintaining high code quality and addressing technical debt?

Approach
  1. Pick a real moment where two things competed, such as a release date and a refactor, or two urgent requests from different owners. State the stakes of each in a sentence.
  2. Describe your prioritisation method: who owns the priority call, how you ranked by impact and risk, and what you negotiated. Strong answers negotiate scope or sequence, not the tests or review step.
  3. Say how you kept quality up under time pressure: tests on the riskiest paths first, a feature flag or staged rollout, a smaller reviewable change, and a short note of what was deliberately skipped.
  4. Make the technical debt explicit: a ticket with its cost and trigger, a place in the backlog, and what you paid down afterward. Finish with what shipped and what the shortcut cost. Avoid answers that rely on working nights or that claim there was no trade-off.
Follow-up
  • What would you have done if the product owner asked you to skip tests to hit the date?
  • How do you decide which technical debt is worth paying down now?
  • How did you tell stakeholders that something would slip?

How do you approach mentoring junior developers and contributing to a culture of knowledge-sharing within your

medium
Behavioral and Situational

How do you approach mentoring junior developers and contributing to a culture of knowledge-sharing within your team?

Approach
  1. Anchor the answer in one specific person: where they started, what you worked on together and what they could do alone afterward. Abstract statements about being supportive carry little weight.
  2. Describe the methods you used: pairing on a real ticket, review comments that explain the reason behind a change, tasks that grew in difficulty, and walking through a production incident together instead of fixing it yourself.
  3. Cover knowledge-sharing beyond one person: a runbook, a short architecture note, a team session or a decision record, and evidence that others used it, such as fewer repeated questions.
  4. Be honest about cost and a miss: it took your own time, and something did not work at first, such as doing too much for the person. Say what you changed. The usual mistake is a story in which you solve the problem and the junior only watches.
Follow-up
  • How do you handle a junior developer who keeps repeating the same mistake?
  • How do you give review feedback to someone more senior than you?
  • How do you know whether the documentation you wrote is being used?
  • 01

    Tell me about a time when you had to collaborate with cross-functional stakeholders to translate complex business requirements into technical solutions.

  • 02

    How do you handle tight deadlines and competing priorities while maintaining high code quality and addressing technical debt?

  • 03

    Can you describe a situation where you had to troubleshoot a complex technical issue under pressure and communicate the resolution to non-technical team members?

  • 04

    How do you approach mentoring junior developers and contributing to a culture of knowledge-sharing within your team?

PracHub preparation framework ↗
How many rounds are there and how long does the process take?

Candidates report four rounds over about three to five weeks: Recruiter Screening, Virtual/Panel Interviews, Technical Evaluation and Behavioral Evaluation. The format and the number of rounds may differ by team, location and level of the role, so ask your recruiter what applies to you.

PracHub Software Engineer practice ↗
What does the Technical Evaluation include?

Candidates report that this stage mixes coding done live, discussion of architecture, and assessments tied to particular platforms, with HackerRank named for some teams. Get ready to write and test code in Java or Python and to talk through a design and its trade-offs.

PracHub Software Engineer practice ↗
Which technologies should I review?

The requirements candidates describe list Java or Python, object-oriented design, Spring Boot or MuleSoft, relational and NoSQL databases, CI/CD and automated testing. AWS, Terraform, Docker, Kubernetes and Angular appear as nice-to-haves. Review the ones on your CV in depth and be able to say honestly what you have not used.

PracHub Software Engineer practice ↗
Do I need to know SailPoint or identity management?

The topic breakdown candidates report lists SailPoint IdentityIQ, identity lifecycle management, access provisioning and deprovisioning, and entitlement management. The reported question is general, so learn the concepts: joiner, mover and leaver events, entitlements, approvals, access reviews and audit trails. If you have used a governance tool, describe what you configured.

PracHub Software Engineer practice ↗
What kind of coding problems are reported?

Candidates report a Caesar Cipher or similar string manipulation task, easy-to-medium algorithmic problems, unit tests that cover both normal and exception flows, and a data transformation pipeline to architect. Practise stating edge cases first, testing your own code and explaining complexity.

PracHub Software Engineer practice ↗
How should I prepare for the behavioral round?

Prepare stories for the four reported themes: stakeholders and requirements, deadlines against quality and technical debt, troubleshooting under pressure, and mentoring. Use a situation, action, result structure, make your own decisions clear, and add one measurable outcome to each.

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.