Recommended preparation

Editorial practice groupings, not verified official interview questions or endorsements.

Public Revolut prep guide

Revolut Frontend Interview Questions

Prepare with five practice prompts shaped by four public frontend accounts from 2024 and 2025 and by the Revolut Tech post on web engineering: a one-hour TypeScript task that fetches data and renders it with loading and error states, a pairing session against an authenticated API, a three-task HackerRank screen, a recruiter-run theory check, and a frontend system-design round about product features and API contracts.

This guide uses public, self-reported interview accounts and the published Revolut Tech post on web engineering to create realistic constraints. It does not claim access to private interview material, a fixed interview format, or the stack of every Revolut team.

5 practice promptsTypeScript, React, API contractsFull practice set requires Premium

Study priorities

Prepare for product judgment, not Revolut trivia

The public accounts converge on one exercise: in about an hour, fetch data from a source and render it in React with TypeScript, with a loading state, data state management and fetching with error handling. The one account that shared written feedback was told that type management and loading-state handling needed more practice, so the drills below start there. The Revolut Tech post on web engineering describes the same bar from the other side of the table: the interviews place candidates in real-world scenarios and ask them to implement features standard to web engineers, not to crack obscure JavaScript puzzles.

Around that exercise the accounts describe a HackerRank screen or a short theory check run by the recruiter, a frontend system-design round in a 2025 loop, a team-fit conversation and a Bar Raiser interview. Each prompt below starts with the clarifying questions a strong candidate asks, then the behaviours a strong answer covers, then the miss that usually ends the round.

Role lenses

Two product contexts for practising transferable frontend judgment

These are preparation lenses based on the two groups of web products described in the Revolut Tech post on web engineering, not claimed team assignments. Choose the lens closest to the role and keep the reasoning framework-neutral.

Customer-facing web products

The website, the Revolut Business platform and the crypto exchange that the post lists as external web products, where every request has a loading, success, empty and failure state.

Practice focus: Typed API boundaries validated at runtime, one explicit request state, retries that never repeat an action that moves money, and copy that tells the user what happened.

Internal web applications

The roughly one hundred internal tools the post describes for back-office management, compliance and risk monitoring, customer support, and data and reporting.

Practice focus: Dense tables and filters derived from one source, pagination and filtering contracts with the API, optimistic updates with rollback, and keyboard access to every control.

Representative practice prompts

Five Revolut frontend interview practice questions

For each prompt, clarify the contract, explain ownership and trade-offs, implement or diagram the smallest credible slice, and test the failure cases. Each prompt links to the public report it is modelled on and to a practice page.

Prompt 1

Fetch data and render it in one hour, in TypeScript, with every request state

Given a React and TypeScript boilerplate and a data source, load the data and render it: show a loading state first, handle a failed request with a readable message, type the response and the component state, and add a test or an optimisation if time remains.

Practice version modelled on a reported round: Public report: Revolut frontend developer loop, April 2025

What this measures

Request-state modelling, error handling that is explicit rather than swallowed, TypeScript at the boundary, pace under a clock, and whether the first ten minutes go to the contract or to folder structure.

Clarify first

  • Confirm the response shape, what an empty result looks like, and which failures are in scope: network, non-200 status, malformed data.
  • Confirm how the interviewer wants errors surfaced at the fetch boundary, and whether tests are expected inside the hour.

Strong answer should cover

  • Hold the request in one discriminated union, loading, success with data, empty and error with a message, so no two states can be true at once.
  • Type the response once at the fetch boundary, narrow unknown errors to a message, and never let `any` reach the component.
  • Render the loading state before the request resolves, then branch on the status alone; show rows only on success.
  • Guard stale responses with a cleanup flag, and add one test per state if time remains, starting with the error path.

Common miss: Three booleans for loading, error and data that drift apart, an untyped response object, and a component that renders nothing while the request is in flight.

Practice the fetch-and-render exercise (free)

Prompt 2

Display data from an authenticated API in a React component, pairing with the interviewer

Pair with the interviewer to call a service API that requires authentication, display the data in a React component, and handle a missing or expired token, a failed request and a slow response while you talk through each decision.

Practice version modelled on a reported round: Public report: Revolut frontend engineer loop, May 2025

What this measures

Collaboration under observation, where auth and transport concerns live, request cancellation and timeouts, and how you explain trade-offs while typing.

Clarify first

  • Confirm how the token is provided, how long it lives and what the API returns when it is missing or expired.
  • Confirm whether a shared fetch wrapper or a data-fetching library is acceptable, or whether the interviewer wants plain `fetch`.

Strong answer should cover

  • Put the auth header, the timeout and the JSON parsing in one small wrapper so the component only sees typed data or a typed error.
  • Abort the request on unmount or when the inputs change, and treat a 401 as a distinct state with a distinct message.
  • Narrate the plan before coding and after each step; ask for the next requirement as soon as the current one works.
  • Keep the component declarative: it renders from the request state and never builds headers itself.

Common miss: Building the header inline in the component, ignoring the expired-token case, and coding in silence for twenty minutes before explaining the approach.

Practice the fetch wrapper with timeout and abort (free)

Prompt 3

Clear the HackerRank screen: three JavaScript tasks in 85 minutes

A timed online screen with three tasks of rising difficulty: two straightforward problems and one at a high-medium level. A later account recalls a standard sliding-window problem. Submit working code for all three with the time budget intact.

Practice version modelled on a reported round: Public report: Revolut senior frontend engineer loop, Madrid, April 2024

What this measures

Clean fundamentals under a clock, reading a problem statement precisely, handling edge cases without prompting, and knowing when to move on.

Clarify first

  • Read every constraint and sample before coding; note input sizes, ties and empty inputs explicitly.
  • Decide the order: bank the two easier tasks first, then spend the remaining time on the third.

Strong answer should cover

  • Write a brute-force version that passes the samples, then improve it only if the constraints demand it.
  • Use a sliding window or a map-based count where the statement asks about contiguous ranges or frequencies, and state the complexity in a comment.
  • Handle empty input, a single element and duplicates before polishing names.
  • Leave the hardest task with a correct partial solution rather than an elegant incomplete one.

Common miss: Spending the first half hour on the hardest task, then rushing the two easy ones and losing points to off-by-one errors.

Read the data structures and algorithms blueprint for frontend loops

Prompt 4

Answer the recruiter-run theory check: reconciliation, microtasks versus macrotasks, the DOM tree

Before the live-coding round, HR works through a short checklist of React and browser theory: how reconciliation decides what to update, how microtasks and macrotasks are ordered by the event loop, and what the DOM tree is. Answer each in two or three precise sentences.

Practice version modelled on a reported round: Public report: Revolut frontend developer loop, April 2025

What this measures

Whether you can state fundamentals plainly to a listener who is checking answers against a list, without jargon they cannot verify and without drifting into unrelated detail.

Clarify first

  • Ask whether a short definition or an example is preferred; an example usually shows understanding fastest.
  • Confirm which framework the role uses before answering the rendering question.

Strong answer should cover

  • Reconciliation: React compares the new element tree with the previous one and updates only the DOM nodes whose type or props changed, matching list children by key.
  • Microtasks run to completion after the current task and before the next macrotask, so a resolved promise callback runs before a zero-delay timeout.
  • The DOM tree is the in-memory tree of nodes that the browser builds from the HTML; scripts read and change it, and the browser renders from it.
  • Add one concrete example per answer, for example a list rendered with index keys or a `setTimeout` versus `Promise.then` ordering.

Common miss: A long answer about Fiber internals or event-loop phases that never states the simple rule the checklist is looking for.

Review microtasks versus macrotasks (free)

Prompt 5

Design a product feature end to end: the frontend, its API contracts and the services behind them

Propose features for a given product area, then design the frontend and the APIs that connect it to the other services: data shapes, loading and failure behaviour, consistency rules and how the client recovers when a step fails halfway.

Practice version modelled on a reported round: Public report: Revolut frontend engineer loop, May 2025

What this measures

Product thinking, API design from the point of view of the client, idempotency and retry rules for actions that move money, and how you reason about partial failure.

Clarify first

  • Confirm the scope: one feature or several, which clients consume the API, and whether the design should cover the services or only the contracts.
  • Confirm the consistency expectation: can the user see a pending state, or must every screen reflect the final result?

Strong answer should cover

  • Start from the user flow and write the API contracts as the client needs them: request and response shapes, the error codes the UI branches on, and pagination where lists grow.
  • Give every action that changes money an idempotency key and define what the client shows while it is pending and after a timeout.
  • Separate read models from write actions so the screens stay fast while the actions stay safe.
  • Name the failure cases out loud: the request that times out after the server committed, the duplicate tap, the stale cached view.

Common miss: Drawing boxes for services without a single concrete request or response, or designing the happy path and leaving partial failure for the interviewer to raise.

Work through the resilient checkout and payment flow case (free)

Public mini walkthrough

Scope the one-hour fetch-and-render task before the first line

Treat this as a representative exercise, not a description of the reported one. Work from the contract toward the request state, and say each decision out loud.

  1. Pin the contract

    Endpoint, response shape, what an empty result looks like, and which failures are in scope; write the response type first.

  2. Choose one request state

    A discriminated union with loading, success, empty and error, so the component never has to reconcile three booleans.

  3. Render loading first

    Set the loading state before the request resolves and branch the JSX on the status alone.

  4. Make failure explicit

    Map a rejection or a non-200 response to an error state with a readable message; narrow `unknown` before rendering it.

  5. Guard the stale response

    Flip a cleanup flag or abort the request when the inputs change, then add one test per state if time remains.

Actionable preparation

A 7-day Revolut frontend interview preparation plan

Every day ends with code, a test, a design artifact, or a question you can use in the real process.

  1. Day 1

    TypeScript at the boundary: response types, narrowing unknown errors, discriminated unions for request state.

    Deliverable: A typed fetch wrapper and a request-state union you can retype from memory.

  2. Day 2

    The one-hour drill: loading, error, empty and success states in React, twice, against a timer.

    Deliverable: Two timed runs with a stale-response guard and one test per state.

  3. Day 3

    Theory check: reconciliation, the event loop, microtasks versus macrotasks and the DOM tree, explained in two sentences each.

    Deliverable: A one-page answer sheet with one example per topic.

  4. Day 4

    HackerRank rehearsal: three problems in 85 minutes, including one sliding-window problem.

    Deliverable: A time log and the complexity stated for each solution.

  5. Day 5

    Frontend system design: a product feature, its API contracts, idempotent actions and partial-failure recovery.

    Deliverable: A one-page design with request and response shapes and the failure cases.

  6. Day 6

    Team fit and Bar Raiser: stories that show a decision, its trade-off and its result, mapped to the three qualities the web-engineering post says the interviews value: think deeper, get it done, deliver wow.

    Deliverable: Six stories in a structured format, each with a measurable result.

  7. Day 7

    Mock loop: one screen, one pairing session, one design walkthrough and one team-fit conversation, each narrated.

    Deliverable: A list of the questions you will ask the recruiter about format, tools and timing.

Preparation FAQ

Common Revolut frontend interview preparation questions

Are these the real Revolut questions?

No. They are FrontendAtlas practice versions modelled on round types described in public, self-reported accounts and in the Revolut Tech post on web engineering. The wording, the data and the test cases are ours.

Is there still a take-home?

A public candidate repository from 2017 quotes a web home task: rebuild the exchange screen of the Revolut app as a widget that polls currency rates every ten seconds, in React or Preact with Redux. None of the 2024 and 2025 accounts used here describes a take-home; they describe the one-hour live task instead. Confirm with the recruiter for the specific role.

Which stack should I prepare in?

The Revolut Tech post on web engineering from October 2025 lists TypeScript, React and React Query at their latest stable versions, Rush and Nx for the monorepo, Zod to validate every external boundary at runtime, and Jest, Playwright, Storybook and React Testing Library for tests. Prepare in React and TypeScript.

What is the Bar Raiser round?

The April 2025 account lists a team-fit interview and a Bar Raiser interview as the rounds after the live task, and Revolut publishes a careers video on preparing for the Bar Raiser. None of the public accounts used here describes its questions, so prepare stories with a decision, a trade-off and a measured result.

Does every hub interview the same way?

The accounts come from different hubs and years and differ in round count and order: one loop opens with a HackerRank screen, another with a theory check, and only the 2025 loops mention a system-design round. Treat them as shapes to practise and confirm the loop with the recruiter.

Public interview reports and official context

Sources and evidence limits

These links support the public context used by the guide. Their notes state what each source can and cannot establish about preparation.

Public report: Revolut frontend developer loop, April 2025

One self-reported loop for a React role at middle level, without an offer. It establishes the HR theory check, the one-hour TypeScript fetch-and-render task and the written feedback; it cannot establish exact wording or the current format.

Blind: Revolut front-end interview thread, April 2022

A 2022 thread in which one reply, apparently secondhand, describes LeetCode-style problems, JavaScript fundamentals and React, and says no system design was expected. It shows an earlier shape of the loop; it cannot establish the current format.

Full company practice

Continue with the full Revolut practice set

This public guide is complete enough to plan a focused week. Premium unlocks the company-tagged Revolut set, including the debounced search against a fake API, and the wider premium library of coding, concept and system-design practice.

Unlock the full Revolut practice set