American Operations · Software Engineer
Updated · 2026-10-02

American Operations Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Candidates describe American Operations as an organization whose engineers look after digital infrastructure. The work they name includes COBOL modernization, DevSecOps pipelines and Facility and Equipment Management (FEM) systems, and the teams they mention range from UC/Voice Engineering to Release Train Engineering. Maximo and CI/CD tooling come up as part of the stack, and Java and Python are listed for development roles. For a Software Engineer this means keeping older systems running while changing them safely, and building the delivery and security automation around them.

This guide is for candidates interviewing for a Software Engineer role at American Operations. It covers the two reported rounds, Initial Screening and Technical Evaluations, and the nine reported questions on legacy modernization, DevSecOps, production debugging, scalability and engineering trade-offs. It does not cover pay, and it makes no claim about any one team's exact format, because candidates say the technical focus varies by team.

Candidates report two rounds over roughly 2-4 weeks: an Initial Screening, then Technical Evaluations built around practical experience and engineering principles. Timing and focus are reported to vary by team and by security clearance requirements.

DevSecOpsSoftware EngineeringSecurity in Software Delivery

32 min read

Browse Software Engineer questions

See the practice prompts

15Practice promptsAcross five skill areas

The reported questions share one theme: change a system that already matters without breaking it. You are asked how to modernize a legacy system with zero downtime, what goes wrong when a modern application meets a legacy database, how to keep a voice or communication system up under high load, and how to debug a complex failure in production. Each answer is stronger with a concrete project behind it, so pick two or three systems you have really worked on and know them down to the failure modes.

The second group is judgment under constraints: balancing rapid feature delivery against long-term maintainability, choosing which technical debt to pay down when stakeholders disagree, and describing a time you optimized an underperforming system and which metrics proved it. Candidates also report prompts about DevSecOps pipelines and about troubleshooting without the original documentation. These reward a clear structure: the situation in two sentences, your decision, the evidence, and the result.

The stack matters. Candidates name COBOL, Maximo, CI/CD tooling and DevSecOps for role-specific discussions, and Java or Python for development roles. You will not know every item, so decide in advance how to describe adjacent experience honestly. For example, if you have not touched COBOL, explain how you have worked in a codebase you inherited and what you did to make a first change safe.

Candidates also report that the loop leans on past projects: the reasoning behind architectural decisions and how you handled unexpected failures. Expect to explain trade-offs aloud rather than recite syntax, and prepare example scenarios such as reviewing a code change to a system that cannot go down, or resolving a dependency conflict in production.

01

Initial Screening

reported

Candidates describe the Initial Screening as a set of discussions about your qualifications and fit for the role. Reports do not list specific questions for this stage, so treat it as the place where your background has to connect to the stack in the posting, such as COBOL, Maximo, DevSecOps or CI/CD. Have a short, concrete account of your last two projects and what you personally owned. Because candidates say many roles are location-specific and timing can depend on security clearance requirements, ask about both early.

What to demonstrate

  • How your experience maps to the stack and team named in the role
  • Whether you can describe a project you owned end to end
  • Clarity when summarizing your own technical decisions

How to prepare

  • Write a two-minute walk through your career that ends on the legacy, DevSecOps or reliability work most relevant to this role.
  • Pick one project and be ready to explain the why behind its architecture and one failure you handled.
  • List the posting's stack items, mark which you have used, and prepare an honest bridge for the ones you have not.
  • Prepare questions on the team's current technical challenges, location requirements and any clearance steps.
American Operations Software Engineer candidate reports ↗
02

Technical Evaluations

reported

Candidates describe Technical Evaluations as deep-dive technical discussions about practical experience and engineering principles. Reported topics include modernizing a legacy system with zero downtime, integrating modern applications with legacy databases, scaling a voice or communication system, debugging a production failure, and security testing inside an automated build. Candidates also mention example scenarios such as reviewing a change to a critical system and resolving a dependency conflict in production. Prepare by telling each answer as a sequence of decisions with trade-offs, drawn from systems you have actually run.

What to demonstrate

  • Hands-on command of your primary languages, platforms and delivery tooling, explained through trade-offs
  • How you reason about stability, failure modes and security in a technical decision
  • Whether you can connect engineering choices to operational outcomes

How to prepare

  • Outline a zero-downtime cutover for a legacy system: parallel run, incremental routing, data reconciliation and a rollback trigger.
  • Write down the failure modes of a modern service reading from a legacy database: encodings, missing constraints, batch windows and lock contention.
  • Rehearse a production debugging sequence aloud, from what changed to the smallest reproduction to the fix and the follow-up.
  • Practise explaining a code review and a dependency conflict resolution for a system that cannot afford an outage.
American Operations Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Describing a legacy modernization as a rewrite followed by a switch-over night

For the zero-downtime question, lead with incremental routing: run old and new in parallel, compare outputs, move traffic in slices, and define the rollback trigger and the data reconciliation check before the first cutover.

02

Answering the DevSecOps question with a list of scanners and no gate policy

Say where each check runs in the pipeline, what severity blocks a build, who owns suppressions, and one case where a gate caught or wrongly blocked something. Tie it to a pipeline you really ran.

03

Debugging a production failure by naming a theory first

Start with what changed and when, check that the monitoring is trustworthy, then narrow the failure with a split that rules out half the candidates. Separate the trigger from the cause and say what you would add so it is caught next time.

04

Giving a legacy-database integration answer that only says 'use an API layer'

Name the concrete hazards: character encoding and date formats, tables with no constraints, batch jobs that lock rows, and unclear ownership of the schema. Then say how you isolate them, for example with an anti-corruption layer, read replicas or change capture, and contract tests.

05

Telling trade-off and optimization stories without numbers or a stakeholder

For the speed-versus-maintainability, technical debt and underperforming-system questions, state the baseline metric, what you changed, the measured result, and who disagreed. A story with no measurement or no decision reads as observation.

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

12 technical prompts0 include a worked solution

Find overlapping job attempts and peak concurrency from lease records

medium
sweep lineintervalsleases

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

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

Identify the heaviest tenants in a five-minute window under memory pressure

medium
top-kheavy hittersstreaming

The edge service handles about 3,000 requests per second across roughly 50,000 tenants, peaking near 9,000. Expose the 50 heaviest tenants by request count over the trailing five minutes so limits can be tightened before one tenant's backfill starves the fleet. You may not retain five minutes of raw records. Give the exact solution and its memory, then the bounded-memory approximation with its error stated as a formula, and say which you would ship and at what tenant cardinality that choice changes.

Approach
  1. Do the exact version first, because it is affordable at this cardinality: a ring of 300 one-second counters per tenant, advanced lazily, is 1,200 bytes of counters per tenant and roughly 60 to 90 MB for 50,000 tenants with overhead. Carry a running total and subtract the bucket you overwrite so a window read is O(1) rather than 300 adds.
  2. Extract the top 50 with a size-k min-heap over the tenant sums: O(d log k) for d tenants, against O(d log d) to sort them all. Maintaining the heap continuously instead of on query requires a tenant-to-heap-index map, because incrementing a count already inside the heap means sifting from a known position, and without that map you rebuild the heap on every request.
  3. State the approximation precisely rather than gesturing at sketches. Misra-Gries with m counters retains every item whose true count exceeds N/(m+1), and each retained count underestimates the truth by at most N/(m+1). With m = 1,000 and N = 900,000 requests in the window the error is roughly 900 requests, which is fine for spotting a tenant sending 50,000 and useless for ranking two tenants 200 apart.
  4. Say what breaks when the window slides: Misra-Gries and Space-Saving are insert-only and cannot be decremented as records age out. The workable construction is one summary per sub-window, say ten seconds, with 30 summaries merged at query time, and the merged error is the sum of the per-summary errors, so the bound degrades linearly in the number of sub-windows.
Follow-up
  • The heaviest tenant is heavy because of one export job rather than user traffic. Should the limiter treat those as the same tenant?
  • Two tenants sit tied at the boundary of the top 50. Does your answer flap, and does the flapping matter?

Archive a resource graph without breaking live references or recursing

medium
graph traversaltopological ordertenant isolation

Resources reference other resources within a tenant; for the largest tenant the reference table holds up to 2,000,000 nodes and 8,000,000 edges. Archiving a resource must archive everything reachable from it that nothing outside the set still references, refuse when a live external referrer exists, and terminate when references form cycles, which they legitimately do. Produce the archive order and the refusal list, targeting O(V+E). Say what stops the traversal crossing a tenant boundary, and why recursion is the wrong control structure at this size.

Approach
  1. Load the subgraph with the tenant predicate on both endpoints of the edge, not only on the side you started from. Scoping the left table alone is the classic cross-tenant leak: one mis-entered edge then pulls another tenant's resources into the traversal and, worse, into the archive.
  2. Traverse iteratively with an explicit stack. A 2,000,000-node graph can hold a chain deep enough to exhaust a native stack in the low tens of thousands of frames, and that failure is a process crash rather than an error you can return.
  3. Treat cycles as data rather than corruption: compute strongly connected components with Tarjan in O(V+E) using its own explicit stack, then condense. The condensation is a DAG, so a topological order over it gives the archive order, and every member of a component archives in one transaction because no order within a cycle is valid.
  4. Decide refusals with reverse edges. A candidate is archivable only if every in-edge originates inside the candidate set, so build the transpose or count in-degrees restricted to the visited set, and emit each blocked resource with the id of the external referrer, which is the only part of the answer an operator can act on.
Follow-up
  • The graph is read in one query and the archive writes a minute later. What can change in between, and how do you make the write safe?
  • The candidate set is 400,000 resources. Is that one transaction, and if not, what does a half-finished archive look like to a reader?

Each day targets one cluster of the reported questions or one part of the stack candidates name, and ends with something written that you can reread before the interviews.

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 own systems
  • Write the two reported rounds, Initial Screening and Technical Evaluations, and the stack items in the posting: COBOL, Maximo, DevSecOps, CI/CD, Java or Python.
  • Mark each stack item as used, adjacent or new, and write one honest sentence bridging each gap.
  • Choose the two or three projects you will use for deep-dive answers and write the architecture and one failure for each.

Deliverable: A one-page map of the rounds and stack gaps, plus a project sheet with architecture, decisions and one failure per project.

02Legacy modernization and legacy databases
  • Outline a zero-downtime modernization of a legacy system: parallel run, traffic slicing, reconciliation checks and the rollback trigger.
  • List the failure modes of a modern service reading a legacy database, and pair each with a mitigation such as an anti-corruption layer or contract tests.
  • Say both answers aloud and cut anything that does not carry a decision.

Deliverable: A cutover outline and a table of legacy-database hazards with mitigations, each with a spoken version.

Practice prompt ↗Practice prompt ↗
03DevSecOps pipeline story
  • Sketch a pipeline with secret scanning, static analysis, dependency scanning, image scanning and dynamic testing, and mark which stage blocks the build.
  • Write the gate policy: severities that block, suppression ownership and expiry.
  • Write your pipeline answer as a story with one measured result and one thing that went wrong.

Deliverable: A pipeline diagram with the blocking policy and a written story ready to speak.

Practice prompt ↗
04Scalability and production debugging
  • Take a voice or communication system and find its bottleneck on the call setup path and on the media path, then list what you would measure and shed first under load.
  • Write your production debugging sequence: what changed, reproduction, bisection, fix, follow-up.
  • Practise the dependency-conflict and critical-code-review scenarios as spoken walkthroughs.

Deliverable: A load-handling outline, a debugging checklist, and two scenario walkthroughs.

Practice prompt ↗Practice prompt ↗
05Trade-offs, debt and optimization
  • Write a rule you use to balance delivery speed against maintainability, with one example where it changed a decision.
  • Build a simple ranking for technical debt that weighs incident risk, change frequency and stakeholder impact, and test it on two items from your work.
  • Prepare the optimization story with baseline, change and measured result.

Deliverable: A debt-ranking rubric and a metrics-backed optimization story.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
06Behavioral stories and the unknown system
  • Write the troubleshooting-without-documentation story with the evidence you used and the artifact you left behind.
  • Write the account of a failure and what you changed afterward, plus one example of explaining a system limit to a non-technical stakeholder.
  • Run the PracHub practice prompt on unblocking another engineer and compare its structure to your own stories.

Deliverable: Four written behavioral stories, each with a decision, a result and a lesson.

Practice prompt ↗Practice prompt ↗
07Full dry run
  • Run a spoken mock covering the screening walk-through, then three technical questions chosen at random from the reported set.
  • Review where you rambled or skipped the trade-off, and tighten those answers.
  • Write the questions you will ask about the team's current challenges, location and clearance steps.

Deliverable: A recorded or timed mock with notes on weak answers and a final list of questions to ask.

Practice prompt ↗Practice prompt ↗

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

Candidates report prompts about DevSecOps experience, working without documentation and measuring an optimization, along with an emphasis on the reasons behind past architectural decisions and how you handled unexpected failures. Prepare stories where you made the call, with evidence and a result.

Describe your experience with DevSecOps pipelines. How do you integrate security testing into an automated bui

medium
Technical Domain & Modernization

Describe your experience with DevSecOps pipelines. How do you integrate security testing into an automated build process?

Approach
  1. Open with the pipeline you worked on in one or two sentences: language, build tool, where code is built and deployed. Then name what you personally added, not what the team had. If your experience is on Java or Python services rather than COBOL or mainframe builds, say so and describe how the same gates would carry over.
  2. Walk the pipeline left to right. Run secret scanning and linting before or at commit, static analysis and dependency (software composition) scanning on every pull request, container or image scanning at build, infrastructure-as-code checks before deploy, and dynamic testing against a staging environment. Sign or checksum the artifact so the thing tested is the thing deployed.
  3. Describe the gate policy, because it is the real decision. For example, fail the build on new high-severity findings, warn on lower ones, and require an expiry date and an owner on every suppression. Keep fast checks on the pull request and move slow scans to a nightly or pre-release stage so developers do not route around the pipeline.
  4. Close with a result you measured: findings caught before merge, a vulnerable dependency blocked or patched, change in build time, or a drop in false positives after tuning. Mention one thing that went wrong, such as a noisy rule that was ignored, and what you changed.
  5. The mistake that sinks this answer is a tool list with no decision in it. Pick one scan type, explain why it sits where it does, and show a case where it stopped something or was wrong.
Follow-up
  • A scanner blocks a release on a finding you believe is a false positive. What do you do?
  • How do you decide which findings block a build and which only warn?
  • How would you add this to a build for a legacy codebase that has no automated tests?

Describe a time you had to troubleshoot an issue where you did not have access to the original documentation.

medium
Problem-Solving & Systems Thinking

Describe a time you had to troubleshoot an issue where you did not have access to the original documentation. What was your strategy?

Approach
  1. Pick a story where the system was running in production or about to be changed, the original author and the documentation were unavailable, and you owned the outcome. Give the situation in two sentences and the stakes in one, then spend the rest on method.
  2. Show how you rebuilt understanding from evidence, in order: read the logs and configuration, trace the code path from the symptom, check version control history and ticket history for why code looks the way it does, and read the schema or message formats to see what data actually flows. Say which source you trusted least and why.
  3. Show how you stayed safe. Reproduce in a non-production copy, make read-only observations first, change one thing at a time, and have a rollback ready. Describe how you confirmed your model was right, for example by predicting what a log line or query result would show before looking, or by adding a characterization test that pins current behavior.
  4. Include the people side: who you asked, such as operators, support staff or former owners, and what you asked that the code could not tell you. End with the result and the artifact you left behind, such as a runbook, a diagram or tests, so the next person is not in the same position.
  5. The mistake that sinks it is a story that ends with 'I figured it out' and no method, or a hero narrative where you changed production on a hunch. Make the evidence and the safety steps visible.
Follow-up
  • How did you verify your understanding was correct before you changed anything in production?
  • What would you have done if nobody who knew the system could be reached?
  • What did you leave behind so the next engineer would not start from zero?

Unblock an engineer without taking the keyboard

easy
mentoringleasesat-least-once

A teammate has spent two days on a job handler that occasionally writes duplicate rows. They are certain the queue is delivering twice by mistake. You suspect a lease expiring under a slow handler, so the job is running concurrently with itself. Describe how you have unblocked someone in this position: what you asked before offering a hypothesis, what you showed them rather than told them, and what you left them owning. Then say what you would do if their theory turned out to be the right one.

Approach
  1. Ask before diagnosing, and ask for things answerable from data they already have: the attempt count on the job rows that produced duplicates, the handler's observed duration against its lease expiry, and whether the duplicate rows share a natural key that a unique constraint could have caught.
  2. Teach the shape rather than the answer. A lease cannot distinguish a dead worker from a slow one, so a handler that outruns its lease is running twice by design, and deploys deliver the other half by killing handlers mid-run on every rollout. Both of their candidate theories produce identical duplicate rows, which is why the evidence has to come from timings rather than from argument.
  3. Hand over a checklist they execute: a natural key on every write the handler performs so the second copy collides rather than appends, the record of intent written before any external effect, a lease heartbeat while running, and the metric that shows it working.
  4. Keep ownership with them deliberately. Pair on the first write, then step back; if you finish it yourself you have closed one ticket and left the same person stuck on the next redelivery.
Follow-up
  • How would you distinguish a genuine double-delivery from a lease expiry using only the data already stored?
  • Their handler calls an external endpoint before recording that it did. What do you tell them to change first?
  • 01

    Describe your experience with DevSecOps pipelines. How do you integrate security testing into an automated build process?

  • 02

    Describe a time you had to troubleshoot an issue where you did not have access to the original documentation. What was your strategy?

  • 03

    Tell us about a time you optimized a system that was underperforming. What metrics did you use to measure success?

  • 04

    Describe a failure on a system you owned and what you changed afterward.

  • 05

    Tell me about a time you explained a technical limitation to a non-technical stakeholder.

PracHub preparation framework ↗
How long does the American Operations interview process take?

Candidates report two rounds, Initial Screening and Technical Evaluations, over roughly 2-4 weeks. They also report that the pace can vary by team and by security clearance requirements, so ask the recruiter what applies to your role.

American Operations Software Engineer candidate reports ↗
What is the best way to prepare for the technical round?

Prepare your past projects in depth: the architecture, the decisions and why you made them, and a failure you handled. Then rehearse the reported questions on legacy modernization, legacy databases, scalability, production debugging and DevSecOps as spoken answers with trade-offs.

American Operations Software Engineer candidate reports ↗
Is the role remote?

Candidates report that many roles are tied to a location because of the systems involved. Check the location details in your interview invitation and confirm with the recruiter before you plan.

American Operations Software Engineer candidate reports ↗
Do I need COBOL experience?

The stack varies by team. Candidates name COBOL and Maximo for some roles, and Java or Python for development roles. If you lack a listed technology, describe adjacent work, such as changing an inherited codebase safely, and be specific about how you would learn it.

American Operations Software Engineer candidate reports ↗
What security topics should I review?

Review how security checks fit into an automated build: secret, static and dependency scanning, image and infrastructure checks, dynamic tests, and a policy for what blocks a release. Candidates also report that security implications and failure modes belong in any technical decision you describe.

American Operations Software Engineer candidate reports ↗
What should I ask at the end of an interview?

Candidates are encouraged to ask about the team's current technical challenges and how the roadmap is prioritized. Add practical questions about the legacy-to-modern mix of the codebase, release process and any clearance or location requirements.

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.