QA Interview
Revolut QA Interview Questions (2026)
Prepare for revolut qa interview questions with 48 model answers on payments, cards, FX, APIs, mobile, SQL, automation, reliability, coding, and risk.
23 min read | 5,071 words
TL;DR
Revolut QA interviews can combine fintech product judgment, test design, APIs, mobile quality, automation, SQL, coding, reliability, and behavioral evaluation. Strong answers define the financial invariant, force ambiguous and concurrent failures, inspect durable side effects, and explain recovery. Confirm the exact process with the recruiter because the loop varies by role.
Key Takeaways
- Anchor answers in financial correctness, customer trust, authorization, auditability, and safe recovery.
- Model payments, card transactions, transfers, and verification journeys as state machines rather than happy paths.
- Prove idempotency and concurrency behavior by checking durable business effects, not only response codes.
- Use exact decimal or integer arithmetic for money and reconcile every customer-visible balance to authoritative records.
- Prepare runnable exercises in event processing, SQL reconciliation, and precise currency conversion.
- Tailor preparation to the current role because Revolut interview stages, products, and technical depth can vary.
- Make behavioral stories measurable, candid about trade-offs, and clear about your personal contribution.
Revolut QA interview questions are best answered as financial risk problems, not as generic lists of positive and negative tests. Show how you protect exact balances, payment state, customer identity, authorization, privacy, availability, and recovery while a high-change product evolves.
The current public Revolut Careers pages describe a broad path that can include an introductory call, skills evaluation, problem solving, a Bar Raiser, and an offer, while also warning that the process varies by role. Treat that as orientation rather than a guaranteed loop. Read the current job description, confirm the stages with your recruiter, and adapt these model answers to the product, seniority, location, and stack.
TL;DR
| Topic | What a strong answer proves | Evidence to mention |
|---|---|---|
| Payments and ledger | Money cannot be duplicated, lost, or silently misclassified | Exact entries, invariants, idempotency, reconciliation |
| Cards and transfers | Asynchronous states remain valid under retries and reversals | Transition table, provider references, final balances |
| APIs and events | Trust boundaries hold despite duplicate or reordered traffic | Authorization matrix, signatures, durable deduplication |
| Mobile app | Sensitive journeys survive device and network realities | Device matrix, interrupted flows, backend state checks |
| Automation and data | Fast feedback stays trustworthy and maintainable | Layered suite, controlled fixtures, ownership metrics |
| Reliability and behavior | Decisions protect customers under pressure | Impact, containment, recovery, learning, personal ownership |
Start with the closest role description, then practice the broader fintech QA scenario interview guide. Use Revolut fintech resume guidance to align your evidence before uploading a tailored version in Resume Studio.
Interview Questions and Answers
The 48 questions below are representative preparation prompts, not leaked questions or a promise about a particular team. Each answer demonstrates a reasoning pattern you can adapt without claiming access to Revolut's internal architecture, thresholds, or test data.
1. Revolut QA Interview Questions: Process, Product, and Risk
Q: What should you expect in a Revolut QA interview process?
Public career material currently shows an introductory conversation followed by role-dependent assessment, problem-solving, and Bar Raiser stages. I would ask the recruiter whether the QA role adds coding, test design, system design, take-home work, or a product exercise because teams can evaluate different skills. My preparation would cover one deep project story, one financial workflow, an API diagnosis, SQL, and automation code. I would use the invitation and recruiter instructions as the authority instead of memorizing an unofficial fixed sequence.
Q: Why do you want to work in quality engineering at Revolut?
My answer would connect motivation to the engineering consequences of a global financial product. Currency exchange, cards, transfers, onboarding, and merchant flows create hard problems in exactness, asynchronous state, fraud controls, localization, and recovery. I enjoy quality work where a test strategy can influence an API contract or observability design before a defect reaches customers. I would then name a genuine part of the current role that matches my evidence, rather than praising the brand in abstract terms.
Q: How would you define quality for a fast-moving fintech product?
Quality means customers can understand and trust what happened to their money, even when a dependency fails or a request is retried. It includes financial correctness, security, compliance-relevant behavior, availability, accessibility, performance, supportability, and controlled delivery. Speed matters, but a fast release with an unreconciled money state is not successful. I would translate those dimensions into product invariants, release signals, incident controls, and a deliberately layered test portfolio.
Q: How would you prioritize testing for a new money-transfer feature?
I rank scenarios by customer harm, amount at risk, reach, reversibility, detectability, and likelihood. Unauthorized transfer, duplicate debit, missing credit, wrong currency, and ambiguous timeout come before color or spacing defects because their blast radius and recovery cost are higher. The first suite covers permissions, exact amounts, limits, state transitions, idempotency, concurrency, ledger effects, provider callbacks, notifications, and reconciliation. Lower-risk presentation checks still belong in the plan, but they do not displace the controls that protect funds.
2. Ledgers, Balances, and Financial Correctness
Q: How would you test a customer balance?
I would identify the authoritative ledger and define available, pending, held, and settled balances precisely. Tests create deposits, fees, exchanges, card holds, releases, transfers, refunds, and reversals, then recompute each projection from immutable entries. Boundaries include zero, smallest supported unit, maximum allowed value, negative availability rules, and delayed posting. A screen value is useful evidence, but it is never the only oracle for financial correctness.
Q: What invariants would you test in a double-entry ledger?
For every complete transaction, signed debits and credits must balance in the ledger's base representation, while currency and account rules remain valid. References should be unique where the contract demands uniqueness, and a retry must not add a second economic effect. Holds, fees, reversals, and corrections need explicit entries rather than destructive history edits. I would also reconcile materialized balances against entries and alert on the first broken invariant, not wait for a customer report.
Q: How would you investigate a balance mismatch reported by one customer?
First I preserve safe identifiers and establish whether the mismatch affects display, projection, ledger, or an external settlement record. I trace the account from the last known-correct point through holds, fees, transfers, refunds, and asynchronous events using correlation IDs and timestamps. Comparing the authoritative entries with the customer projection reveals the earliest missing, duplicated, delayed, or misclassified effect. Containment and reconciliation come before a cosmetic correction, and the incident review adds a control that detects the same divergence automatically.
Q: How do you test two transfers racing for the same available balance?
I create an account that can fund either transfer but not both, then synchronize two requests immediately before reservation or commit. The valid outcomes are constrained by the specification: one succeeds and one fails, or another documented atomic policy applies, but total accepted debits cannot exceed available funds. I verify durable entries, holds, API results, customer history, notifications, and retry behavior after the race. Repeating the experiment under database contention helps distinguish a real atomicity guarantee from lucky scheduling.
3. Cards, Payments, Refunds, and Disputes
Q: How would you test a card authorization lifecycle?
I model authorization request, approval or decline, hold creation, clearing, partial or full reversal, expiry, and any supported incremental or offline behavior. Amount, currency, merchant, card status, balance, limits, and authentication context determine the expected decision. Delayed clearing, duplicate messages, clearing above or below the hold, and reversal racing with completion reveal more risk than a simple approved purchase. The final oracle spans ledger entries, available balance, card timeline, merchant-facing state, and customer notification.
Q: What would you check when a customer sees a duplicate card transaction?
I separate duplicate presentation from duplicate authorization, duplicate clearing, and two genuinely distinct merchant events. Network reference, merchant data, amount, timestamps, authorization IDs, and ledger entries establish where duplication began. Tests replay each inbound message and simulate a retry after response loss to prove processing is idempotent without hiding legitimate repeated purchases. The repair must restore the correct balance and history while preserving evidence for support and reconciliation.
Q: How would you test refunds and chargebacks?
Refunds and disputes have different actors, eligibility rules, time windows, evidence, provisional credits, and terminal outcomes, so I model them separately. Coverage includes full and partial amounts, repeated request, refund after reversal, multiple partial refunds, currency differences, late provider updates, and a dispute that changes state. I check ledger treatment, fees, card history, communication, permissions, documents, and audit records at each transition. Sensitive evidence receives access control, redaction, and retention checks in addition to functional validation.
Q: How would you test a 3-D Secure payment flow?
The matrix includes frictionless authentication, challenge success, challenge failure, abandonment, timeout, issuer unavailability, app-to-browser return, and a stale callback. I bind the authentication result to the correct amount, merchant, payment intent, device session, and expiration rule. Reusing or replaying a successful result for another transaction must fail safely. On mobile, I interrupt the challenge with backgrounding, rotation, process termination, and network loss, then verify the backend payment state before allowing a retry.
4. Currency Exchange, Cross-Border Transfers, and Crypto
Q: How would you test currency exchange?
I clarify the quoted pair, direction, rate source, quote lifetime, spread or fee policy, precision, rounding mode, and settlement semantics. Cases cover inverse direction, smallest amount, maximum amount, insufficient balance, unsupported pair, expired quote, rate movement, repeated confirmation, and response loss after execution. The debit, credit, displayed rate, fee, receipt, and ledger conversion must agree under exact arithmetic. I never infer a universal rounding rule because product and currency contracts can differ.
Q: What happens if an exchange rate changes while the customer confirms?
The expected behavior depends on whether the quote is guaranteed until an expiry time or refreshed at execution. I test confirmation just before, at, and after expiry with a controllable clock and rate feed, including a delayed response and duplicated submit. The customer must either receive the agreed quote or get a clear requote path before any economic effect occurs. Logs should capture safe quote identity and decision timing so support can explain the outcome without exposing pricing internals.
Q: How would you test a cross-border transfer?
I map sender eligibility, beneficiary validation, route, currency conversion, fees, limits, compliance state, provider handoff, settlement, return, and cancellation. Address and bank-field rules vary by corridor, so test data must represent actual supported formats rather than one global template. Provider timeout after acceptance, delayed status, duplicate callback, partial information, and returned funds need explicit recovery scenarios. Reconciliation links the internal transfer, ledger legs, FX result, external reference, beneficiary outcome, and customer timeline.
Q: How would you approach crypto testing for a Revolut QA role?
I first confirm that crypto belongs to the role and identify the specific asset, network, custody boundary, and product behavior. Relevant tests can cover asset precision, market order state, fees, wallet address and network validation, confirmation policy, node delay, duplicate observation, and reorganization handling. A rule from one blockchain cannot be copied blindly to another. Test accounts, keys, and transaction artifacts must follow authorized sandbox and secrets controls, with no production seed material in ordinary QA systems.
5. API Testing, Authorization, and Idempotency
Q: How would you test a payment creation API?
I start with its contract: authentication, scopes, required fields, amount representation, currency, beneficiary ownership, idempotency, and valid state transitions. Negative cases mutate one dimension at a time, including missing scope, foreign account object, invalid precision, exceeded limit, unsupported currency, malformed identifier, and expired credential. Successful acceptance is followed through ledger, provider, status, audit, and notification effects. A timeout test deliberately loses the response after server commit so the client must recover by stable identity rather than create another payment.
Q: What does idempotency mean for a financial API?
One logical intent produces one durable business effect even if transport delivery or the response repeats. I test the same key sequentially and concurrently, reuse after a lost response, collision across principals, expiry behavior, and the same key paired with a changed payload. The assertions count ledger entries, provider calls, resource IDs, notifications, and audit events instead of merely comparing HTTP responses. API idempotency testing patterns provide a useful drill for this exact failure class.
Q: How do you test object-level authorization?
I create controlled users, businesses, roles, accounts, cards, and transfers with known ownership relationships. Each principal attempts allowed and forbidden reads, updates, exports, cancellations, and payment actions against its own and another principal's object IDs. Enforcement must exist at the service boundary even when the UI hides the control. Denials should avoid leaking whether a sensitive object exists, while authorized audit records still identify the attempted action safely.
Q: How would you test pagination and rate limiting in a transaction API?
For pagination, I verify stable ordering, cursor validity, no gaps or duplicates, empty and final pages, filter interaction, and concurrent inserts around the page boundary. Rate-limit tests identify the actual scope, such as token, customer, IP, route, or operation, and validate documented headers and recovery after the window. Parallel load checks fairness so one actor cannot exhaust capacity for unrelated customers. Transaction correctness remains the oracle because a well-formed page that silently omits a financial record is still a serious defect.
6. Mobile App, Identity, and Customer Experience
Q: How would you test mobile onboarding and identity verification?
I map account creation, contact verification, consent, document capture, liveness where applicable, review, rejection, resubmission, and account restrictions as separate states. The device matrix covers camera permissions, poor images, unsupported documents, locale, accessibility, low storage, app restart, and unstable networks. Personally identifiable data must be minimized in fixtures, encrypted in transit and at rest according to the system design, redacted from artifacts, and deleted under policy. A customer should see an accurate next action without learning sensitive fraud or verification rules.
Q: How would you test biometric login?
Biometrics should unlock a device-bound credential or local session path, not expose or substitute raw biometric data in the app. I cover initial enrollment, user cancellation, repeated failure, system lockout, changed device enrollment, app reinstall, expired server session, and fallback authentication. Backgrounding and process death during approval must not open the wrong account or repeat a transaction. Security decisions are verified with approved interfaces and logs, never by attempting uncontrolled attacks on real users.
Q: What mobile network failures matter most in a banking app?
The dangerous case is ambiguity after a state-changing request, especially when the server commits but the phone never receives the response. I inject offline transitions, packet loss, high latency, DNS failure, TLS failure, airplane mode, app suspension, and reconnection at precise workflow points. Read-only screens can retry more freely than transfers, which require operation lookup or an idempotent retry. The UI must distinguish pending, failed, and completed states without assuring the customer that money is safe before the backend proves it.
Q: How would you test localization and accessibility together?
I choose representative scripts, right-to-left layouts, long translations, regional numbers, currency placement, date formats, pluralization, and input methods. Screen-reader names, focus order, contrast, scalable text, touch targets, error association, and dynamic announcements are checked in the same critical journeys. Currency codes remain unambiguous where symbols collide, and translated rounding or decimal formatting cannot change the transmitted amount. The senior mobile API interview guide helps connect device presentation with backend evidence.
7. Webhooks, Event Ordering, and Distributed State
Q: How would you handle duplicate and out-of-order webhooks?
The receiver authenticates the event, stores a durable event ID, and applies a valid state transition transactionally. Duplicate delivery returns success without repeating side effects, while an older event cannot regress a terminal state. Because separate event types may arrive out of order, the consumer can fetch authoritative state or use versioned transitions instead of trusting arrival time. This Node test demonstrates a small deterministic reducer, not a production persistence layer.
import test from 'node:test';
import assert from 'node:assert/strict';
const rank = Object.freeze({ CREATED: 0, PENDING: 1, COMPLETED: 2 });
function applyEvent(current, event, seen) {
if (seen.has(event.id)) return current;
seen.add(event.id);
return rank[event.state] > rank[current] ? event.state : current;
}
test('duplicate and older events cannot regress completed state', () => {
const seen = new Set();
let state = 'CREATED';
state = applyEvent(state, { id: 'evt-2', state: 'COMPLETED' }, seen);
state = applyEvent(state, { id: 'evt-1', state: 'PENDING' }, seen);
state = applyEvent(state, { id: 'evt-2', state: 'COMPLETED' }, seen);
assert.equal(state, 'COMPLETED');
assert.equal(seen.size, 2);
});
Save the program as webhook-state.test.mjs, then verify it with:
node --test webhook-state.test.mjs
The expected result reports one passing test. Production code also needs durable storage, atomic side effects, supported failure transitions, and conflict handling.
Q: How would you test webhook authenticity and replay protection?
I follow the published contract to compute the signature over the exact raw payload and required metadata, then compare it safely before parsing or acting. Tests cover a valid signature, one-byte body mutation, wrong secret, missing headers, malformed encoding, timestamp outside tolerance, repeated request, and secret rotation overlap. Proxy or framework body transformation is included because even harmless reserialization can invalidate a legitimate signature. Revolut's public Business API webhook guidance currently describes HMAC SHA-256 signing, timestamp validation, possible duplicates, and non-guaranteed ordering, which makes these tests concrete rather than theoretical.
Q: How do you test an at-least-once event consumer?
I deliver the same event before commit, after commit but before acknowledgement, during consumer restart, and concurrently to multiple workers. Exactly-once delivery is not assumed; instead, a unique durable identity and atomic transaction protect the economic side effect. Dead-letter behavior, retry backoff, poison messages, partition movement, and backlog recovery receive their own assertions. End-to-end webhook testing is useful practice for connecting transport behavior to database and notification outcomes.
Q: How would you test event schema evolution?
A consumer contract suite records required fields, accepted optional additions, enum handling, numeric precision, and version selection. I replay old fixtures against the new consumer and new compatible fixtures against the supported old consumer where backward compatibility is promised. Unknown fields should not break tolerant readers, but an unknown state must not be silently treated as success. Deployment tests cover producer-first and consumer-first order, rollback, mixed versions, and observability for rejected events.
8. Automation Strategy, Framework Design, and Test Data
Q: What would your automation strategy be for a Revolut feature?
I place deterministic business rules and ledger invariants in unit or property tests, service behavior in component tests, contracts at integration boundaries, and critical customer paths in a focused API and UI suite. Security, accessibility, resilience, and performance checks answer separate risks rather than inflate one end-to-end pack. The release pipeline runs fast blockers first and schedules broader environment-dependent evidence with clear ownership. Coverage is judged by protected risks and fault detection, not by the raw number of automated cases.
Q: How would you design a maintainable API automation framework?
The framework separates transport clients, authentication, domain builders, environment configuration, and business assertions. Tests create only the account state they need, emit correlation IDs, and assert schema plus semantic side effects. Secrets come from controlled runtime storage, while logs redact tokens, personal data, and financial details at the source. I would review Playwright API testing interview questions for concrete request-context patterns, then match the implementation language required by the team.
Q: How do you reduce flaky tests without hiding defects?
I classify failures using evidence from traces, logs, video where safe, network records, resource metrics, and repeated isolation. Shared data, unstable selectors, unobserved async state, external dependency variance, clock assumptions, and resource starvation require different fixes. Automatic retries may collect diagnostic evidence, but the first-attempt result and retry rate stay visible. Quarantine has an owner, reason, deadline, and replacement coverage so it cannot become permanent deletion by neglect.
Q: How do you manage financial test data in parallel CI?
Each worker receives synthetic accounts with explicit currency, balance, verification, card, and limit states under least privilege. Namespaced identities and idempotency keys prevent cross-worker collisions, while setup APIs or trusted fixtures create state rather than brittle UI preconditions. Cleanup preserves required audit evidence and cannot call uncontrolled external payment rails. Data factories test boundary precision deliberately and never copy production customers, documents, tokens, bank details, or card secrets into development systems.
9. SQL, Data Reconciliation, and Migration Testing
Q: Write SQL to find unbalanced ledger transactions.
I would first confirm the schema and sign convention, then aggregate signed minor units by transaction and currency. This runnable SQLite fixture flags only the deliberately broken transaction. Storing minor units as integers avoids binary floating-point drift in the exercise.
CREATE TABLE ledger_entries (
transaction_id TEXT NOT NULL,
currency TEXT NOT NULL,
account_id TEXT NOT NULL,
signed_minor_units INTEGER NOT NULL
);
INSERT INTO ledger_entries VALUES
('tx-ok', 'EUR', 'cash', -1000),
('tx-ok', 'EUR', 'customer', 1000),
('tx-broken', 'GBP', 'cash', -725),
('tx-broken', 'GBP', 'customer', 700);
SELECT transaction_id, currency, SUM(signed_minor_units) AS imbalance
FROM ledger_entries
GROUP BY transaction_id, currency
HAVING SUM(signed_minor_units) <> 0;
Save it as reconcile.sql and run:
sqlite3 :memory: < reconcile.sql
The expected row is tx-broken|GBP|-25. A production query must also respect transaction completeness, ledger model, partitions, corrections, and currency-specific rules.
Q: How would you diagnose a missing transaction in a customer history query?
I reproduce the exact account, filters, cursor, timezone, and consistency boundary before changing code. Then I compare the authoritative row with projection tables, cache, search index, API serialization, and client filtering to locate the first layer where it disappears. Boundary timestamps, null states, pagination ordering, replica lag, and permission joins are common suspects that need evidence. The fix includes a regression query and a safe backfill or projection rebuild if existing records were affected.
Q: How do you test a financial data migration?
I define row counts, key uniqueness, referential integrity, per-currency sums, balance invariants, state distributions, and representative record equivalence before migration. Dry runs use production-shaped but approved data, with deterministic checksums or aggregates that do not expose customer values. Tests cover resume after interruption, dual-write or cutover behavior, rollback feasibility, late events, and old-reader compatibility. After cutover, targeted reconciliation and monitoring continue until the risk window closes.
Q: How do you protect sensitive data while debugging SQL?
Access begins with a documented purpose, least privilege, approved environment, and auditable query path. I select stable surrogate identifiers and necessary state instead of names, addresses, document images, full card data, tokens, or free-text exports. Shared evidence is aggregated or redacted, and local copies follow retention and deletion controls. If the available access is broader than the investigation requires, I narrow it before exploring rather than treating convenience as authorization.
For extra query practice, use SQL interview questions for QA engineers and explain the business invariant behind every result set.
10. Reliability, Performance, Security, and Release Control
Q: How would you test resilience during a payment-provider outage?
I define steady state, inject authorized timeouts or failures, and observe new requests, in-flight payments, queues, customer messages, and downstream ledger effects. The system should avoid unsafe blind retries, preserve a truthful pending state, apply backpressure, and reconcile when the provider recovers. Abort conditions protect test environments from uncontrolled financial actions or runaway backlog. Recovery is complete only when every ambiguous operation reaches a known state, not when the endpoint starts returning 200 again.
Q: What would a useful performance test for transfers measure?
The workload models realistic account distribution, currencies, read-write mix, idempotent retries, ramp pattern, and dependency behavior. I measure acknowledgement latency, end-to-end state latency, throughput, error rate, saturation, queue age, and recovery time using the team's actual objectives. Invariant checks run during load so duplicates, lost updates, and balance drift cannot hide behind a fast percentile. Results include environment limits and bottleneck evidence instead of an unsupported claim that one request rate is universally sufficient.
Q: How would you test security without turning QA into uncontrolled penetration testing?
I derive checks from authorized threat models and trust boundaries, then stay within the agreed scope and environment. High-value coverage includes authentication lifecycle, service-side authorization, session and device binding, replay defense, input validation, secrets handling, sensitive logging, dependency policy, and abuse controls. Findings use sanitized proof with minimal data and a clear impact path. Deeper offensive work is coordinated with security owners because customer systems and payment rails are not safe experimentation targets.
Q: How would you release a risky financial change?
I require evidence for its invariants, migration safety, observability, reconciliation, support readiness, and rollback or disablement path. A feature flag or staged rollout limits exposure only if both old and new states remain compatible and the flag itself is tested. Early cohorts are monitored for financial and customer outcomes, not merely application errors. The release decision names open uncertainty, accountable owners, stop conditions, and the exact recovery action if a guardrail breaks.
11. Coding, Exact Arithmetic, and Debugging Exercises
Q: How would you implement a precise currency conversion exercise?
I use decimal arithmetic and make the rounding policy an explicit input to the example rather than assuming a hidden company rule. The following standard-library Python program converts with a declared quote and scale, then verifies exact expected strings. It is intentionally a small interview exercise, not a pricing, fee, or ledger service.
from decimal import Decimal, ROUND_HALF_EVEN
import unittest
def convert(amount: Decimal, rate: Decimal, output_scale: int) -> Decimal:
if amount < 0 or rate <= 0:
raise ValueError('amount and rate must be valid')
quantum = Decimal(1).scaleb(-output_scale)
return (amount * rate).quantize(quantum, rounding=ROUND_HALF_EVEN)
class ConversionTest(unittest.TestCase):
def test_exact_conversion(self):
result = convert(Decimal('12.50'), Decimal('0.80'), 2)
self.assertEqual(result, Decimal('10.00'))
def test_declared_rounding_boundary(self):
result = convert(Decimal('1.005'), Decimal('1'), 2)
self.assertEqual(result, Decimal('1.00'))
if __name__ == '__main__':
unittest.main()
Save it as fx_conversion.py, then verify both cases:
python -m unittest -v fx_conversion.py
Q: What coding topics should a QA candidate prepare?
Practice collections, strings, parsing, exact numeric handling, state machines, deduplication, SQL, error handling, and testable function design. For each solution, state assumptions, cover boundaries, name time and space complexity, and add focused tests before optimizing. A senior answer also identifies what the exercise omits, such as persistence, atomicity, concurrency, security, and observability. Fluency in the role's advertised language matters more than memorizing a large catalog of puzzles in an unrelated one.
Q: How would you test a concurrency bug deterministically?
I add a controllable barrier at the contested boundary so both workers read or reserve state in the intended order. The test repeats the interleaving that previously caused harm and asserts the invariant after all writes settle. Database constraints, transaction isolation, optimistic version checks, or idempotency may provide the fix, but the correct mechanism depends on the domain. Random stress can supplement this test, while a synchronized regression provides the reproducible proof.
Q: What do you look for when reviewing test automation code?
I check whether the assertion represents the business risk and whether a failure explains the broken state. Then I inspect isolation, determinism, async waits, data ownership, secret handling, cleanup, error paths, abstractions, and runtime cost. Helpers should clarify domain actions without hiding important assertions or coupling unrelated tests. The review also asks whether a lower layer can detect the defect faster and whether production diagnostics will connect a failing test to the same operation.
12. Revolut QA Interview Questions: Behavioral and Preparation Scenarios
Q: Tell me about a severe defect you found before release.
I would use a story where the consequence, evidence, and my contribution are unmistakable. The narrative covers how I recognized the invariant at risk, reproduced the defect, bounded affected scenarios, and collaborated on containment and correction. I quantify a safe engineering outcome such as scenarios protected or detection time reduced, without inventing customer impact or revealing confidential data. The close explains the preventive control added after the immediate fix, such as an atomic constraint, contract check, or reconciliation alert.
Q: Describe a disagreement with a developer about release quality.
I start by separating shared facts from different risk tolerance. Instead of arguing that testing is incomplete, I show the affected journey, probable reach, reversibility, monitoring, untested state, and available mitigation. Together we can choose a targeted check, staged exposure, disablement control, or explicit risk acceptance by the accountable owner. The story should demonstrate respectful challenge and a better decision, not victory over another person.
Q: How would you communicate a no-go recommendation?
I state the customer or financial invariant that is not protected and cite concise reproducible evidence. Next I explain impact, affected scope, uncertainty, workaround, monitoring gap, and whether rollback or reconciliation can limit harm. I propose the smallest safe path forward and identify what evidence would change the recommendation. Decision ownership remains explicit, but I do not soften a material risk merely to make the meeting comfortable.
Q: What questions would you ask a Revolut interviewer?
I would ask which customer and financial invariants dominate the role, where quality engineers influence design, and which layer currently slows trustworthy feedback. Other useful questions cover test-account governance, external sandbox fidelity, incident reconciliation, observability, release ownership, and expectations for the first 90 days. A team-specific question based on the job description shows stronger preparation than asking for generic culture claims. I would avoid requesting confidential controls, production data, or a guaranteed interview answer.
Practice these scenarios aloud in the QA interview practice workspace. Keep each answer structured enough to follow, but natural enough to survive follow-up questions that change one constraint.
How Interviewers Grade Your Answers
| Signal | Strong evidence | Weak evidence |
|---|---|---|
| Risk judgment | Prioritizes unauthorized, duplicate, missing, and ambiguous money effects | Lists UI checks without consequence |
| Technical depth | Connects request, event, database, ledger, client, and recovery | Stops at a status code |
| Precision | Defines amount representation, state, identity, and oracle | Uses vague terms such as correct response |
| Test design | Covers boundaries, concurrency, retries, observability, and cleanup | Adds random cases without a model |
| Communication | States assumptions, trade-offs, ownership, and residual risk | Hides uncertainty or overclaims |
| Collaboration | Influences a decision with evidence and respects accountable roles | Frames quality as QA versus engineering |
Interviewers can probe any premise, so expose assumptions early. A credible answer distinguishes what you know from the public contract, what you infer, and what you would clarify with the product or engineering owner. For behavioral questions, use situation, task, action, and result, but spend most time on your decisions and evidence. For technical scenarios, lead with the invariant, model the states and trust boundaries, choose the cheapest useful test layers, then finish with observability and recovery.
Do not inflate impact or present a memorized framework as if it were analysis. If a follow-up invalidates your original design, revise it openly and explain why the new constraint changes the test. That adaptability is often more valuable than defending the first answer.
Common Mistakes
- Treating a Revolut interview as a generic banking checklist with no exact financial oracle.
- Claiming a fixed hiring loop when the public careers material says stages vary by role.
- Validating only HTTP status, UI toast, or email while ignoring durable ledger and provider effects.
- Using binary floating point for authoritative money calculations or assuming one rounding rule for every currency.
- Retrying an ambiguous payment blindly after the response disappears.
- Forgetting simultaneous transfers, duplicate events, reordered callbacks, delayed clearing, and partial refunds.
- Testing authorization only by hiding buttons instead of crossing user, business, account, and role boundaries at the API.
- Copying production identities, documents, account records, credentials, or payment details into test environments.
- Reporting latency without correctness, saturation, queue recovery, and workload context.
- Masking flaky automation with unlimited retries and losing the first-attempt signal.
- Sharing confidential architecture or customer incidents to make an answer sound impressive.
- Reciting every possible test without ranking harm, likelihood, detectability, and recovery.
- Ignoring accessibility, localization, interrupted mobile flows, and truthful customer communication.
- Ending an incident when services recover even though ambiguous transactions remain unreconciled.
Use root-cause analysis for QA defects to strengthen incident stories. It helps separate the triggering code change from the missing technical and process controls that allowed customer impact.
Conclusion
Strong Revolut QA interview questions answers make financial trust testable. Define the invariant, identify the trust boundary, model asynchronous states, force retries and races, inspect exact durable effects, and show how the system reaches a known state after failure.
Choose one transfer scenario and rehearse it end to end: authorization, amount precision, idempotency, ledger entries, provider ambiguity, events, mobile presentation, observability, reconciliation, and release decision. Then repeat with a card payment and an exchange quote so your reasoning stays flexible rather than scripted.
Interview Questions and Answers
How would you test a money transfer?
I define sender authority, beneficiary rules, exact amount, currency, limits, fees, and the ledger invariant first. Then I cover state transitions, response loss, idempotent retry, simultaneous requests, provider callbacks, cancellation, return, notifications, and reconciliation. The final proof comes from durable financial effects rather than the success screen.
How do you test payment idempotency?
I repeat one key sequentially and concurrently, simulate server success followed by response loss, and reuse the key with a changed payload. I assert a single resource, ledger effect, provider request, notification, and audit action. Key scope, retention, and principal isolation are part of the contract.
How would you validate a customer balance?
I reconcile available, pending, held, and settled projections with authoritative immutable entries. Deposits, fees, exchanges, card holds, releases, refunds, transfers, and reversals exercise every component. Exact integer or decimal representation prevents the test oracle from introducing precision error.
How would you test out-of-order financial events?
I deliver valid events in altered sequences and include duplicates, delayed messages, restarts, and concurrent consumers. Version or transition rules prevent stale events from regressing state, while durable event identity protects side effects. When ordering is insufficient, the consumer queries an authoritative source before acting.
How do you test a card payment reversal?
I exercise full and partial reversal before and after clearing, duplicate reversal messages, delay, and a reversal racing with completion. Holds, available balance, ledger entries, card history, merchant reference, and notification must converge. An invalid second economic effect is rejected without erasing the audit trail.
How would you test foreign exchange rounding?
I obtain the declared pair, quote direction, precision, scale, and rounding rule rather than assuming them. Boundary values surround every rounding midpoint and smallest supported unit, with fee and serialization checks across services. Debit, credit, receipt, and ledger totals must agree exactly.
How do you investigate an intermittent mobile transfer failure?
I correlate the device session and safe operation ID with API, service, event, and ledger evidence. Network loss, app suspension, process death, duplicate taps, token refresh, and backend timeout are reproduced at the same transition. The investigation distinguishes a presentation problem from an ambiguous or incorrect financial state.
What belongs in a fintech API automation framework?
It needs clear transport clients, domain builders, controlled authentication, isolated data, semantic assertions, correlation IDs, and redacted diagnostics. Contract, authorization, state, and downstream financial checks are separate reusable concerns. Parallel execution must not share accounts or idempotency identities accidentally.
How would you test a payment-provider outage?
I inject approved timeouts and failures while observing in-flight requests, queues, ledger effects, backpressure, and customer state. Unsafe retries are blocked, ambiguous operations remain truthfully pending, and recovery performs reconciliation before declaring success. Stop conditions keep the exercise from reaching uncontrolled payment rails.
How do you test object authorization in a banking API?
Controlled principals attempt actions across account, business, card, transfer, and role boundaries using valid foreign object IDs. The service denies unauthorized access even when the client exposes or hides different controls. Error details do not reveal sensitive object existence, and the attempt remains auditable.
How would you communicate release risk for a financial feature?
I name the unprotected invariant, affected users or flows, evidence, uncertainty, detectability, and reversibility. The recommendation includes staged exposure, monitoring, disablement, rollback, reconciliation, and the evidence required to proceed. Accountable owners make the decision with residual risk visible.
What makes a strong Revolut QA behavioral answer?
It explains the consequential problem, your specific decision, the evidence you gathered, and how you influenced the outcome. Trade-offs and uncertainty are candid, while impact is quantified only with defensible facts. The ending shows a durable technical or process control that prevented recurrence.
Frequently Asked Questions
What is the Revolut QA interview process in 2026?
Revolut's public careers material shows a broad sequence that can include an introductory call, skills assessment, problem solving, a Bar Raiser, and an offer. The exact stages vary by role, so confirm coding, test design, system design, take-home, and behavioral expectations with the recruiter.
What topics should I prepare for a Revolut QA interview?
Prepare fintech risk, ledgers, cards, transfers, FX, APIs, event processing, mobile testing, SQL, automation, reliability, security, and behavioral stories. Weight those areas using the current job description and the product owned by the team.
Does a Revolut QA interview include coding?
Coding depth depends on the position and seniority, so ask the recruiter directly. Be ready to write and test small functions involving collections, exact arithmetic, state transitions, deduplication, SQL, and error handling if the role is automation-heavy.
How should I answer payment testing questions?
Begin with authorization and the financial invariant, then model the payment states. Cover amount precision, limits, idempotency, timeout ambiguity, duplicate or reordered events, ledger effects, provider references, customer communication, and reconciliation.
How important is SQL for a Revolut QA engineer?
SQL is valuable for validating ledger aggregates, transaction history, projections, migrations, and incident evidence. Practice joins, grouping, window functions, pagination diagnosis, duplicate detection, and reconciliation while explaining the domain meaning of each query.
How should I prepare behavioral examples for Revolut?
Prepare stories about a severe defect, a risk disagreement, automation improvement, incident, ambiguous requirement, and delivery under pressure. Make your personal action, evidence, trade-off, measurable outcome, and later prevention clear without revealing confidential information.
Do I need to know cryptocurrency for a Revolut QA interview?
Only prepare crypto depth that is relevant to the advertised team, but understand asset precision, network identity, asynchronous confirmation, fees, custody boundaries, and reorganization risk if it appears in scope. Do not assume behavior is identical across assets or networks.
What is the best way to practice Revolut QA interview questions?
Answer scenarios aloud, state assumptions, and ask a partner to introduce a timeout, duplicate event, race, or requirement change. Pair that practice with runnable exercises in exact arithmetic, event reduction, API testing, and SQL reconciliation.