American Express interview questions & answers

20 real American Express interview questions with full model answers — Technical, Behavioral, System design, Coding. Drawn from the same verified bank ChannelPulse drills from (81 American Express questions in total).

BehavioralMediumAmerican ExpressGroup Product Manager

1. What leadership qualities would you bring to American Express?

Model answer

Situation

In a Group Product Manager role, I would bring leadership shaped by building customer-centered products in complex, cross-functional environments. For example, when several teams were working on separate parts of a customer journey, I helped align them around a shared outcome rather than optimizing individual roadmaps. The challenge was balancing customer value, commercial goals, regulatory obligations, and the realities of delivery.

Task

At American Express, I would aim to help teams deliver trusted, differentiated experiences while developing strong product leaders and creating alignment across a broad organization. I would bring the qualities below, and ground them in a specific example from my own career in an interview.

Action

  • Customer and colleague empathy: I would use research and behavioral data to understand cardmembers, merchants, and colleagues—not assume one experience fits all. In a past initiative, I brought support-contact themes into roadmap reviews so the team could see where a seemingly small product friction created real customer effort.
  • Enterprise thinking: I would connect product decisions to outcomes across the network: customer value, merchant acceptance, revenue, risk, and operational cost. I would make dependencies explicit and avoid shifting problems from one team or channel to another.
  • Decisive, evidence-led judgment: I would distinguish reversible choices from high-risk decisions, state assumptions, and make a recommendation even when data is incomplete. I would use experiments where appropriate, while respecting privacy, security, and regulatory constraints.
  • Inclusive influence: I would bring engineering, design, data, legal, compliance, risk, and commercial partners into decisions early. When incentives conflict, I would make the trade-offs visible and align people on the customer and business outcome.
  • Leadership through other leaders: I would set clear outcomes and decision rights, coach PMs on strategy and execution, and create space for teams to own solutions rather than routing every decision through me.

Result

In the example I would share, this approach aligned teams around a shared metric, improved the customer journey, and created a repeatable way to resolve cross-functional decisions. At Amex, I would measure my impact not only by product results, but also by stronger teams, better decisions, and sustained trust. Interviewers should hear a real example, the scope of my influence, and how I balance boldness with the responsibility that comes with a trusted payments brand.

BehavioralMediumAmerican ExpressMachine Learning Engineering Manager

2. Describe a time you had to give constructive feedback to someone.

Model answer

Situation

A strong senior engineer on my team was technically productive, but their design reviews had become dismissive. In one review, they interrupted a newer teammate several times and rejected a proposal without explaining the technical concern. The result was that the discussion stalled and the teammate stopped contributing. I wanted to address the behavior promptly while preserving the engineer’s dignity and keeping the feedback actionable.

Task

My goal was to explain the specific impact, understand their perspective, and set a clear expectation for how they should contribute in reviews. I also needed to follow up rather than assume one conversation would change the pattern.

Action

  • I spoke with them privately soon after the review. I described the observable behavior and its impact, rather than calling them “difficult”: “You interrupted twice and dismissed the proposal without giving a reason; the author then stopped participating, and we lost a useful discussion.”
  • I asked how they saw the meeting and listened. They said they were trying to protect the team from a design they believed would create reliability problems. I acknowledged that intent while separating it from the effect of their delivery.
  • I explained the standard I expected: challenge assumptions with evidence, make risks explicit, and leave room for others to respond. I gave an alternative phrase—“I’m concerned this adds a failure mode; can we walk through the retry behavior?”—so the feedback was usable.
  • We agreed on a concrete next step: in the next design review, they would state the concern and rationale before advocating a decision, and I would facilitate so quieter participants had space to contribute.
  • I checked in afterward, asked the meeting owner for feedback, and recognized the improvement when I saw it. I would have revisited the issue and used the appropriate formal process if the pattern continued.

Result

In subsequent reviews, the engineer raised the same reliability concerns in a more constructive way, and other team members re-engaged in the discussion. The design still received rigorous challenge, but the conversation produced a clearer decision and better participation. I learned that useful feedback is both candid and specific: it protects team standards without reducing a person to one behavior.

What interviewers listen for

  • Timely, private, behavior-based feedback with a clear impact.
  • Curiosity and respect without avoiding accountability.
  • A concrete change expectation and follow-up to verify improvement.
BehavioralMediumAmerican ExpressEngineering Manager

3. How would you divide your time among a top performer, a middle performer, and a low performer on your team?

Model answer

Situation

I would not set a fixed percentage of my calendar for each person based only on a performance label. As a manager, my goal is to make the team successful and help each person progress, while allocating attention according to current need, impact, and risk. In a team of eight, I might start with roughly 45% of my planned one-on-one and coaching time for the low performer, 30% for the middle performer, and 25% for the top performer, then adjust based on evidence.

Task

I would make sure the top performer remains challenged and retained, the middle performer has a clear path to greater scope, and the low performer receives fair, timely support with specific expectations. The tension is that spending all my time on the most urgent situation can neglect both growth and recognition across the team.

Action

  • I would first diagnose rather than assume the labels are accurate. I would use recent outcomes, role expectations, feedback, workload, and the employee's own perspective to distinguish skill gaps from unclear goals, dependency problems, or personal circumstances.
  • For the low performer, I would increase structured support: weekly check-ins, one or two measurable goals, examples of what good looks like, and frequent feedback. I would agree on a time-bound improvement plan when appropriate, document commitments, and involve HR early if formal performance action may be needed.
  • For the middle performer, I would use regular one-on-ones to identify a motivating next step, such as owning a cross-team project or improving a specific technical or leadership skill. I would delegate meaningful work and arrange feedback from partners, rather than equating development with more meetings.
  • For the top performer, I would protect time for strategic work, provide recognition, and check whether they want broader scope. I would also watch for overload and avoid making them the default owner of every difficult task.
  • I would review the allocation monthly using observable signals: goal progress, delivery quality, engagement, workload, and partner feedback. I would keep one-on-ones consistent so reduced extra coaching time does not become reduced respect or access.

Result

The intended result is a fair plan that improves performance where possible, creates growth opportunities, and reduces retention and delivery risks. I would be explicit that time is not a reward or punishment: the low performer may need more coaching temporarily, while a top performer may need a different kind of support. I would adjust the split based on progress and business needs, and I would not let a coaching plan drag on without clear decisions.

BehavioralMediumAmerican ExpressStaff EngineerHiring manager interview

4. What experience do you have dealing with customers?

Model answer

Situation

A strong example could involve an enterprise customer whose team was seeing intermittent failures in a workflow that our product supported. The issue was affecting a time-sensitive part of their operation, and the customer had lost confidence because previous updates described engineering activity without clearly explaining the impact or next step. My role was as the engineering lead for the service, not the account owner, but I was accountable for helping resolve the technical problem.

Task

I needed to understand the customer’s actual workflow, restore confidence through clear communication, and lead a fix that addressed the underlying cause without creating a risky one-off customization.

Action

  • I joined the customer discussion with the account and support teams, listened first, and asked them to walk through a recent failed attempt. I avoided assuming that our internal definition of “success” matched theirs.
  • I translated the report into a reproducible scenario, confirmed the scope with logs and traces, and separated immediate mitigation from the permanent fix. I gave the customer a named technical contact and a predictable update cadence.
  • I explained the trade-offs plainly: we could apply a narrow mitigation quickly, while a broader change required more validation because it affected other tenants. I made the risk and timeline explicit rather than promising a date I could not support.
  • I coordinated engineering, support, and product on the mitigation and root-cause fix, with tests based on the customer’s workflow. I also checked whether the issue affected other customers and expanded the investigation accordingly.
  • After resolution, I closed the loop with the customer in terms of their workflow, documented what changed, and made sure the support team had a useful diagnostic and escalation path for future reports.

Result

The mitigation restored the workflow within [timeframe], and the permanent fix reduced [failure rate or support volume] by [measured amount]. The investigation also uncovered [broader reliability or usability issue], which we addressed for other customers rather than shipping a customer-specific patch. I learned that effective customer work requires both empathy and technical precision: listen carefully, communicate uncertainty honestly, and turn an individual report into a system improvement where appropriate.

What interviewers listen for

  • Direct customer engagement and genuine listening.
  • Clear communication under pressure, including honest uncertainty.
  • Good judgment between mitigation and durable fixes.
  • Measurable customer and organizational impact.
BehavioralMediumAmerican ExpressEngineering ManagerBehavioral Interview

5. How do you foster professional growth and mentorship within a globally distributed or hybrid engineering team?

Model answer

Example to adapt; substitute your own team size, practices, and outcomes.

Situation

I led an engineering team split across North America and Europe, with some colleagues in the office and others remote. Time-zone differences and uneven access to informal conversations meant that newer engineers could miss context, while senior engineers were becoming the default reviewers and mentors. I wanted growth to be part of how the team operated, not an extra activity available only to people near the office.

Task

My goal was to improve each engineer’s development and sense of belonging while maintaining delivery, creating opportunities that were equitable across locations and sustainable for mentors.

Action

  • I started with individual development conversations. I asked each person what they wanted to learn, what kind of work energized them, and what barriers they faced; I did not assume that promotion was everyone’s only goal.
  • I worked with engineers to turn those goals into specific quarterly opportunities, such as owning a design proposal, leading an incident review, presenting a technical topic, or pairing on an unfamiliar part of the system. We agreed on observable outcomes and revisited them in regular one-on-ones.
  • I made collaboration more inclusive by documenting decisions and context asynchronously, rotating meeting times where possible, and avoiding decisions that depended on being present in an office or late-night call. For cross-time-zone discussions, I provided a written brief and a clear way to contribute before the meeting.
  • I created lightweight mentoring matches based on development goals and interests, with explicit time budgets and a check-in after several weeks. I also used code and design reviews as coaching moments: reviewers explained reasoning, and authors had room to make decisions rather than simply receive directives.
  • I watched for uneven access to high-visibility work and feedback. I asked mentors and leads to share opportunities deliberately, and I gathered feedback privately so people could raise concerns about the process safely.

Result

In an adapted example, regular growth conversations and project ownership helped two engineers take on broader technical leadership, while onboarding feedback improved and fewer decisions were blocked on a single senior reviewer. I also learned to measure mentorship by whether people gain capability, autonomy, and access—not by the number of mentoring meetings. As a manager, I would keep checking whether the practices are working for different locations, communication styles, and career goals, and adjust rather than assume one program fits everyone.

CodingMediumAmerican ExpressSenior Engineering ManagerCoding round

6. How would you implement a credit card parser?

Model answer

function parseCard(input) {
  // Accept common display separators, but reject any other characters.
  const raw = String(input).trim();
  if (!/^[\d\s-]+$/.test(raw)) {
    return { valid: false, brand: 'unknown', last4: null };
  }
  const number = raw.replace(/[\s-]/g, '');
  if (number.length < 12 || number.length > 19) {
    return { valid: false, brand: 'unknown', last4: number.slice(-4) || null };
  }

  // Luhn checksum: double every second digit from the right.
  let sum = 0;
  let doubleDigit = false;
  for (let i = number.length - 1; i >= 0; i--) {
    let digit = Number(number[i]);
    if (doubleDigit) {
      digit *= 2;
      if (digit > 9) digit -= 9;
    }
    sum += digit;
    doubleDigit = !doubleDigit;
  }
  const luhnValid = sum % 10 === 0;

  let brand = 'unknown';
  if (/^4/.test(number)) brand = 'Visa';
  else if (/^(5[1-5]|2(2[2-9]|[3-6]\d|7[01]|720))/.test(number)) brand = 'Mastercard';
  else if (/^3[47]/.test(number)) brand = 'American Express';
  else if (/^(6011|65|64[4-9])/.test(number)) brand = 'Discover';

  return {
    valid: luhnValid && brand !== 'unknown',
    brand,
    last4: number.slice(-4)
  };
}

console.log(parseCard('4111 1111 1111 1111'));
  • Normalize separators, validate allowed characters and length, run Luhn, then identify a network from its prefix. Production rules should use maintained network ranges because prefixes and lengths evolve.
  • Return only the minimum needed data. Never log or persist the full PAN; use a compliant payment provider/tokenization flow for real card handling.

Complexity: O(n) time and O(n) space for normalized input; Luhn itself uses O(1) auxiliary space.

CodingMediumAmerican ExpressEngineering ManagerTechnical

7. How do you find the diameter of a tree?

Model answer

Assume the input is a binary tree and define diameter as the number of edges on the longest path between any two nodes. A post-order traversal computes each node's left and right subtree heights; their sum is the longest path passing through that node. Track the maximum over all nodes.

// A binary tree node has a value and optional left/right children.
class TreeNode {
  constructor(value, left = null, right = null) {
    this.value = value;
    this.left = left;
    this.right = right;
  }
}

function diameterOfBinaryTree(root) {
  let diameter = 0;

  // Returns the subtree height measured in edges from this node to a leaf.
  function height(node) {
    if (node === null) return -1;

    const leftHeight = height(node.left);
    const rightHeight = height(node.right);

    // A path through this node contains one edge per side-height plus the edges to its children.
    diameter = Math.max(diameter, leftHeight + rightHeight + 2);

    return Math.max(leftHeight, rightHeight) + 1;
  }

  height(root);
  return diameter;
}

// Example: diameter is 3 edges (4 -> 2 -> 1 -> 3).
const root = new TreeNode(
  1,
  new TreeNode(2, new TreeNode(4), new TreeNode(5)),
  new TreeNode(3)
);
console.log(diameterOfBinaryTree(root)); // 3
  • The empty subtree has height -1, making a leaf's height 0 and keeping the edge-based formula consistent.
  • The longest path may be entirely inside one subtree, so update the global maximum at every node.

Complexity: Time O(n); space O(h) for recursion, where h is tree height (O(n) worst case for a skewed tree).

CodingMediumAmerican ExpressEngineering ManagerTechnical Assessment

8. How would you validate a formatted card number using the Luhn checksum algorithm in O(n) time?

Model answer

function isValidCardNumber(input) {
  if (typeof input !== "string") return false;

  // Permit common visual separators, but reject every other non-digit character.
  const digits = [];
  for (const char of input) {
    if (char === " " || char === "-") continue;
    if (char < "0" || char > "9") return false;
    digits.push(char.charCodeAt(0) - 48);
  }

  // Reject empty values; adjust these bounds if the product supports
  // card-number formats with different lengths.
  if (digits.length < 12 || digits.length > 19) return false;

  let sum = 0;
  let doubleDigit = false;

  // Walk from right to left: the check digit itself is not doubled.
  for (let i = digits.length - 1; i >= 0; i--) {
    let value = digits[i];

    if (doubleDigit) {
      value *= 2;
      if (value > 9) value -= 9;
    }

    sum += value;
    doubleDigit = !doubleDigit;
  }

  return sum % 10 === 0;
}

console.log(isValidCardNumber("4539 1488 0343 6467")); // true
console.log(isValidCardNumber("4539-1488-0343-6468")); // false
  • Ignore spaces and hyphens, reject other non-digit characters, then apply the checksum from right to left.
  • Starting at the digit immediately left of the check digit, double every other digit; subtract 9 from doubled values greater than 9.
  • The length bounds are a format policy, not part of Luhn itself; set them to match the supported card formats.

Complexity: Time O(n); space O(n) for the normalized digit array. The normalization can be streamed to reduce auxiliary space, but storing digits keeps the parity logic straightforward.

CodingMediumAmerican ExpressEngineering ManagerTechnical

9. How do you calculate the height of a tree using tree traversal?

Model answer

function treeHeight(root) {
  if (root === null) return 0; // Height is measured in nodes; an empty tree has height 0.

  let maxHeight = 0;
  const stack = [[root, 1]]; // Each entry contains a node and its depth.

  while (stack.length > 0) {
    const [node, depth] = stack.pop();
    maxHeight = Math.max(maxHeight, depth);

    if (node.left !== null) stack.push([node.left, depth + 1]);
    if (node.right !== null) stack.push([node.right, depth + 1]);
  }

  return maxHeight;
}

// Example:        1
//                / \
//               2   3
//              /
//             4
const root = {
  value: 1,
  left: { value: 2, left: { value: 4, left: null, right: null }, right: null },
  right: { value: 3, left: null, right: null }
};
console.log(treeHeight(root)); // 3
  • Traverse every node while tracking its depth; the largest depth is the tree height. This version defines height as the number of nodes on the longest root-to-leaf path.
  • For an edge-based definition, return maxHeight - 1 for a non-empty tree; an empty tree is commonly defined as height -1 under that convention.

Complexity: Time O(n); space O(h) for the traversal stack in the typical case, up to O(n) for a highly branching tree.

CodingMediumAmerican ExpressSenior Engineering ManagerOnsite

10. How would you extract an element from a JSON-like document?

Model answer

function extractElement(document, path) {
  // Accept either an already-parsed value or a JSON string.
  const root = typeof document === 'string' ? JSON.parse(document) : document;

  // Accept a segment array, or a simple dot path with numeric array indexes,
  // for example: profile.address.city or orders[0].id.
  const segments = Array.isArray(path)
    ? path
    : String(path).replace(/\[(\d+)\]/g, '.$1').split('.').filter(Boolean);

  let current = root;
  for (const segment of segments) {
    if (current === null || current === undefined) return undefined;
    current = current[segment];
  }
  return current;
}

const document = '{"user":{"name":"Ari"},"orders":[{"id":42}]}';
console.log(extractElement(document, 'orders[0].id')); // 42
  • Parse strings once, then walk one path segment at a time; return undefined when traversal reaches a missing or null value.
  • This supports simple dot paths and numeric array indexes. For arbitrary JSONPath expressions or keys containing dots, define an explicit path grammar or accept a segment array.

Complexity: O(d) time and O(d) space for path parsing, where d is path depth; O(1) traversal space.

Product & growthMediumAmerican ExpressGroup Product Manager

11. If you had to design a new product from scratch, how would you do it?

Model answer

Clarify & scope

I’d first clarify the business goal, target market, constraints, and what “success” means. If those were open-ended, I’d state an assumption and proceed—for example: “I’ll design a product that helps independent professionals get paid reliably.” I’d also establish whether we’re exploring a new market or extending an existing platform.

User segments & pain points

I’d identify segments, then choose one based on pain intensity, reachability, and strategic fit. For this example, I’d focus on freelancers who manage their own invoicing and have inconsistent cash flow. I’d validate the problem through interviews, support data, workflow observation, and market research—not assume that a feature request is the underlying need.

Goals & success metrics

My North Star might be the percentage of invoices paid by their due date. Leading indicators could include time to create and send a first invoice, invoice completion rate, and payment-link adoption. Guardrails would include payment failure rate, disputes, fraud, support contacts, and customer trust. I’d define the cohort and baseline before building.

Solutions

I’d compare a few options: simpler invoice creation, automated reminders, and integrated payments. I’d assess which part of the end-to-end problem each solves, as well as adoption risk, operational cost, and differentiation. My initial recommendation would be a lightweight invoicing and reminder experience, with payment integration only where customer research and regulatory review support it.

flowchart LR
  A[Create invoice] --> B[Send to client]
  B --> C[Track status]
  C --> D{Paid on time?}
  D -- No --> E[Send reminder]
  D -- Yes --> F[Record payment]
Diagram

Prioritization & trade-offs

I’d use impact, confidence, effort, and strategic value to prioritize, while explicitly considering risk and dependencies. I’d avoid building a broad accounting suite before proving that the core job—getting paid—is better solved. I’d also partner early with design, engineering, finance, legal, and support so feasibility and compliance shape the product rather than surprise us later.

MVP, measurement & rollout

I’d test the smallest end-to-end workflow with a narrow customer cohort, instrument the funnel, and compare outcomes with a baseline or holdout where appropriate. I’d review adoption and payment outcomes alongside guardrails, interview users, and fix friction before expanding. As a GPM, I’d align teams on the customer problem and decision principles, delegate execution to accountable leads, and use evidence to decide whether to scale, iterate, or stop.

Product & growthMediumAmerican ExpressGroup Product Manager

12. How would you put together a presentation on new products?

Model answer

Clarify & scope

I’d first clarify the audience and the decision the presentation needs to enable. Is this an executive investment decision, a sales launch, or an internal product review? I’d assume the goal is to secure alignment on whether to pursue a new product, for whom, and what we need to learn next. I would not make the presentation a feature tour; I’d make it a decision narrative.

User segments & pain points

I’d identify the target customer and the job they are trying to get done, using research, behavioral data, and frontline feedback. For example, if the product is for small businesses, I might focus on owners who spend too much time reconciling business expenses. I’d validate that this is frequent and important, understand current alternatives, and distinguish the user from the buyer or decision-maker where they differ.

Goals & success metrics

I’d state the customer outcome and business rationale together. The North Star might be successful weekly expense reconciliations per active business, rather than downloads or sign-ups alone. Supporting measures could include activation, time to complete the job, repeat usage, retention, and revenue. Guardrails might include support contacts, errors, fraud, complaints, and unit economics.

Solutions

I’d show the problem evidence, then compare two or three credible approaches: improve the existing workflow, launch a focused standalone experience, or partner with an established provider. I’d make the recommendation explicit and explain why it best balances customer value, differentiation, feasibility, and strategic fit.

A short story can show the intended experience:

flowchart LR
    A[Customer pain] --> B[Discover product]
    B --> C[Complete first task]
    C --> D[See immediate value]
    D --> E[Build repeat habit]
Diagram

Prioritization & trade-offs

I’d use an impact-effort or RICE-style comparison, but treat the score as a prompt for judgment, not a substitute for it. I’d call out dependencies, risks, what is deliberately out of scope, and why. At Group PM level, I’d also show how the proposal fits the portfolio, what other teams must contribute, and who owns key decisions.

MVP, measurement & rollout

I’d close with a staged plan: validate the riskiest assumption, pilot with a defined cohort, measure against a baseline or control where practical, and expand only when outcomes and guardrails are healthy. The final slides should state the decision requested, investment and staffing needed, accountable owners, key milestones, and the criteria to continue, change, or stop. I’d keep the main narrative concise and put detailed research, financial assumptions, and technical considerations in an appendix.

System designMediumAmerican ExpressSenior Engineering ManagerOnsite

13. How would you investigate and address a source sending heavy queries to an Oracle database?

Model answer

1. Requirements & scale

  • Find which application, job, user, or integration is generating expensive Oracle work; distinguish a legitimate traffic spike from a runaway query or abuse.
  • Protect database availability while preserving critical workloads, then fix the source and prevent recurrence.
  • Assume 300 application instances, up to 5,000 SQL executions/second at peak, and 20,000 concurrent sessions across a fleet. At 200 bytes per sampled query event and 10% sampling, telemetry is about 100 KB/s, or 8.6 GB/day before compression and retention policies.
  • Track latency, CPU, I/O, buffer gets, rows examined/returned, parse rate, active sessions, waits, and application-level error rates. Avoid high-cardinality, unbounded raw SQL logging.

2. High-level architecture

Instrument clients with stable service, instance, tenant, and request identifiers. Send query telemetry to a collector, while Oracle-native controls provide immediate protection. Use a staged rollout: observe and attribute first, then limit, then remediate.

flowchart TD
  subgraph Client
    A[Application services]
    B[Batch jobs]
  end
  subgraph Edge/CDN
    C[Service identity]
  end
  subgraph Load Balancer
    D[Telemetry collector]
  end
  subgraph API / Services
    E[Workload policy service]
    F[Query attribution]
  end
  subgraph Cache
    G[Policy cache]
  end
  subgraph Datastores
    H[Oracle database]
    I[Telemetry store]
  end
  subgraph Message Queue
    J[Query event queue]
  end
  subgraph Workers
    K[Anomaly and report workers]
    L[DBA response workflow]
  end
  A -->|SQL and identity| H
  B -->|SQL and identity| H
  A -->|Query metrics| C
  B -->|Query metrics| C
  C -->|Events| D
  D -->|Validated events| J
  J -->|Buffered events| K
  K -->|Aggregates| I
  K -->|Suspect workload| F
  F -->|Ownership lookup| E
  E -->|Limits and exceptions| G
  G -->|Cached policy| D
  E -->|Resource Manager policy| H
  K -->|Alert and evidence| L
Diagram

3. API design

  • POST /v1/query-events — ingest sampled query fingerprints, timing, resource counters, and workload identity.
  • GET /v1/workloads/{workloadId}/profile — show query IDs, resource use, trend, and owner.
  • POST /v1/workloads/{workloadId}/limits — propose or apply a reviewed rate, concurrency, or resource limit.
  • POST /v1/workloads/{workloadId}/exceptions — record a time-bounded, approved exception.

4. Data model & storage

  • In Oracle, set connection metadata such as MODULE, ACTION, CLIENT_IDENTIFIER, and service name. Keep a registry mapping these values to team, application, environment, and criticality.
  • Store events in a time-series or columnar telemetry store keyed by time bucket and workload ID. Keep SQL text restricted; use normalized SQL fingerprints/SQL IDs by default and redact literals.
  • Use a relational policy registry for owners, limits, approvals, and audit history. Cache active policies with a short TTL; Oracle Resource Manager remains the enforcement source of truth.

5. Deep dive

First establish attribution, not blame. Correlate Oracle V$SESSION, V$SQL, AWR/ASH where licensed, wait events, and Resource Manager statistics with service identity, SQL ID, module/action, client host, and deployment/job metadata. Rank by total DB time, CPU, buffer gets, physical reads, executions, and concurrency; a query with moderate latency but millions of executions can be more damaging than one slow report. Compare to a known-good baseline by hour, release, and workload.

sequenceDiagram
  participant App
  participant Oracle
  participant Collector
  participant Queue
  participant DBA
  App->>Oracle: Execute SQL with workload identity
  Oracle-->>Collector: Sampled fingerprint and resource metrics
  Collector->>Queue: Publish event
  Queue-->>DBA: Alert with ranked workload evidence
  DBA->>Oracle: Apply reviewed Resource Manager limit
  DBA->>App: Request source fix and verify outcome
Diagram

Mitigate proportionally. For a confirmed runaway job, pause or rate-limit that workload, lower its Resource Manager consumer-group allocation, or terminate a session only after checking transaction impact and owner. Protect critical interactive traffic with separate consumer groups and bounded connection pools. Then fix the cause: missing index, unbounded scan, N+1 access, poor bind-variable use, excessive polling, or a deployment regression. Validate with a representative execution plan and production-like data; do not add an index blindly because it increases write and storage cost.

6. Scale, bottlenecks & trade-offs

Sample routine events but retain full detail for anomalies; aggregate at the collector and apply backpressure rather than letting observability overload Oracle. Use Oracle-native resource controls for enforcement because an external controller can lag or fail. Prefer a short, reversible limit over killing sessions or globally throttling traffic. Balance rapid containment against availability: a limit that is too low can cause retry storms, so pair it with client backoff, circuit breakers, and alerts. Roll out in observe-only mode, then to one workload, then expand with an owner, expiry, audit trail, and rollback plan. Success means lower DB time and waits for the offending workload, stable p95/p99 latency for critical services, and no material increase in application errors.

System designMediumAmerican ExpressStaff EngineerKarat-driven video interview

14. A video-streaming app uses physical servers to host multiple copies of the same video.

The full question

A video-streaming app uses physical servers to host multiple copies of the same video. What improvements would you make to the system?

Model answer

1. Requirements & scale

Functional requirements

  • Store a video once as a durable source asset, then make it playable in multiple resolutions and regions.
  • Deliver adaptive-bitrate streams with low startup time, seek support, and resilience to server or network failures.
  • Support upload, transcoding, publishing, access control, and deletion, including removal from caches.

Non-functional requirements

  • Meet playback startup and rebuffering targets while controlling egress and storage cost.
  • Protect content and origins from unauthorized access and traffic spikes.
  • Preserve a recoverable master and provide clear retention and disaster-recovery objectives.

Assume 10 million videos averaging 1 GB of source and encoded variants. That is roughly 10 PB before replication. If 1 million viewers average 5 Mbps, delivery is 5 Tbps; serving this directly from a modest fleet of physical servers is not viable. At 5 Mbps, each viewer consumes about 2.25 GB/hour, so network egress dominates cost. This calls for a CDN and object-based origin, not additional copies on every application server.

2. High-level architecture

flowchart TD
  subgraph Client["Client"]
    C["Player and uploader"]
  end
  subgraph Edge["Edge/CDN"]
    E["CDN edge cache"]
  end
  subgraph LB["Load Balancer"]
    L["Regional API gateway"]
  end
  subgraph Services["API / Services"]
    A["Playback and upload API"]
    M["Catalog and entitlement service"]
    T["Transcoding orchestrator"]
  end
  subgraph Cache["Cache"]
    K["Manifest and token cache"]
  end
  subgraph Stores["Datastores"]
    D["Catalog SQL"]
    O["Object storage origin"]
  end
  subgraph Queue["Message Queue"]
    Q["Transcode jobs"]
  end
  subgraph Workers["Workers"]
    W["Transcode and package workers"]
  end
  C -->|"playback request"| E
  E -->|"cache miss or API call"| L
  L --> A
  A --> M
  M --> D
  A --> K
  A -->|"signed manifest and URLs"| C
  C -->|"video segments"| E
  E -->|"origin fetch on miss"| O
  C -->|"resumable upload"| A
  A -->|"source object"| O
  A -->|"publish job"| Q
  Q --> W
  W -->|"encoded renditions and manifests"| O
  W -->|"asset status"| D
Diagram

3. API design

  • POST /v1/uploads creates a resumable upload and returns scoped multipart URLs.
  • POST /v1/videos/{id}/publish validates metadata and enqueues transcoding.
  • GET /v1/videos/{id}/playback checks entitlement and returns a signed adaptive-streaming manifest URL.
  • GET /v1/videos/{id} returns catalog metadata and processing state.
  • DELETE /v1/videos/{id} initiates deletion and cache invalidation.

Clients request HLS or DASH manifests and fetch segments directly from the CDN; video bytes should not flow through the application API.

4. Data model & storage

Store video metadata, owner, visibility, retention, and processing state in a relational catalog. Store the original master and immutable, versioned renditions in replicated object storage. Use HLS or DASH manifests that reference small, independently cacheable segments at multiple bitrates. Partition catalog records by video ID; index publication state and owner for operational queries. Keep playback tokens and frequently accessed manifests in a short-lived cache, but treat the catalog and object store as authoritative.

Do not replicate identical video files onto every physical server. If physical machines remain necessary, use them as managed object-storage or CDN-origin nodes with a consistent object namespace, health checks, and automated repair—not as independent manually synchronized copies.

5. Deep dive

The key improvement is separating control plane from data plane. The control plane authenticates users, checks entitlement, chooses a CDN policy, and returns a short-lived signed URL. The data plane delivers segments from the nearest edge. On a cache miss, the CDN fetches from a protected origin; the origin is never publicly writable. Uploads are multipart and resumable. A durable job queue drives transcoding into a codec/bitrate ladder, and a video is marked playable only after required renditions and manifests are verified.

sequenceDiagram
  participant U as Viewer
  participant API as Playback API
  participant DB as Catalog
  participant CDN as CDN edge
  participant S3 as Object origin
  U->>API: Request playback for video
  API->>DB: Check video state and entitlement
  DB-->>API: Published and allowed
  API-->>U: Signed manifest URL
  U->>CDN: Fetch manifest and segments
  CDN->>S3: Fetch segment on cache miss
  S3-->>CDN: Segment bytes
  CDN-->>U: Cached segment stream
Diagram

6. Scale, bottlenecks & trade-offs

Use multi-tier CDN caching, origin shielding, request coalescing, and pre-warming for anticipated launches. Cache immutable segments for long periods; version URLs so a new encode cannot serve stale bytes. Keep manifests short-lived if they contain expiring URLs. Protect the origin with private networking, signed origin requests, rate limits, and per-tenant quotas. Replicate object data across availability zones and, for high-value content, regions; balance recovery objectives against storage and egress cost.

A CDN hit reduces origin load but can increase delivery cost or create cache-invalidation complexity. Immutable content and versioned URLs make invalidation safer. Multi-CDN can improve resilience but adds routing, contract, and observability complexity; start with one provider and add a second if measured availability or negotiation requires it. Monitor cache-hit ratio, startup time, rebuffering ratio, bitrate, origin egress, transcode backlog, and cost per viewing hour. Roll out by a small catalog cohort, validate playback across devices and regions, then migrate traffic progressively with an origin fallback and a rollback switch.

System designMediumAmerican ExpressStaff EngineerKarat-driven video interview

15. For an online crossword app, what are the advantages and drawbacks of retrieving hints from a server versus building the hints into the app?

Model answer

1. Requirements & scale

Functional requirements

  • Let a player retrieve hints for a crossword clue or puzzle, including a hint level and locale.
  • Support puzzle publication, corrections, expiration, and optional progressive hints.
  • Work acceptably offline or on unreliable networks, while avoiding accidental spoilers and unauthorized access to unreleased puzzles.

Non-functional requirements

  • Hint lookup should feel immediate; puzzle content must be versioned and consistent with the client.
  • Minimize app-release dependency for editorial corrections, but retain useful offline behavior.
  • Protect answer and hint data according to the product's fairness and monetization rules.

For scale, assume 5 million daily players and 20 hint requests per player per day: 100 million requests/day, or about 1,160 requests/second on average. A 10x peak is roughly 12,000 requests/second. If a hint response averages 1 KB, average payload is about 1.2 MB/s, excluding protocol overhead. This is small enough to serve through a CDN/cache, but burst patterns around daily puzzle launches matter.

2. High-level architecture

flowchart TD
  subgraph Client["Client"]
    C["Crossword app and local puzzle store"]
  end
  subgraph Edge["Edge/CDN"]
    E["CDN for versioned puzzle bundles"]
  end
  subgraph LB["Load Balancer"]
    L["API gateway"]
  end
  subgraph Services["API / Services"]
    A["Puzzle and hint API"]
    P["Publication and access service"]
  end
  subgraph Cache["Cache"]
    K["Hot puzzle and hint cache"]
  end
  subgraph Stores["Datastores"]
    D["Puzzle metadata SQL"]
    O["Versioned puzzle object store"]
  end
  subgraph Queue["Message Queue"]
    Q["Publish and purge events"]
  end
  subgraph Workers["Workers"]
    W["Validation and cache refresh"]
  end
  C -->|"bundle request"| E
  E -->|"cache miss"| O
  C -->|"hint request"| L
  L --> A
  A --> P
  P --> D
  A --> K
  A -->|"hint response"| C
  P -->|"publish change"| Q
  Q --> W
  W -->|"validate and refresh"| O
  W -->|"invalidate hot entries"| K
Diagram

3. API design

  • GET /v1/puzzles/{puzzleId}/manifest returns puzzle version, locale, and whether hints are bundled or remotely available.
  • GET /v1/puzzles/{puzzleId}/hints/{clueId}?level=1&locale=en returns a hint, puzzle version, and cache metadata.
  • POST /v1/admin/puzzles/{puzzleId}/publish validates and publishes a new immutable version.
  • GET /v1/puzzles/{puzzleId}/answers should not be exposed to normal clients; answer access must follow product policy.

Use an ETag or explicit version in requests so clients cannot silently combine a puzzle with hints from a different revision.

4. Data model & storage

Store puzzle ID, version, locale, publication time, and policy in SQL for editorial workflows. Store immutable puzzle bundles and hint payloads as versioned objects; cache hot public hints at the edge or in a regional cache. A hint record has puzzle ID, version, clue ID, level, locale, text, and optional release time. Store player progress separately from hint content. Avoid placing unreleased answers in a publicly downloadable bundle if preventing early access is a requirement: client-side hiding is not security.

5. Deep dive

There are two primary choices. Bundled hints make lookup instant, work offline, and remove per-hint network cost. They also increase app or puzzle-download size, make corrections harder, and expose all bundled content to anyone who inspects the client. Updating hints may require a new app release unless puzzles are separately downloaded. Server retrieval lets editors correct hints immediately, supports staged releases and personalization, and keeps content out of the app until requested. It adds latency, service and CDN costs, dependency on connectivity, and potential availability or privacy concerns from recording hint requests.

I would recommend a hybrid: bundle hints with downloadable puzzle packs for offline play when content is not sensitive, while keeping published puzzle packs versioned and fetching corrections or optional richer hints remotely. If hints are restricted or paid, fetch them through an authenticated, rate-limited API and do not bundle them. The client can cache a fetched hint locally with its puzzle version and respect an explicit expiry or purge policy.

sequenceDiagram
  participant App as Player app
  participant API as Hint API
  participant Cache as Edge or regional cache
  participant Store as Puzzle store
  App->>App: Check matching local puzzle version
  alt Hint is bundled and allowed offline
    App->>App: Display local hint
  else Hint needs remote retrieval
    App->>API: Request clue, level, locale, version
    API->>Cache: Lookup versioned hint
    Cache->>Store: Fetch on cache miss
    Store-->>Cache: Hint payload
    Cache-->>API: Hint payload
    API-->>App: Hint and ETag
    App->>App: Cache against puzzle version
  end
Diagram

6. Scale, bottlenecks & trade-offs

Versioned immutable content is highly cacheable and avoids global invalidation for normal edits: publish a new version and have clients request it. For emergency corrections, purge the affected cache key and use a short TTL on manifests. A CDN offers low latency and absorbs launch spikes; a server API enables authorization and audit but must be horizontally scalable and rate-limited. Keep the database off the hot path by caching published hints and storing editorial state separately from serving state.

Bundling trades freshness and control for offline availability and low serving cost. Server-only delivery trades resilience and latency for rapid updates and tighter control. Measure hint-request success and p95 latency, hint use per session, offline completion rate, correction propagation time, cache-hit ratio, and support reports about stale or incorrect clues. Test a hybrid rollout by puzzle cohort, verify cache behavior across version changes, and retain a safe fallback: show a clear unava

System designMediumAmerican ExpressSenior Engineering ManagerOnsite — System design

16. How would you investigate and address someone sending heavy queries to an Oracle database?

Model answer

1. Requirements & scale

  • Investigate an unknown or potentially unauthorized actor generating expensive Oracle queries, contain impact safely, identify the owner/source, and establish durable controls.
  • Preserve critical transactions and evidence. Avoid assuming malicious intent: a leaked credential, misconfigured analytics tool, bad deployment, or compromised host can look similar.
  • Assume 10,000 sessions, 2,000 SQL executions/second, and 1,000 active sessions during an incident. If one sampled event is 250 bytes and sampling is 20%, telemetry is roughly 100 KB/s, or 8.6 GB/day. Retain high-resolution incident data briefly; aggregate long-term trends.
  • Measure DB time, CPU, I/O, active sessions, wait classes, parse rate, query executions, rows scanned, and impact to critical-service p95/p99 and errors.

2. High-level architecture

The investigation path should enrich database evidence with identity, network, deployment, and secret-management data. Enforcement should remain available even if the telemetry platform is degraded.

flowchart TD
  subgraph Client
    A[Applications and jobs]
    B[Unknown client]
  end
  subgraph Edge/CDN
    C[Identity and network controls]
  end
  subgraph Load Balancer
    D[Telemetry intake]
  end
  subgraph API / Services
    E[Incident console]
    F[Attribution service]
    G[Policy controller]
  end
  subgraph Cache
    H[Policy cache]
  end
  subgraph Datastores
    I[Oracle database]
    J[Evidence and telemetry]
    K[Owner registry]
  end
  subgraph Message Queue
    L[Event queue]
  end
  subgraph Workers
    M[Correlation workers]
    N[On-call responders]
  end
  A -->|Identified SQL| I
  B -->|SQL attempt| C
  C -->|Allowed traffic| I
  C -->|Identity and metrics| D
  I -->|Session and SQL evidence| D
  D -->|Events| L
  L -->|Events| M
  M -->|Correlated evidence| J
  M -->|Owner lookup| F
  F -->|Service and credential map| K
  M -->|Alert and timeline| E
  E -->|Page| N
  G -->|Approved containment| H
  H -->|Limits| C
  G -->|DB resource policy| I
Diagram

3. API design

  • POST /v1/incident-snapshots — capture a time-bounded snapshot of sessions, SQL IDs, waits, client identifiers, and host metadata.
  • GET /v1/incidents/{id}/workloads — return ranked sources, evidence confidence, owner, and impact.
  • POST /v1/incidents/{id}/actions — record an audited throttle, credential disablement, session termination, or exception.
  • POST /v1/credentials/{id}/rotate — request rotation through the secrets platform, not by exposing secrets in the incident tool.

4. Data model & storage

  • Tag Oracle connections with MODULE, ACTION, CLIENT_IDENTIFIER, service name, and a non-secret application identity. Map database user, client host, connection pool, deployment, and secret version to an owning team.
  • Store timestamped session/query evidence keyed by incident and time. Prefer SQL IDs and normalized fingerprints; restrict and redact raw SQL because literals may contain sensitive data.
  • Keep incident actions, approvals, evidence references, and credential-rotation status in an audited relational store. Use a short-lived cache for active containment policies, with a safe fallback to Oracle Resource Manager and network controls.

5. Deep dive

Start with a bounded evidence snapshot before taking disruptive action: current sessions and client addresses, Oracle SQL IDs, V$SQL resource counters, wait events, authentication failures, connection rates, and relevant audit records. Correlate with application gateway logs, cloud flow logs, deployment history, job schedules, credential access, and recent secret changes. Rank sources by DB time, CPU, I/O, buffer gets, executions, and active concurrency, and record confidence in attribution. A database username alone is not adequate when many services share it; use client identifier and host/pool metadata. Where available and appropriately licensed, use ASH/AWR for historical workload analysis.

Contain in increasing order of disruption: throttle at the source or connection pool; isolate a workload with Oracle Resource Manager; block a specific host or revoke a specific credential if evidence supports it; terminate sessions only after assessing transaction rollback and business impact. Preserve critical consumer groups and avoid broad network blocks that can take down legitimate services. If compromise is plausible, involve security and incident command, preserve logs, rotate secrets, and investigate lateral movement. Then fix the originating query or client behavior and verify with the same query fingerprint and workload metrics.

sequenceDiagram
  participant Oracle
  participant Telemetry
  participant Responder
  participant Policy
  participant Owner
  Oracle-->>Telemetry: Session, SQL ID, waits, client identity
  Telemetry-->>Responder: Ranked anomaly and evidence
  Responder->>Owner: Confirm workload and business criticality
  Responder->>Policy: Approve scoped containment
  Policy->>Oracle: Apply Resource Manager or session control
  Owner-->>Responder: Deploy fix and confirm recovery
Diagram

6. Scale, bottlenecks & trade-offs

Use event sampling and aggregation to prevent monitoring overhead; retain unsampled snapshots only for a narrow incident window. Attribution is often the bottleneck, so require unique workload identities and prohibit shared credentials where feasible. A central query proxy gives strong policy enforcement but adds latency and can become a failure point; Oracle Resource Manager is closer to the database and more resilient for containment, though less expressive for application context. Choose containment based on evidence: availability matters, but leaving an unknown workload unrestricted may worsen an outage. Use reversible, scoped controls, rate-limit retries, and make exceptions time-bounded. Roll out identity instrumentation first, validate it against known workloads, then automate alerts and only automate low-risk throttles.

TechnicalEasyAmerican ExpressDirector of Engineering

17. Would you be interested in pursuing the technical track or the management track?

Model answer

I’d answer directly while making clear that the two tracks are not opposites:

“At this stage, I’m most interested in the management track, specifically leading engineering through other leaders and building an organization that delivers durable results. I still want to stay technically engaged: I ask about architecture, reliability, and engineering quality, and I want to be able to challenge assumptions. But my highest leverage is setting direction, developing leaders, and aligning teams around outcomes—not being the primary author of the hardest code. “In my current role, I’ve seen that the right investment is often organizational as much as technical. For example, when teams had conflicting priorities, I worked with product and engineering leads to clarify ownership, agree on shared measures, and make trade-offs explicit. That helped teams deliver without relying on escalation or a single technical expert. I measure my impact in outcomes like delivery predictability, customer reliability, retention and growth of strong leaders, and the organization’s ability to make good decisions without me in every room. “I’d keep a technical connection through design reviews, incident reviews, and regular conversations with engineers, while being deliberate about not taking decisions away from the people closest to the work. I’d choose the technical track if my strongest contribution were still direct technical execution; for a Director role, I’m choosing management because growing the system of teams is where I can create the most impact.”

A strong answer should be honest, specific about the scope you want, and clear that management is a distinct craft—not a promotion away from engineering. Adapt the example to a real situation and include a concrete outcome if you can.

TechnicalEasyAmerican ExpressStaff Engineer

18. What is a distributed system?

Model answer

A distributed system is a collection of independent computers or processes that communicate over a network and coordinate to provide a service or complete a task. To a user, it may look like one system, but its state and work are spread across multiple machines.

The defining engineering challenge is that the network and machines are imperfect: messages can be delayed, reordered, or lost; nodes can fail independently; and parts of the system can become unreachable while others continue. Consequently, design decisions often trade off latency, availability, consistency, and operational complexity.

For example, a request may pass through an API service, a cache, and a database replicated across several nodes. Reliability then requires mechanisms such as timeouts, retries with idempotency, replication, health checks, and observability—not merely adding more servers.

flowchart LR
    C["Client"] --> A["Service instance A"]
    C --> B["Service instance B"]
    A <--> N["Network"]
    B <--> N
    N --> D1["Data node 1"]
    N --> D2["Data node 2"]
Diagram

A strong design makes failure behavior explicit: what happens when a node or network link fails, which data may be stale, and how the system recovers. Distribution can improve scale and fault isolation, but it adds coordination, consistency, and debugging costs.

TechnicalEasyAmerican ExpressStaff Engineer

19. What is a microservice?

Model answer

A microservice is a service organized around a cohesive business capability or bounded context. It can be developed, deployed, and scaled independently, and it exposes a defined contract—typically an API or events—to other services. A microservice should have clear ownership; it is not simply any small process or a layer split out for its own sake.

A common arrangement is that each service owns its data and communicates through explicit contracts. That reduces direct coupling, but it means a feature spanning services may require multiple network calls, asynchronous workflows, or eventual consistency.

flowchart LR
    C["Client"] --> G["API gateway"]
    G --> U["User service"]
    G --> O["Order service"]
    O --> Q["Event bus"]
    Q --> I["Inventory service"]
    U --> DU["User data"]
    O --> DO["Order data"]
    I --> DI["Inventory data"]
Diagram

The main benefits are independent deployment, scaling, and clearer team ownership. The costs include network failure modes, distributed tracing and monitoring, API/versioning work, data consistency challenges, and greater operational overhead. I would choose microservices when domain boundaries and team needs justify that cost; for a small product or tightly coupled domain, a modular monolith may be simpler and safer.

TechnicalEasyAmerican ExpressStaff Engineer

20. What does “data” mean in data warehousing terminology?

Model answer

Meaning

In data-warehouse terminology, data is the recorded facts and events an organization collects and organizes so people can analyze what happened, why it happened, and how results change over time.

  • Facts: measurable events, such as an order, page view, payment, or support case.
  • Dimensions: the context used to group facts, such as customer, product, location, or date.
  • Metadata: information describing the data, including its meaning, source, owner, schema, and quality rules.

A warehouse integrates data from operational systems into a consistent, historical representation. For example, an order fact joined to customer and date dimensions can answer, “How did revenue by customer segment change quarter over quarter?”

The data may be raw, transformed, or curated. The important distinction from operational data is its purpose: warehouses are optimized for reliable, often large-scale analysis rather than processing individual transactions.

Practice these out loud, don't memorise them

Reading an answer is not the same as being able to give one under pressure. ChannelPulse plays the interviewer, asks the follow-ups, and scores each answer with feedback and a model answer so you can hear the gap between what you said and what lands.

Get ChannelPulse Browse all questions