cswork / libraryOpen practice workspace

Interview guides · Ascension

Ascension Software Engineer Interview Guide

Ascension Software Engineer interview guide: the five reported rounds, Spring Boot, cloud, identity and HIPAA design questions, and a 7-day prep plan.

The 60-second brief

Ascension is a nonprofit Catholic health system. Candidates describe the Software Engineer role as building and maintaining cloud-native software for its clinical, administrative and marketing digital experiences. The reported technical landscape includes Google Cloud Platform, Microsoft Azure, Oracle Cloud Infrastructure and Salesforce Data Cloud, with Spring Boot named for backend work. The problems candidates mention are data harmonization, pipeline performance and secure identity management, under HIPAA, SOC2 and GDPR constraints. Teams are described as Lean-Agile, with a rotational support model.

This guide is for engineers preparing for a Software Engineer loop at Ascension, whether the team leans toward cloud architecture, data and marketing platforms, or a regional engineering group. It covers the five reported rounds, the fifteen reported questions (microservices, data ingestion, compliance, multi-cloud design, identity federation, delivery practice, mentoring and on-call), and a seven-day plan. Candidates also report that formats vary by team, so confirm the shape of your own loop with the recruiter.

Candidates report five rounds over roughly 4-6 weeks: Recruiter Screening, Hiring Manager Interview, Core Assessment Phase, Technical Rounds and a Behavioral Interview. The mix runs from resume discussion through panel conversations to design and scenario discussion.

Focus areas

  • Salesforce Data Cloud
  • Marketing Cloud
  • HIPAA compliance

Overview

The reported work is cloud-native application engineering in a regulated setting. Candidates mention services built with Spring Boot, workloads placed across Google Cloud Platform, Azure and Oracle Cloud Infrastructure, large datasets moved between systems, and identity handled with SAML 2.0 and OAuth 2.0. Most reported questions are open discussions about how you design, secure and run such systems, so the best preparation is to speak your answers aloud until each one has a clear structure, a trade-off and a concrete example from your own work.

Prepare the stack as a set of decisions you can defend. For Spring Boot and microservices, know service boundaries, configuration, health checks, and what you test at unit and integration level. For multi-cloud, be ready to compare platforms on identity integration, data residency, managed services you would rely on, and cost. For infrastructure as code, which candidates list with Terraform, practise explaining how a repeatable deployment and a least-privilege access policy are written and reviewed. Candidates also list Salesforce Data Cloud and Marketing Cloud among tested topics, so if your target team is a marketing or data platform team, add profile unification, segmentation and consent flows to your list.

Compliance is the thread that runs through the reported questions. HIPAA, SOC2 and GDPR, consent management and patient data privacy show up in the ingestion, identity-resolution and architecture questions alike. Do not keep a separate compliance answer. Build one checklist (data classification, encryption in transit and at rest, least-privilege roles, audit logging, retention and deletion, consent checks) and apply it inside every design you describe. For identity resolution, be ready to talk about matching rules, false merges and how a consent flag travels with a merged record.

The behavioral side is as concrete as the technical side: stabilizing an at-risk project, keeping quality high in a fast cycle, and mentoring less experienced engineers. Candidates are advised to use STAR with the trade-offs and measurable outcome stated.

The Ascension interview process

Candidates describe five stages in this order, from a recruiter screen to a values-focused conversation with leadership. Reports add that the number and shape of rounds vary by team.

Recruiter Screening

Candidates describe this first stage as a screen to verify your background and your interest in the mission. Reports add that it is also where background, compensation expectations and the general scope of the role are discussed. It is a conversation rather than a technical test, so the work is to make your story short, specific and aimed at this role.

What to demonstrate

  • Whether your background matches the cloud, backend or data work in the role
  • Clear communication of what you have built and your interest in a healthcare organization
  • Practical fit: location, expectations and scope

How to prepare

  • Write a short career narrative that names Spring Boot or backend services, the cloud platforms you have used, and one compliance-sensitive system you worked on.
  • Decide why a healthcare mission interests you, in terms of a concrete kind of software you want to build, not a slogan.
  • Prepare your compensation expectations and ask the recruiter which teams the loop covers and what format each later round takes.

Hiring Manager Interview

Candidates report an in-depth discussion of your resume and the experience relevant to the job, with the hiring manager. Expect to walk through projects you owned and be asked to explain decisions in detail. Questions about delivery practice, mentoring or on-call balance are the kind this conversation can cover.

What to demonstrate

  • Depth of ownership in the projects on your resume
  • Relevance of your experience to the team's cloud and data work
  • Ability to explain technical decisions and their outcomes plainly

How to prepare

  • Pick two projects and write for each the problem, your specific contribution, the architecture trade-off you made and a result you can measure.
  • Rehearse the answers on Spring Boot and microservices experience, testing in a fast delivery cycle, and balancing delivery with rotational on-call support.
  • List questions for the manager about the team's platforms, how Lean-Agile planning works there, and how on-call rotates.

Core Assessment Phase

This stage is described as a series of panel interviews with peers, technical leads and stakeholders. The audience mixes engineers and non-engineers, so you need two registers: precise technical detail for peers and plain business language for stakeholders. The reported questions on identity federation, cross-cloud architecture and explaining architecture to non-technical audiences fit this kind of panel.

What to demonstrate

  • Technical depth in front of peers and technical leads
  • Ability to adjust the explanation for stakeholders outside engineering
  • Collaboration style across functions

How to prepare

  • Draw the SAML 2.0 and OAuth 2.0 flows from memory, naming each hop, then list what you check when a login or token exchange fails (clock skew, audience, redirect URI, signing certificate, scopes).
  • Prepare a cross-cloud architecture walkthrough you can give at two levels: a diagram-level technical version and a version that names cost, risk and outcome only.
  • Prepare one story of explaining an architecture decision to a non-technical or executive audience, including what you cut and what changed as a result.

Technical Rounds

Candidates report practical discussions of system design, past projects and scenario-based problems. This is where the reported design questions on data ingestion, identity resolution, high-volume pipelines and cloud placement are practised. Treat each scenario as a design conversation: clarify requirements, sketch components, say where compliance and cost enter, then name the trade-offs.

What to demonstrate

  • Structured design thinking for data ingestion and integration problems
  • Awareness of security, privacy and cost as non-functional requirements
  • Troubleshooting a scenario from symptoms to cause

How to prepare

  • Design a healthcare data ingestion stream end to end: sources, an ingestion buffer, validation, harmonization, storage, consent and access checks, and replay when a step fails.
  • Prepare an identity-resolution design: deterministic keys first, fuzzy matching with a review queue, a merge record that can be undone, and a consent flag that survives merging.
  • Prepare a decision matrix for placing an application on one of the three cloud platforms, with identity integration, data residency, managed-service fit, operating cost and team skills as columns.

Behavioral Interview

The last stage is reported as behavioral and values-based, with leadership. Expect experience questions about stabilizing a troubled project, mentoring, quality practices and delivering under compliance pressure, plus questions about why healthcare. Prepare stories that name your decision, your trade-off and a measurable result.

What to demonstrate

  • Leadership and mentoring examples from your own work
  • Judgment when delivery pressure meets security or compliance requirements
  • Reasons for wanting to work in a healthcare setting

How to prepare

  • Write three STAR stories, one each for rescuing a project, raising quality in a fast cycle and mentoring, and keep your own actions in first person.
  • Prepare a story where a security or privacy requirement changed a plan, and what you traded off to keep the date or move it.
  • Prepare a sincere, specific answer on why patient-data-sensitive software matters to you.

Where candidates lose points

Naming one cloud platform's services and calling it a multi-cloud design

Frame cloud placement as criteria: identity integration, data residency, managed-service fit, cost and team skills. Walk a decision matrix and explain what would make you move a workload.

Adding HIPAA or GDPR at the end of a design as a single sentence

Build compliance into the components as you draw them: data classification, encryption in transit and at rest, least-privilege roles, audit logs, retention and deletion, and consent checks before data is used.

Mixing up SAML 2.0 and OAuth 2.0 when asked about federation

Know what each protocol does. SAML issues signed assertions for sign-on, OAuth 2.0 delegates authorization with tokens, and a sign-in layer on OAuth is needed for authentication. Practise a troubleshooting order: metadata and certificates, audience and redirect values, clock skew, scopes and claims.

Treating identity resolution as an exact-match join

Describe deterministic matching first, then fuzzy matching with a review queue, a merge you can reverse, and handling of false merges. State how consent travels with the merged record.

Telling behavioral stories in the plural with no decision and no result

Use first person singular, name the decision you owned, the trade-off and a measurable outcome. Keep the situation to two sentences and spend the rest on your reasoning.

Questions & practice

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?

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

Medium · top-k · heavy hitters · streaming

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?

Merge partitioned event streams into one ordered feed with bounded lateness

Hard · k-way merge · watermarks · out-of-order streams

The read-model service consumes 64 log partitions carrying about 4,000 events per second in total. Each partition is ordered within itself, but partitions drift by up to 30 seconds, and the activity feed must present a tenant's events in occurred_at order. Produce the merge. State its complexity, the buffer it requires in events and in bytes, what happens when one partition is idle, and what you do with an event that arrives after you have already emitted its position. Payloads average 1 KB.

Approach

  1. Merge with a min-heap over the 64 partition heads keyed on (occurred_at, event_id): O(log P) per event and O(n log P) overall. The tie-break on event_id is what makes the output deterministic when two partitions carry the same millisecond, which matters because the feed is paginated and a non-deterministic order reorders pages under the reader.
  2. Emitting the heap head is only correct once every partition has produced everything up to that timestamp, so the emit condition is a watermark: the minimum across partitions of the highest occurred_at seen, less the allowed lateness. Events are held until the watermark passes them, which is what turns individually ordered streams into a jointly ordered one.
  3. Size the buffer from the lateness rather than guessing: 4,000 events per second times 30 seconds is 120,000 buffered events, and at 1 KB each about 120 MB of heap. That number is the real price of the ordering guarantee and belongs in front of whoever asked for it.
  4. Handle the idle partition explicitly, because it fails the feed rather than corrupting it: a partition with no traffic never advances its own maximum, so the watermark freezes and output stops entirely. Either every partition emits a periodic idle marker carrying the broker's current time, or the watermark falls back to wall clock for a partition silent beyond a threshold.

Follow-up

  • The lateness budget is raised to five minutes. What is the new buffer, and what besides memory changes?
  • The consumer restarts. Where does it resume from, and what does the feed look like for the first 30 seconds?

Explain why the owner filter ignores the listing index

Medium · composite index · query plans · sort elimination

The only index on resource is (tenant_id, status, updated_at DESC, resource_id DESC). A new endpoint returns one user's resources across all statuses, newest created first: WHERE tenant_id = $1 AND owner_user_id = $2 ORDER BY created_at DESC LIMIT 20. On a tenant with 2M rows it takes 900 ms and EXPLAIN shows a sort above a large scan. Explain precisely why the existing index cannot serve it, give the index that can, and state which of these the new index still will not help: owner_user_id alone across tenants; the same query ordered by updated_at. PostgreSQL 16.

Approach

  1. Separate the two jobs an index does. For filtering, a composite btree is seekable only on a left prefix, so with no predicate on status the scan can at best range over tenant_id and test owner_user_id per row; PostgreSQL 16 has no btree skip scan to jump the unconstrained column.
  2. For ordering, the index is sorted by (status, updated_at) within a tenant and not by created_at, so the LIMIT cannot stop early: every matching row is read and then sorted. That is the 'Sort Method: top-N heapsort' line, and it is why the plan reads 2M rows to answer with 20.
  3. Derive the replacement from the access path — equality, equality, then the ordering column: CREATE INDEX CONCURRENTLY ON resource (tenant_id, owner_user_id, created_at DESC). The scan seeks to the (tenant, owner) range and walks 20 entries in order, so the Sort node disappears along with the row-read.
  4. Treat INCLUDE (title, status) as conditional, not free. An index-only scan still visits the heap for any row whose page is not marked all-visible, so on a table taking 1.2k writes/second the win depends on autovacuum keeping the visibility map current, and the wider index costs more on every insert.

Follow-up

  • 90% of rows are status='active'. Would a partial index WHERE status = 'active' change your answer, and for which of the three queries?
  • A dashboard runs this for 40 owners in one page load. What changes about the design?

Write the update path that detects a concurrent edit

Medium · optimistic concurrency · transactional outbox · audit history

resource carries version INT NOT NULL DEFAULT 1. resource_revision holds revision_id, resource_id, version, actor_user_id, change_kind, patch JSONB, request_id, created_at with UNIQUE (resource_id, version). outbox_event holds aggregate_type, aggregate_id, aggregate_version, event_type, payload, status. A PUT carries the version the client read. Write the exact statements for the single transaction that applies the edit, records the revision and enqueues 'resource.updated', and give the handler's branch on zero affected rows. Then say what PostgreSQL 16 does under READ COMMITTED when two of these updates hit one row at once.

Approach

  1. One transaction, three writes, no network call inside it: UPDATE resource SET title = $3, version = version + 1, updated_at = now() WHERE resource_id = $1 AND tenant_id = $4 AND version = $2; then INSERT the resource_revision row at version $2 + 1; then INSERT the outbox_event row at the same aggregate_version. The event goes to a table rather than a broker because no transaction spans both.
  2. Branch on the affected-row count before doing anything else. Zero has three causes — stale version, wrong tenant, row gone — so re-read once and map to 409 carrying the current version, or 404 for an id outside the caller's tenant, which also stops the endpoint confirming that another tenant's id exists.
  3. State the engine behaviour instead of assuming it. Under READ COMMITTED the second UPDATE blocks on the row lock, and when the first commits PostgreSQL re-evaluates the WHERE clause against the newly committed row, so the version predicate now fails and the statement reports zero rows. Under REPEATABLE READ the identical collision raises SQLSTATE 40001 instead, so the handler must fold both shapes into one conflict response.
  4. Keep UNIQUE (resource_id, version) even though the predicate already serialises writers. It is what makes a lost update unwritable if any other path ever reaches the revision table, and it converts a logic bug into 23505 rather than into a silently missing history row.

Follow-up

  • A client sends the version it read ten minutes ago and the resource has moved three versions. What is in your 409 so it can resolve the conflict without a full re-fetch?
  • Two editors, two disjoint fields, no overlap. Does your answer still refuse the second write, and should it?

What is your experience building and deploying applications using Spring Boot and microservices architectures?

Medium · Technical and Domain Expertise

Approach

  1. Anchor the answer on one service you built: its bounded context, the API it exposes, the data it owns (one database per service, no shared tables) and how it was packaged and shipped (executable jar in a container image, CI pipeline, rolling or blue-green deploy).
  2. Show Spring Boot fluency: starters and auto-configuration, externalised config through profiles and environment variables with secrets pulled from a secret store rather than baked into the jar, and Actuator health endpoints split into liveness and readiness probes for the orchestrator.
  3. Explain service-to-service calls: synchronous REST with explicit timeouts, retries with exponential backoff and jitter, and a circuit breaker such as Resilience4j; asynchronous events through a broker with idempotent consumers so redelivery is harmless.
  4. Address consistency across services: no distributed transactions, so use a saga with compensating actions, or a transactional outbox so the database write and the event publish cannot diverge.
  5. Close with testing and observability: slice tests (@WebMvcTest, @DataJpaTest), Testcontainers for integration tests against real dependencies, contract tests between services, and trace ids propagated through Micrometer Tracing or OpenTelemetry into every log line.

Follow-up

  • How did you roll out a breaking API change between two services without a coordinated deploy?
  • A downstream service starts answering in 10 seconds instead of 100 ms. What protects your service, and what does the caller see?
  • Looking back, would a modular monolith have served that system better, and what would have told you so?

How would you approach designing a scalable data ingestion stream for a unified healthcare data ecosystem?

Medium · Technical and Domain Expertise

Approach

  1. Clarify sources, volume and latency first: HL7 v2 feeds, FHIR APIs, batch files, CRM or marketing events; which consumers need near-real-time data and which can take a daily load.
  2. Lay out the layers: connectors or ingestion endpoints, a durable partitioned log (Kafka, Pub/Sub or Event Hubs) keyed by patient or source record so per-entity order holds, an immutable encrypted raw zone, a validation and normalisation step into a canonical model, then curated stores.
  3. State delivery semantics: at-least-once delivery with idempotent writes keyed on source system plus message id, a dead-letter queue with replay for malformed messages, and a schema registry with compatibility rules so a source change cannot silently break consumers.
  4. Build compliance into the design: TLS in transit, encryption at rest with managed keys, least-privilege service identities, access audit logs, de-identified or tokenised copies for analytics, and only services covered by the cloud vendor's business associate agreement.
  5. Cover scale: consumer parallelism is capped by partition count (extra consumers in a group sit idle), so size partitions for peak; autoscale on consumer lag and alert on lag and dead-letter volume.

Follow-up

  • A mapping bug corrupted a week of normalised records. How do you reprocess without double-writing?
  • A source resends the same clinical event under a new message id. How do you detect the duplicate?
  • How do you honour an erasure request when the raw zone is immutable? (for example, per-subject encryption keys you can destroy)

Can you explain how you ensure security and compliance standards like HIPAA or GDPR are met within cloud-nativ

Medium · Technical and Domain Expertise

Can you explain how you ensure security and compliance standards like HIPAA or GDPR are met within cloud-native applications?

Approach

  1. Start with a data inventory and flow map: where PHI and personal data are stored, processed and logged; apply HIPAA's minimum-necessary standard and GDPR data minimisation to cut what is collected.
  2. Map controls to the HIPAA Security Rule technical safeguards: access control (least-privilege IAM, MFA), audit controls (tamper-resistant access logs), integrity, person or entity authentication, and transmission security (TLS); add encryption at rest with customer- or provider-managed keys.
  3. Explain the cloud shared-responsibility model: a signed BAA, use of HIPAA-eligible services only, private endpoints instead of public buckets or databases, secrets in a secret manager, and policy-as-code guardrails that block non-compliant resources before deploy.
  4. Cover GDPR-specific duties: a lawful basis and consent records, data subject rights (access, erasure, portability), data residency and transfer rules, and notifying the supervisory authority within 72 hours of becoming aware of a breach where feasible.
  5. Show how you keep it true over time: SAST and dependency scanning in CI, log redaction so PHI never reaches application logs, periodic access reviews, and collected evidence for SOC 2 or HIPAA audits.

Follow-up

  • An engineer needs production data to reproduce a bug. What do you allow and how?
  • An auditor asks who viewed a specific patient's record last month. How does your system answer?
  • How do you handle an erasure request when the data also sits in backups?

What strategies do you use for optimizing resource utilization and managing costs in a multi-cloud environment

Medium · Technical and Domain Expertise

What strategies do you use for optimizing resource utilization and managing costs in a multi-cloud environment?

Approach

  1. Get visibility before cutting anything: enforce owner, environment and cost-centre tags or labels through policy, and pull each provider's billing export (GCP billing export to BigQuery, Azure Cost Management exports, OCI cost reports) into one normalised dataset.
  2. Rightsize from measured utilisation: use p95 CPU and memory over a few weeks to downsize instances, enable autoscaling, and schedule non-production environments to shut down outside working hours.
  3. Use commitment discounts only for the steady baseline (GCP committed use discounts, Azure reservations or savings plans) and spot or preemptible capacity for interruptible batch work; the trade-off is a lower rate against lock-in if usage drops.
  4. Attack storage and network: lifecycle rules that move cold data to cheaper tiers, removal of orphaned disks and snapshots, and placement of compute next to its data, because cross-cloud egress is billed and grows with every new integration.
  5. Run it as a loop: budgets and anomaly alerts, showback or chargeback to owning teams, and a unit-cost metric (cost per request or per record processed) so growth is not mistaken for waste.

Follow-up

  • How do you decide what fraction of usage to cover with commitments?
  • One team's bill doubled overnight. What do you check first?
  • Where would you refuse a saving because it weakens availability or compliance?

Walk us through your process for designing an end-to-end cloud architecture across platforms like Azure, GCP,

Medium · Architecture and System Design

Walk us through your process for designing an end-to-end cloud architecture across platforms like Azure, GCP, or Oracle Cloud Infrastructure.

Approach

  1. Start from requirements: functional scope, availability target, RPO and RTO, latency, data residency and compliance; then state why the workload spans several clouds (existing estate, a specific managed service, contracts) instead of assuming multi-cloud is the goal.
  2. Build the landing zone per provider: one identity provider federated into each cloud; a resource hierarchy (Azure management groups and subscriptions, GCP organisation, folders and projects, OCI compartments); hub-and-spoke networking with non-overlapping CIDRs and private interconnects; central logging and policy guardrails.
  3. Choose the workload layer and its trade-off: managed Kubernetes (AKS, GKE, OKE) or containers for portability, versus provider-native managed services that cut operational work but raise lock-in; codify everything with Terraform modules per provider.
  4. Place data deliberately: name the system of record for each dataset, how it replicates, and the latency and egress cost of every cross-cloud path; use an event bus or integration layer instead of point-to-point calls.
  5. Finish with operations: consistent CI/CD, centralised observability, a DR plan that is actually tested, cost tagging, and the same security baseline in every cloud.

Follow-up

  • The primary region of one provider goes down. What keeps running and what does not?
  • What do you standardise across clouds, and what do you let each platform do natively?
  • How do you protect Terraform state and the secrets it touches?

How do you approach data modeling, harmonization, and identity resolution across disparate data silos?

Medium · Architecture and System Design

Approach

  1. Define a canonical model first (a domain model or FHIR resources such as Patient and Encounter), keep the source system and source id on every record for lineage, and map local codes to standard vocabularies such as LOINC, SNOMED CT and ICD-10.
  2. Standardise before matching: normalise names, dates of birth, addresses and phone numbers, because most missed matches come from formatting differences rather than different people.
  3. Resolve identity in tiers: deterministic rules first (exact match on a trusted identifier, or on normalised name plus date of birth plus another attribute), then probabilistic scoring (Fellegi-Sunter weights, Jaro-Winkler similarity on names) with blocking keys so you avoid comparing every pair, which is O(n^2).
  4. Set thresholds into three bands: auto-link, manual review and non-match; produce a master index with a crosswalk from source ids to an enterprise id and survivorship rules (most trusted or most recent source wins per attribute).
  5. State the trade-off: in clinical data a false merge attaches one patient's history to another, so tune for precision, support unmerge, and measure precision and recall on a labelled sample of pairs.

Follow-up

  • A wrong merge is discovered after downstream systems consumed it. How do you unmerge?
  • How does your matcher treat twins who share a surname, address and date of birth?
  • How do you keep the crosswalk correct when a source system renumbers its records?

How do you balance scalability and performance requirements when designing high-volume data pipelines?

Medium · Architecture and System Design

Approach

  1. Pin the targets before designing: peak and sustained throughput, end-to-end latency, freshness requirement and cost ceiling; these decide between batch, micro-batch and streaming.
  2. Scale horizontally by partitioning: pick a key that spreads load evenly while keeping the ordering you need; handle hot keys with salting or two-stage aggregation.
  3. Name the throughput and latency levers: larger batches and compression raise throughput but add latency; parallelism is bounded by partition count; columnar formats such as Parquet with partition pruning speed downstream reads, and compacting small files avoids slow scans.
  4. Design for backpressure and failure: bounded buffers, autoscaling on consumer lag, checkpointing, and idempotent or transactional sinks so retries do not duplicate rows.
  5. Find the real bottleneck by measuring per stage (I/O, serialisation, shuffle, sink writes) and load-testing above expected peak before tuning anything.

Follow-up

  • One partition lags far behind while the others are idle. What is going on and what do you change?
  • When is streaming not worth its cost compared with an hourly batch?
  • How do you backfill a year of history without hurting live pipeline latency?

What decision matrices do you use when evaluating application placement across different cloud infrastructures

Medium · Architecture and System Design

What decision matrices do you use when evaluating application placement across different cloud infrastructures?

Approach

  1. Apply knockout criteria first: compliance coverage (BAA, HIPAA-eligible services), data residency, and any hard dependency on a managed service; options that fail are out before scoring.
  2. Score the survivors with a weighted matrix whose weights stakeholders agree before the scores are filled in, so the outcome is not reverse-engineered.
  3. Use criteria that actually move the decision: data gravity and egress cost to dependent systems, latency to users and dependencies, availability SLAs, team skills, existing licence agreements, total cost of ownership, and exit cost.
  4. Pair the matrix with a migration strategy per application (rehost, replatform, refactor, repurchase, retain, retire), because the placement and the amount of change are linked.
  5. Record the result in an architecture decision record, run a sensitivity check on the weights, and set a trigger for revisiting it, such as a contract renewal or a major cost change.

Follow-up

  • Two options score within a few points of each other. How do you break the tie?
  • A team insists on a platform because they like one of its services. How do you handle it?
  • Which criterion's weight would you double for a workload that handles patient data, and why?

How do you actively participate in Lean-Agile development activities and cross-functional team planning?

Medium · Process and Collaboration

Approach

  1. Describe concrete contributions to each ceremony: refinement (splitting stories into vertical slices with clear acceptance criteria), sprint planning that accounts for real capacity including on-call, standups focused on blockers, demos of working software, and retros that end with one owned action.
  2. If the organisation plans across teams in increments (SAFe-style PI planning), explain how you surface cross-team dependencies on a shared board and treat risks with ROAM: resolved, owned, accepted or mitigated.
  3. Show the cross-functional habits: raising dependencies early, timeboxed spikes for unknowns, and a definition of done that includes tests, security review and documentation.
  4. Back it with one example and a measure that improved: cycle time, carry-over rate or sprint predictability, and what you changed to move it.

Follow-up

  • A dependency team cannot commit to your date during planning. What do you do?
  • How do you get technical debt into a backlog that product owns?
  • The same story has carried over three sprints in a row. How do you diagnose it?

Can you share an experience where you had to translate technical architectural concepts for non-technical or C

Medium · Process and Collaboration

Can you share an experience where you had to translate technical architectural concepts for non-technical or C-suite stakeholders?

Approach

  1. Pick a real decision with stakes: the audience, the decision they had to make (fund a migration, accept a risk, choose between platforms) and why the technical detail mattered to it.
  2. Show how you reframed it: lead with the recommendation, then two or three options compared on cost, risk, timeline and effect on users, with the technical reasoning one layer down for anyone who asks.
  3. Translate mechanisms into consequences: instead of 'single-region deployment', say what an outage would stop and for how long; use one analogy at most, and check it is accurate.
  4. Close with the outcome and how you confirmed understanding: the decision taken, what changed afterwards, and anything you would present differently.
  5. The mistake that sinks this answer is a story about a dense architecture diagram with no clear ask, or one where the stakeholder simply deferred to you.

Follow-up

  • An executive challenged the cost. How did you respond?
  • What technical detail did you deliberately leave out, and was that the right call?
  • How did you handle a question you could not answer on the spot?

How do you manage your time and prioritize tasks when balancing project delivery with rotational on-call suppo

Medium · Process and Collaboration

How do you manage your time and prioritize tasks when balancing project delivery with rotational on-call support?

Approach

  1. Plan capacity explicitly: commit to less sprint work during an on-call week and say so in planning, so incident load does not surface later as missed dates.
  2. Separate interrupts from project work: the on-call engineer absorbs pages and requests while the rest of the team stays focused; triage by severity and defer non-urgent requests to the backlog.
  3. Reduce the load at the source: track pages, remove or tune noisy alerts, write runbooks for repeat issues, and turn postmortem actions into backlog items with owners.
  4. Communicate early when an incident displaces delivery: tell the product owner the impact and a revised date, and leave a clear handoff note at the end of the rotation.
  5. Ground it in one specific week from your own experience, with what slipped, what did not, and what you changed afterwards.

Follow-up

  • Two serious incidents land in the week of a release deadline. What do you drop?
  • How do you hand off an incident that is still unresolved when your rotation ends?
  • How did you get the team to fix noisy alerts instead of just tolerating them?

How do you configure and troubleshoot cross-platform identity federation using SAML 2.0 or OAuth 2.0?

Medium · Technical and Domain Expertise

Approach

  1. Separate the protocols: SAML 2.0 federates browser SSO through signed XML assertions from an IdP to a service provider; OAuth 2.0 delegates authorisation with access tokens; OpenID Connect adds authentication on top of OAuth with a signed ID token. Pick the one the use case needs.
  2. For SAML configuration: exchange metadata (entity IDs, ACS URL, IdP signing certificate), agree the NameID format, map attributes or groups to application roles, and decide whether SP-initiated, IdP-initiated or both flows are supported.
  3. For OAuth or OIDC: authorization code flow with PKCE for user-facing apps, client credentials for service-to-service calls, exact-match redirect URIs, minimal scopes, and token validation of signature (via JWKS), iss, aud and exp.
  4. Troubleshoot from evidence: capture the exchange (browser SAML tracer or HAR file), decode the assertion or token, then check the usual faults: clock skew failing NotBefore/NotOnOrAfter, a rotated or expired signing certificate, audience or entity ID mismatch, wrong ACS or redirect URI, a missing claim, invalid_grant from a reused or expired code, or a stale JWKS cache after key rotation.
  5. Keep it secure: reject unsigned assertions, use a maintained library to avoid XML signature wrapping attacks, use the state parameter against CSRF, and keep access tokens short-lived with refresh tokens.

Follow-up

  • How do you rotate the IdP signing certificate without locking users out?
  • Users from one partner tenant get access denied while everyone else signs in. Where do you look?
  • How do you handle deprovisioning so a departed user loses access across federated apps? (for example, SCIM)

Suggested practice checklist

The plan follows the reported rounds: a loop and story inventory first, then the Spring Boot, identity, ingestion, data harmonization and cloud design questions, ending with behavioral stories.

Day 1 — Map the loop and inventory your material

  • Write the five reported rounds in order and note, for each, who you are talking to and which kind of answer it needs.
  • List the technologies the role names (Spring Boot, GCP, Azure, Oracle Cloud Infrastructure, Terraform, SAML, OAuth) and mark your real experience in each.
  • Pick two projects you could discuss in depth and outline problem, contribution, trade-off and result for each.

Deliverable: A one-page loop map, a technology experience matrix and two project outlines.

Day 2 — Spring Boot, microservices and testing

  • Write and say aloud your answer on Spring Boot and microservices: service boundaries, configuration, health checks, deployment, one failure you debugged.
  • Write your testing layers (unit, integration, contract) and one trade-off story for fast delivery.
  • Outline how you take part in Lean-Agile planning: refinement, estimation, sprint review, handling scope changes.

Deliverable: Three rehearsed answers (Spring Boot and microservices, quality and testing, Lean-Agile participation) and one STAR story on a quality trade-off.

Day 3 — Identity federation and compliance

  • Draw SAML 2.0 and OAuth 2.0 flows from memory and write a failure checklist for each.
  • Write one compliance checklist (classification, encryption, least privilege, audit logging, retention, consent) and apply it to a sample patient-data service.
  • Explain in a few sentences how you would verify that checklist is met in a cloud-native application, including pipeline checks and access review.

Deliverable: Two flow diagrams with failure checklists, plus a one-page compliance checklist applied to a sample service.

Day 4 — Data ingestion and high-volume pipelines

  • Design an ingestion stream for healthcare data: sources, buffer, validation, harmonization, storage, replay and consent checks.
  • Write where you trade throughput against latency and cost: batch size, partitioning, back-pressure and retries.

Day 5 — Data modeling and identity resolution

  • Outline a canonical data model for combining clinical and administrative records, with source-system identifiers kept.
  • Write a matching strategy: deterministic keys, fuzzy match, review queue, reversible merges and a consent flag.

Deliverable: A canonical model diagram, a matching strategy with false-merge handling, and one solved update drill.

Day 6 — Multi-cloud architecture and cost

  • Prepare a cross-cloud architecture walkthrough, and rehearse a version for technical peers and a version for stakeholders.
  • Build a decision matrix for application placement across Google Cloud Platform, Azure and Oracle Cloud Infrastructure.
  • List cost levers: right-sizing, scheduling, storage tiers, commitments, tagging for cost ownership, and what you would monitor.

Deliverable: A cross-cloud design walkthrough, a placement decision matrix and a cost-lever list.

Day 7 — Behavioral stories and collaboration

  • Write and say aloud STAR stories for stabilizing an at-risk project and for mentoring.
  • Prepare the story about explaining architecture to non-technical or executive stakeholders, and your approach to balancing delivery with on-call support.
  • Do a full spoken run-through of one story per round and refine the weakest.

Deliverable: Four STAR stories (rescue, mentoring, stakeholder translation, delivery versus on-call) in first-person, rehearsed aloud.

Behavioral preparation for the Ascension loop

The reported behavioral questions ask for stories about stabilizing a troubled project, keeping quality in a fast cycle, and mentoring engineers. Candidates are also advised to show how they communicate technical ideas to non-technical stakeholders and how they work in Lean-Agile teams. Build each story around a decision you made, the trade-off, and a measurable result.

  1. Can you share an experience where you had to translate technical architectural concepts for non-technical or C-suite stakeholders?
  2. Tell a story about meeting a business deadline while a security or compliance requirement pushed back, and what you traded off.
  3. Tell a story about finding and fixing a bottleneck in a data pipeline or a cloud resource, and how you showed the fix worked.

Can you describe a time when you had to stabilize a complex or at-risk technical project and restore its momen

Medium · Architecture and System Design

Can you describe a time when you had to stabilize a complex or at-risk technical project and restore its momentum?

Approach

  1. Choose a project that was really at risk (missed milestones, unstable releases, unclear ownership) and where you held the decision. Open with two sentences on the situation and the stakes, then spend most of the answer on what you did.
  2. Show diagnosis before action: separate causes into scope, quality, dependencies and people, say what evidence you used (defect counts, cycle time, blocked tickets), and name the one or two causes that mattered most.
  3. Describe the stabilizing moves in order: cut scope to the smallest releasable slice, agree a re-baselined plan with stakeholders, add a release gate or automated test for the failures that kept recurring, and set up a short, regular risk review.
  4. Close with a measurable result from your own project, such as fewer escaped defects, a restored release cadence or a met milestone, and one thing you would do earlier next time. The mistake that sinks it is a hero story with no decision, or one that blames the team.

Follow-up

  • What did you cut, and how did you get stakeholders to accept it?
  • How did you know the project was recovering rather than just quiet?
  • What was the first sign the project was at risk, and what would you watch for sooner next time?

How do you handle code quality standards, unit testing, and integration testing within a fast-paced developmen

Medium · Process and Collaboration

How do you handle code quality standards, unit testing, and integration testing within a fast-paced development cycle?

Approach

  1. Describe the layers you actually used. Unit tests for business logic run on every commit; integration tests exercise real boundaries (database, message broker, a downstream service or its contract) and are kept in a smaller, separate suite.
  2. Explain how the practices fit a fast cycle: required automated checks and code review before merge, static analysis and dependency scanning in the pipeline, and parallelized test runs. Flaky tests are quarantined and fixed, not ignored.
  3. State your view on coverage: you track it as a trend and review untested risky paths, rather than chasing a percentage. For microservices, mention contract tests so one service can change without silently breaking its consumers.
  4. Give one concrete trade-off story: a time you slowed a release to add a missing integration test, or shipped with a known gap behind a feature flag and a follow-up. End with the outcome, such as incidents avoided or rollback time. The mistake that sinks it is reciting tool names without a story.

Follow-up

  • Which tests do you write first for a new service, and why?
  • How do you handle a flaky integration test blocking a release?
  • How do you decide whether a change needs an integration test or only unit tests?

Describe a situation where you mentored junior or mid-level engineers on design consistency and coding best pr

Medium · Process and Collaboration

Describe a situation where you mentored junior or mid-level engineers on design consistency and coding best practices.

Approach

  1. Pick a specific mentee and a specific gap, such as services each handling errors and logging differently, or inconsistent API naming. Say how you noticed it and what outcome you wanted for them, not just for the code.
  2. Describe your methods: pair on a real task, review pull requests with comments that explain the reason, point to a good example in the codebase, and write down the convention (a short design template, a lint rule or a decision record) so it does not depend on you.
  3. Show how you balanced consistency and growth: you set the standard but let the mentee make and defend a design choice, then reviewed it together. Rewriting their code yourself is the common mistake.
  4. Finish with evidence: fewer review rounds, a design the mentee presented on their own, or consistency across services. Mention what you learned about mentoring, such as adjusting how much guidance each person needs.

Follow-up

  • How did you handle a mentee who disagreed with the standard you were teaching?
  • How did you measure whether the mentoring worked?
  • How do you keep design consistency without slowing a team down?