cswork / libraryOpen practice workspace

Interview guides · Exl

Exl Software Engineer Interview Guide

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

The 60-second brief

A Software Engineer at Exl is a critical technical contributor responsible for building, maintaining, and scaling the data-driven solutions that power our clients' business outcomes. You will sit at the intersection of complex software development and advanced analytics, often working on high-stakes projects that involve cloud infrastructure, data pipelines, and intelligent automation. Whether you are developing robust backend services in Java, building scalable Python applications, or integrating Generative AI and RAG architectures, your work directly enables the digital transformation initiatives that define our market leadership. This role is not just about writing code; it is about solving business problems through technical excellence.

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

Focus areas

  • Data Structures & Algorithms (DSA)
  • Java
  • Power BI

The Exl interview process

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

Recruiter Screen

Initial screening by a recruiter to assess candidate fit and qualifications.

What to demonstrate

  • Initial screening by a recruiter to assess candidate fit and qualifications
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

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

Online Aptitude Tests

Candidates complete a series of online tests to evaluate their aptitude.

What to demonstrate

  • Candidates complete a series of online tests to evaluate their aptitude
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Answer aloud and timed: What are the core components of a RAG architecture, and how do you handle webhook integration for simple automation?
  • Answer aloud and timed: Can you explain the concept of query folding in the context of ETL pipelines?

Technical Coding Rounds

Multiple rounds of technical coding interviews to assess programming skills.

What to demonstrate

  • Multiple rounds of technical coding interviews to assess programming skills
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Answer aloud and timed: How do you implement asynchronous processing in Apex, and when would you choose Queueable over Batch Apex?
  • Answer aloud and timed: How would you design a scalable serverless API implementation using an API gateway?

Behavioral Discussions

Discussions focused on candidate's experiences and teamwork capabilities.

What to demonstrate

  • Discussions focused on candidate's experiences and teamwork capabilities
  • Depth in Data Structures & Algorithms (DSA)

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 discussions above and write down what you would ask to confirm before it.

Final Technical and Managerial Rounds

Final assessments involving both technical and managerial interviews.

What to demonstrate

  • Final assessments involving both technical and managerial interviews
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Answer aloud and timed: How do you ensure end-to-end functionality when testing a web application that integrates multiple APIs?
  • Answer aloud and timed: Tell me about a time you had to handle a tight deadline; how did you prioritize your tasks?

Where candidates lose points

Structure your answers

Use the STAR method (Situation, Task, Action, Result) to keep your behavioral responses concise and impactful.

Think out loud

During coding or design rounds, talk through your thought process. This helps the interviewer understand your logic even if you get stuck.

Prepare questions for us

Always have 2–3 thoughtful questions prepared about the team's current challenges, the tech stack, or the company's engineering culture.

Focus on basics

Many candidates struggle with foundational concepts like networking basics (DNS), OOPS, or core language features. Ensure these are solid.

Questions & practice

Can you explain the difference between a process and a thread, and how you manage them in a kernel environment

Medium · Technical & Domain Expertise

Can you explain the difference between a process and a thread, and how you manage them in a kernel environment?

Approach

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

Follow-up

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

How do you implement asynchronous processing in Apex, and when would you choose Queueable over Batch Apex?

Medium · Technical & Domain Expertise

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?

Canonicalise a request body into a stable idempotency fingerprint

Medium · parsing · canonicalisation · hashing

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?

How do you optimize a SQL query to ensure it performs efficiently under heavy load?

Medium · Technical & Domain Expertise

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?

Can you explain the concept of query folding in the context of ETL pipelines?

Medium · Technical & Domain Expertise

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?

What are the core components of a RAG architecture, and how do you handle webhook integration for simple autom

Medium · Technical & Domain Expertise

What are the core components of a RAG architecture, and how do you handle webhook integration for simple automation?

Approach

  1. Say who the caller is and what they do when the call fails halfway.
  2. Define the identity of a request so a retry cannot double-apply it.
  3. Separate accepted, pending, failed and confirmed; they are different facts.
  4. Design the error taxonomy before the success shape; callers branch on it.

Follow-up

  • What happens if the caller retries after a timeout?
  • How does a client discover it is on an old version of this contract?

How would you design a scalable serverless API implementation using an API gateway?

Medium · Problem-Solving & System Design

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?

Can you walk me through your process for planning a cloud-based architecture for a high-traffic application?

Medium · Problem-Solving & System Design

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?

How do you ensure end-to-end functionality when testing a web application that integrates multiple APIs?

Medium · Problem-Solving & System Design

Approach

  1. Say who the caller is and what they do when the call fails halfway.
  2. Define the identity of a request so a retry cannot double-apply it.
  3. Separate accepted, pending, failed and confirmed; they are different facts.
  4. Design the error taxonomy before the success shape; callers branch on it.

Follow-up

  • What happens if the caller retries after a timeout?
  • How does a client discover it is on an old version of this contract?

Every query on one table stalls for forty seconds mid-deploy

Medium · lock contention · ddl · migrations

During a release on PostgreSQL, every query touching resource times out for about 40 seconds and then recovers with no intervention. The release ran one migration, ALTER TABLE resource ADD COLUMN archived_reason TEXT, and the migration log shows it completing in 6 ms. Unrelated tables showed no change in error rate. Explain how a 6 ms statement caused a 40-second stall, give the ordered checks you would run on a live system to confirm it, and give the migration procedure that prevents a repeat.

Approach

  1. Separate the statement's duration from the lock's duration. ADD COLUMN with no default is a catalogue-only change and genuinely runs in milliseconds, but it requires ACCESS EXCLUSIVE, and it cannot acquire that until every transaction already touching the table has finished.
  2. Account for the queueing, which is the part that surprises people. A lock request that is waiting blocks later requests for conflicting modes behind it rather than letting them overtake, so one long-open transaction holds the DDL and the DDL holds all the traffic. The stall length is set by the longest open transaction, not by the size of the change.
  3. Confirm on a live system in this order: pg_stat_activity for that table ordered by xact_start, looking for the oldest transaction and specifically for state = idle in transaction; then pg_locks where granted = false to find the waiter; then join them on pid to name blocker and blocked. pg_blocking_pids() does that join for you and is the fastest single call.
  4. Prevent rather than merely time it better. Set lock_timeout to a second or two on the migration session so the DDL abandons the queue after a bounded wait and is retried, instead of holding it for as long as the oldest transaction lives. Be exact about what that buys: queries arriving during the wait still queue behind the pending ACCESS EXCLUSIVE request, so each attempt costs them up to one lock_timeout of added latency. The outage goes from 40 seconds to about one second per attempt, not to zero. Also run migrations away from deploy-time peaks, and put a statement timeout and an idle-in-transaction timeout on the analytics role that opens the long transactions.

Follow-up

  • The same release also wants NOT NULL on that column. What is the sequence that gets there without a long lock?
  • Your lock_timeout retry fails ten times in a row because the analytics transaction is always open. What do you change?

Suggested practice checklist

Built from the rounds and topics Exl candidates report.

Day 1 — Map the Exl loop

  • Write out the reported sequence: Recruiter Screen, Online Aptitude Tests, Technical Coding Rounds, Behavioral Discussions, Final Technical and Managerial Rounds.
  • For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.

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

Day 2 — Work Data Structures & Algorithms (DSA)

  • Spend the session on Data Structures & Algorithms (DSA), which Exl 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 Java

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

Deliverable: One timed worked example in Java.

Day 4 — Work Power BI

  • Spend the session on Power BI, which Exl candidates report being tested on.
  • Write one worked example in Power BI and time yourself on it.

Deliverable: One timed worked example in Power BI.

Day 5 — Answer out loud: Technical & Domain Expertise

  • Answer aloud, timed: Can you explain the difference between a process and a thread, and how you manage them in a kernel environment?
  • Answer aloud, timed: How do you optimize a SQL query to ensure it performs efficiently under heavy load?

Deliverable: Spoken answers to 2 reported Technical & Domain Expertise question(s), under time.

Day 6 — Answer out loud: Problem-Solving & System Design

  • Answer aloud, timed: How would you design a scalable serverless API implementation using an API gateway?
  • Answer aloud, timed: Given a scenario with multiple microservices, how do you handle DNS and networking troubleshooting?

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

Day 7 — Answer out loud: Behavioral & Leadership

  • Answer aloud, timed: Tell me about a time you had to handle a tight deadline; how did you prioritize your tasks?
  • Answer aloud, timed: How do you approach explaining complex technical concepts to non-technical stakeholders?

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

Behavioural preparation

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

Given a scenario with multiple microservices, how do you handle DNS and networking troubleshooting?

Medium · Problem-Solving & System Design

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 handle a tight deadline; how did you prioritize your tasks?

Medium · Behavioral & Leadership

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 approach explaining complex technical concepts to non-technical stakeholders?

Medium · Behavioral & Leadership

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 encountered a technical challenge you hadn't faced before; what steps did you t

Medium · Behavioral & Leadership

Describe a situation where you encountered a technical challenge you hadn't faced before; what steps did you take to 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?