Cardless · Software Engineer
Updated · 2026-10-02

Cardless Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Candidates describe Cardless as a company that builds the software behind credit card programs run for consumer brands, along with other financial products tied to those brands. The engineering work sits on APIs, microservices and ledgers that handle card onboarding, transaction processing and rewards, plus integrations with external banking partners. For a Software Engineer, candidates describe a backend role: build and maintain those services, review code, scope features with product managers, set up monitoring and alerts, take part in on-call, and keep partner integrations in line with industry standards such as PCI-DSS.

This guide is for candidates applying for the Software Engineer role at Cardless, especially those with a backend background. It covers the three reported rounds, the coding, system design and behavioral questions candidates report, and the stack candidates describe for the role (Go, Java or Python, SQL databases, REST or gRPC APIs, message queues). It does not cover pay, and it does not assume prior fintech experience.

Candidates report three rounds over roughly 3-5 weeks: an HR Screening Call, a Technical Phone Screen built around a pragmatic coding challenge, and an Interview Loop that combines system design, a conversation with colleagues from other departments, and a culture discussion with senior leadership.

System DesignScalabilityBackend Engineering

38 min read

Browse Software Engineer questions

See the practice prompts

18Practice promptsAcross five skill areas

The work candidates describe is backend engineering where money is involved: card onboarding, transaction processing, rewards and ledgers, with partner integrations alongside. Reported themes are data consistency, high-throughput transaction processing and regulatory compliance. For preparation, that means every answer, in code or in a design, should name its invariants (a balance never goes negative by accident, a payment is never applied twice), say what happens on a retry or a partial failure, and say where the data lives when something crashes halfway.

The reported questions are mostly credit card and payments scenarios, plus project and behavioral prompts. On the coding side: velocity rules over a stream of transaction logs, a reward-points history that tolerates concurrent updates, a reward tier for a billing cycle, and a thread-safe rate limiter for payment requests. On the design side: a double-entry ledger, a traffic spike during a promotional launch, at-least-once webhook delivery to merchant partners, and a partner integration layer that keeps cardholder data isolated. Build a small working version of each rather than only reading about them.

The stack candidates list is Go, Java or Python, relational databases with a clear grasp of transaction isolation levels, REST or gRPC APIs, and message queues such as Kafka or RabbitMQ. Sharding, consensus protocols and idempotency keys across services are described as less common topics, but idempotency is also the thread running through the ledger, rate limiter and webhook questions, so treat it as core. Cloud (AWS, GCP) and containers (Docker, Kubernetes) are listed as nice-to-have.

The final stage includes people outside engineering and a conversation with senior leadership, so you need two registers: precise engineering language for the coding and design sessions, and plain business language (what broke, who was affected, what it cost, what you decided) for the others. Prepare one set of stories and be ready to tell each at both levels of detail.

01

HR Screening Call

reported

Candidates describe this first call as a conversation about your background, career goals and fit for the role. No technical exercise is reported for it. Treat it as the place to make your backend experience easy to follow, to explain why payments and card programs interest you, and to learn how the later sessions are organised. Since the role is reported as hybrid and San Francisco based, expect logistics to come up here too.

What to demonstrate

  • Your background and the path that led you to a backend role
  • Your career goals and how this role fits them
  • Fit for the role as candidates describe it: backend work where data consistency matters

How to prepare

  • Prepare a short walkthrough of two backend projects: what each did, what you owned, the language and database involved, and one correctness or reliability problem you solved.
  • Prepare your answer to the reported question about why you are interested in fintech and how you stay motivated around regulated systems, because it can come up in any conversation.
  • Ask the recruiter which sessions make up the final stage and who they involve, since candidates report that interviewers and scheduling can shift.
Cardless Software Engineer candidate reports ↗
02

Technical Phone Screen

reported

Candidates describe a phone screen built around a pragmatic coding challenge that resembles a real development task more than a contest puzzle. Reported example scenarios include an in-memory cache with eviction rules and parsing nested JSON from banking APIs where fields are missing or malformed. The reported coding questions for Cardless (velocity rules over transaction logs, reward tiers per billing cycle, a thread-safe rate limiter, a reward-points history) are the nearest practice material. Candidates are advised to explain their approach and data structures aloud before typing.

What to demonstrate

  • Working, readable code in the language you pick, with clear function boundaries and names
  • Choice of data structure for the access pattern: hash maps, queues and trees are the ones reported
  • Edge cases and tests: null input, missing fields, boundary values
  • Concurrency awareness, which is reported as a less common topic for this stage

How to prepare

  • Implement an in-memory cache with a least-recently-used eviction policy and an optional time-to-live, with tests for eviction order and expiry at the boundary.
  • Write a parser for a nested JSON payload with missing and malformed fields that returns valid records plus a list of rejected ones with reasons, rather than throwing on the first bad record.
  • Solve the velocity-rule and rate limiter questions timed, in one language, saying the approach and complexity out loud before you write code.
  • Store money as integer minor units (cents) in every exercise, and say why before the interviewer asks.
Cardless Software Engineer candidate reports ↗
03

Interview Loop

reported

Candidates describe the final stage as several sessions: a system design session, a behavioral interview with cross-functional colleagues who are not engineers, and a culture conversation with executive leadership, which candidates describe as informal and centered on your career story, your interest in fintech and your longer-term goals. For the design area, candidates report scenarios such as a payment gateway that must never process a transaction twice and a ledger synchronization pipeline with an external issuing bank, and topics such as relational versus NoSQL storage, REST or gRPC, message queues and idempotency keys.

What to demonstrate

  • System design with data integrity first: transactions, consistency model, idempotency
  • API design for outside partners and asynchronous processing with queues
  • Communication with non-engineers, including explaining constraints in business terms
  • Career story, motivation for fintech and working style, as covered in the leadership conversation

How to prepare

  • Practise the ledger, webhook delivery and partner integration questions aloud: requirements, API, data model, failure handling, then scaling, stating one trade-off at each step.
  • Write down the invariants of a payment flow (no double charge, entries balance, every event is recoverable) and use them as the checklist for every design answer.
  • Prepare two or three project stories you can tell in business terms: the user or operations impact, the decision, the result.
  • For the leadership conversation, prepare a plain account of why fintech, what you have built that relates to it, and where you want your career to go.
Cardless Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Designing the ledger as a balance column that gets updated in place

Model append-only entries per account, in minor units, where the entries of each transaction sum to zero. Write them in one database transaction, derive or cache balances from entries, and explain how you would reconcile against an external issuing bank.

02

Treating retries as an afterthought in the payment, rate limiter and webhook designs

Give every payment request an idempotency key stored under a unique constraint. For webhooks, say that delivery is at-least-once and consumers dedupe on an event id, then show the retry schedule and what happens after the final attempt fails.

03

Writing a rate limiter or reward-points structure that is only correct single-threaded

Name the check-then-act race out loud, protect each key with a lock or an atomic update, and say how you would test it with many threads. Then explain how the design changes across multiple server instances.

04

Starting to type before pinning down inputs and edge cases in the phone screen

Spend the opening minutes stating assumptions: timestamp ordering, duplicate lines, malformed or missing fields, window boundaries, refunds as negative amounts. Write one test per edge case as you go.

05

Telling project and behavioral stories that are all team outcomes with no decision of your own, or that stay in engineering jargon for non-engineering colleagues

Use I for your own decisions, name the alternatives you rejected, and rehearse each story with a version stated in terms of customer, operations or business impact.

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

13 technical prompts0 include a worked solution

Write a program to parse and validate a stream of credit card transaction logs, identifying anomalies based on

medium
Pragmatic Coding & Data Structures

Write a program to parse and validate a stream of credit card transaction logs, identifying anomalies based on specific velocity rules.

Approach
  1. Parse each log line into a typed record (transaction id, card id, amount in integer minor units, currency, merchant, timestamp). Send malformed or incomplete lines to a rejects list with a reason so one bad line cannot stop the stream, and never hold money in floats.
  2. Keep the velocity rules as data, not branches: each rule has a scope key (card, merchant), a window W, a max count and a max amount. Adding a rule then needs no parser change, and each anomaly can name the rule it broke and the transactions involved.
  3. Per scope key, keep a deque of (timestamp, amount) and a running sum. On each event, pop entries older than now minus W, append the new one, then check count and sum. That is O(1) amortized per event and memory bounded by the events inside the window.
  4. Dedupe on transaction id so a replayed line is not counted twice. Evict keys whose deque is empty so idle cards do not use memory.
  5. Edge cases to state: whether the window boundary is inclusive, refunds and negative amounts, mixed currencies, and events that arrive out of timestamp order. The deque assumes per-key timestamps never go backwards.
Follow-up
  • Events can arrive a few seconds out of order. How do you keep the window counts correct?
  • How do you add a rule like 'more than three distinct merchants inside the window' without rescanning the deque?
  • How would you split this across machines once one process cannot keep up with the stream?

Given a set of merchant categories and user transaction data, write an algorithm to calculate the optimal rewa

medium
Pragmatic Coding & Data Structures

Given a set of merchant categories and user transaction data, write an algorithm to calculate the optimal reward tier for a billing cycle.

Approach
  1. Pin down 'tier' first. A useful model: each tier has a base rate, per-category multipliers, optional caps, a qualifying spend threshold and possibly a fee. The answer is the tier with the highest net reward for this cycle, with a fixed tie-break.
  2. Make one pass over the cycle's transactions to build a hash map from category to net spend in integer cents. Then score each tier against that map. That is O(T + K x C) for T transactions, K tiers and C categories, with no tier rescanning the raw transactions.
  3. Apply a capped category as min(spend, cap) x bonus rate + max(0, spend - cap) x base rate. If the user chooses k bonus categories, rank categories by spend x (bonus - base) and take the top k. Greedy is optimal here because each category's gain is independent. That is O(C log C), or O(C log k) with a heap.
  4. Edge cases: refunds that net a category below zero (clamp it, or carry it forward), merchants with an unknown category falling back to the base rate, transactions on the cycle boundary (fix the time zone), and points rounding (round once at the end, not per transaction).
  5. Test with a hand-computed example per tier plus property checks: adding spend never lowers a tier's reward, and the chosen tier's score is at least every other tier's.
Follow-up
  • What changes if a single bonus cap is shared across all of the bonus categories?
  • How would you recommend next cycle's tier from past cycles instead of scoring the one just finished?
  • Transactions arrive late and change a closed cycle. How do you recompute and correct the result?

Diff a projection against the primary without per-row point reads

hard
reconciliationrange hashingthrottling

The listing projection has drifted and some rows show a stale version. The primary holds 40,000,000 resource rows across 12,000 tenants while serving 1,200 writes and 14,000 reads per second. The obvious repair, reading each resource row and comparing its version against the projection, is correct and would eventually finish. Explain precisely why it is unacceptable here, then give a diff that finds the differing rows, state its complexity, and make it safe to run against a live primary. Replication lag is usually under 100 ms and is not bounded.

Approach
  1. Quantify the naive cost rather than calling it slow: 40,000,000 point reads at even 0.5 ms each is over five hours serialised, and the only lever is concurrency, which is exactly what you cannot spend. The primary's pool is sized for the write path, and 40,000,000 random reads evict the buffer cache that sustains the 85 percent cache hit rate, so the audit degrades the system it is auditing.
  2. Replace random access with one ordered pass per side. Both sides can be read in (tenant_id, resource_id) order, which is a sequential scan on each and a merge join in O(n) time and O(1) memory. For a dense diff that is the whole answer, and it reads the primary once instead of 40,000,000 times.
  3. For the expected sparse case, compare range hashes instead of rows: partition the key space, compute per range an order-independent aggregate over hash(resource_id, version), compare aggregates, and descend only into ranges that differ. With d differing rows and branching factor B, at most d ranges mismatch per level, so the drill-down examines O(d log_B(n/d)) ranges and reads full rows only in mismatching leaves.
  4. Aggregate with a sum modulo 2^64 or a multiset hash, never XOR. XOR is order-independent but self-cancelling, so two rows wrong in the same way, or a row duplicated on one side, leave the range aggregate matching and the range is declared clean.
Follow-up
  • The diff reports 900 stale rows. How do you decide between patching those rows and rebuilding the projection from resource_revision?
  • Same job, but the projection lives in a search index that cannot be scanned in key order. What changes?

The plan follows the three reported rounds: foundations and the coding screen first, then ledger and integration design, then project, incident and behavioral stories. Each day ends with something you can reuse in the live session.

Small steps. Visible outcomes.0 / 7 completed
ONE WEEK · YOUR PACE

Prepare, practise & reflect

One practical outcome each day. Spend longer where you need it.

0 / 7 done
01Map the loop and refresh the database foundations
  • Write out the three reported rounds and, for each, the questions you are least ready for. Pick the one language (Go, Java or Python) you will use for every coding exercise.
  • Write a one-page sheet on transaction isolation levels: read committed, repeatable read and serializable, the anomalies each allows, and a payments example such as two concurrent withdrawals from one balance.
  • Write a half-page on idempotency keys: what is stored, under what unique constraint, and what a retry returns.

Deliverable: A round map with weak spots marked, an isolation-level sheet and an idempotency note, all in your own words.

02Phone-screen coding: log validation and reward tiers
  • Write a parser for transaction log lines that counts and skips malformed lines, then add a velocity rule (more than N transactions per card inside a sliding window) with a queue per card. Test boundary timestamps, out-of-order lines and duplicates.
  • Write the reward-tier calculation for a billing cycle: group transactions by merchant category, apply the tier rules, use integer cents, and handle refunds and an empty cycle.
  • Say the approach and complexity aloud before typing, then repeat both exercises under a timer.

Deliverable: Two working solutions in your chosen language with a test file each, and a one-line complexity statement for each.

Practice prompt ↗Practice prompt ↗
03Concurrency: rate limiter and reward-points history
  • Implement a thread-safe rate limiter (token bucket or sliding window) keyed per caller. Write a test with many threads hitting one key and assert the limit is never exceeded.
  • Design the reward-points history as an append-only list of changes (amount, reason, time) with a running balance, and compare a lock, an optimistic version check and a database row lock for concurrent updates.
  • Work through PracHub's practice question on holding a per-tenant cap against concurrent creates, and note how its race compares to the limiter's.

Deliverable: A limiter with a concurrency test, a written comparison of three locking options for the points history, and your notes from the practice question.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
04Ledger design and transaction safety
  • Sketch the ledger schema: accounts, transactions and entries in minor units, entries per transaction summing to zero, a unique key for idempotency, and the SQL that posts a transfer in a single transaction.
  • Decide how you would stop two concurrent postings from overdrawing an account (row lock versus serializable retry) and write the trade-off in two sentences.
  • Do PracHub's practice questions on keyset paging for a history feed and on diffing a projection against the primary, and note where the same ideas appear in a ledger reconciliation.

Deliverable: A ledger schema with the posting statement, a locking trade-off note, and a short list of what a reconciliation job would compare.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
05Scale, webhooks and the partner integration layer
  • Design the promotional-launch traffic spike answer: read caching, queued writes, autoscaling limits, load shedding and which features degrade first, with the datastore bottleneck named.
  • Design webhook delivery: an outbox table written in the same transaction as the event, a worker, exponential backoff with jitter, signed payloads, a dead-letter path and consumer dedupe by event id.
  • Design the partner layer: cardholder data kept in a separate vault behind tokens, status queries that return tokens and statuses only, scoped credentials per partner and audit logging.

Deliverable: Three one-page design outlines, each with API, data model, failure handling and its main trade-off.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
06Project deep dive and production incident stories
  • Write the outline of a project you owned end to end: goals, two or three architecture decisions with the alternatives you rejected, and what you would change today.
  • Write an incident story as a timeline: detection, mitigation, how you isolated the cause, the fix, and the prevention that followed (alert, test, runbook).
  • Rehearse both aloud, then rehearse again in business terms for non-engineering listeners.

Deliverable: Two outlined stories, each with an engineering version and a business-terms version.

Practice prompt ↗Practice prompt ↗
07Behavioral and leadership conversation rehearsal
  • Write outlines for the trade-off, mentoring, fintech motivation, explaining-to-a-non-engineer and challenged-design prompts, using I and naming your own decision in each.
  • Rehearse the leadership conversation: your career story, why fintech, and what you want next, without technical jargon.
  • Run one full mock: a design question followed by two behavioral prompts, with trade-offs said aloud.

Deliverable: Five behavioral outlines, a career-story script and notes from one full mock run.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗

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

The behavioral parts of this loop are reported to include colleagues from outside engineering and a conversational session with executive leadership, alongside project deep dives. They cover trade-offs, ownership, mentoring, explaining constraints to non-engineers and your interest in fintech. Prepare stories in which you made a decision and can state the alternatives and the result, and be able to tell each one in business terms as well as technical terms.

Tell me about a time you had to make a trade-off between speed of delivery and architectural purity. How did y

medium
Behavioral & Project Deep Dives

Tell me about a time you had to make a trade-off between speed of delivery and architectural purity. How did you align the team on this decision?

Approach
  1. Choose a decision you owned where a shortcut and a cleaner design were both real options. Name the two options concretely (for example, a synchronous call now versus a queue and retry worker later) and the deadline or business event that forced the choice.
  2. Show how you decided: how reversible the shortcut was, how much of the system it touched, and whether the code path moved money or only produced reports. A strong answer holds the line on correctness for money movement and accepts impurity elsewhere, and says so.
  3. Cover alignment: you wrote the options down with costs, got the team and product owner to agree to the shortcut explicitly, and recorded the debt with an owner, a ticket and a trigger for paying it back.
  4. Close with the outcome from your own experience: what shipped, whether the shortcut caused trouble, whether it was repaid. A story where you picked speed and never revisited it, or insisted on purity and missed the date with no fallback, is the version that sinks.
Follow-up
  • Was the shortcut ever repaid, and who decided when?
  • What would have made you choose the cleaner design instead?
  • Would your decision change if the code path were a ledger write rather than a reporting job?

How do you approach mentoring junior engineers and ensuring high code quality across your team?

medium
Behavioral & Project Deep Dives

How do you approach mentoring junior engineers and ensuring high code quality across your team?

Approach
  1. Answer with mechanisms rather than a philosophy: pairing on a junior's first changes, starter tasks scoped to teach one new idea, and review comments that explain the reason behind the change instead of rewriting the code.
  2. Describe how quality is held at team level: small pull requests, tests required in CI, a short written review checklist (edge cases covered, errors handled, migrations safe to roll back), and incident follow-ups that feed new checklist items.
  3. Give one real mentee example with a before and after you can observe, such as their first independent feature, fewer review rounds, or taking on-call, and say what you did that made the difference.
  4. Show calibration: when you let someone try and fail in a safe place, and when you tighten review because the code touches payments or data migrations. Avoid the answer where quality means you approve every change, which makes you the bottleneck.
Follow-up
  • A junior's pull requests keep coming back with the same problems. What do you do?
  • How do you keep review quality up without becoming the bottleneck?
  • How would you review a change that alters how ledger entries are written?

Why are you interested in working in the fintech space, and how do you stay motivated when dealing with highly

medium
Culture & Cross-Functional Collaboration

Why are you interested in working in the fintech space, and how do you stay motivated when dealing with highly regulated systems?

Approach
  1. Answer both halves of the question: why this field, and how you stay motivated when the systems are heavily regulated. Do not spend the whole time on the first half.
  2. For why, point to engineering problems you enjoy that fintech makes unavoidable: correctness under failure, idempotent retries, auditability, reconciliation between systems. Tie each to something you built or studied, and mention facts the role lists, such as ledgers, transaction processing and partner integrations.
  3. For regulation, treat constraints as design inputs. PCI-DSS is named for this role, which means isolating cardholder data, keeping audit trails and controlling change. Describe a time you worked within a security, compliance or process constraint and kept delivery moving, for example by automating a check or involving reviewers early.
  4. If you lack fintech experience, bridge from adjacent work with money-like invariants (billing, inventory, bookings) and say what you have read or built since. Avoid generic statements about the industry's size and avoid calling compliance red tape.
Follow-up
  • Describe a rule or review step that slowed you down and what you did about it.
  • Which failure in a card payment flow worries you most, and why?
  • What would you want to learn first about how card transactions are processed?

Tell me about a time you had to explain a highly technical concept or system limitation to a non-engineering c

medium
Culture & Cross-Functional Collaboration

Tell me about a time you had to explain a highly technical concept or system limitation to a non-engineering colleague. How did you ensure they understood?

Approach
  1. Pick a situation with a real stake and a specific colleague in product, operations or compliance: for example why a transaction shows as pending, why a feature needs more time, or why an event can arrive twice. State the limitation and the decision they needed to make.
  2. Describe the translation: you led with the business impact and the decision, used a concrete example from their world (one customer's transaction followed step by step) instead of terms like idempotency or eventual consistency, and used one diagram or timeline rather than many.
  3. Explain how you checked understanding: you asked them to restate it in their own words, or you saw them act correctly afterwards, such as changing a support script, adjusting a launch date or choosing between two options.
  4. End with what lasted: a short written note or FAQ others reused. The story fails if you only simplified and moved on, if the listener ended up deciding differently only by deferring to you, or if it sounds condescending.
Follow-up
  • What did they misunderstand at first, and how did you notice?
  • What would you do if they still needed a date you could not meet?
  • How did you write this up so the next person would not need the same conversation?

How do you handle constructive feedback from peers or leadership when your proposed system design is challenge

medium
Culture & Cross-Functional Collaboration

How do you handle constructive feedback from peers or leadership when your proposed system design is challenged?

Approach
  1. Choose a specific design review where your design was challenged and state the technical objection precisely (for example a single-writer bottleneck, a missing failure case, or an operational cost).
  2. Show your process: restate the objection to confirm you understood it, ask for the scenario that breaks the design, then test it with numbers, a failure walk-through or a small prototype rather than arguing from position.
  3. Say what changed. Either you revised the design and can show it was better, or you held your ground and can show the evidence that convinced the reviewer. Both are acceptable, but you should name which one happened and why.
  4. Add how you handle it when the challenger is senior or from outside engineering, and how you record the outcome (a design note with alternatives considered) so the decision is not reopened. Avoid a story where you were right all along or one where you gave in without understanding the point.
Follow-up
  • Tell me about a time you held your position and were later shown to be wrong.
  • How do you handle feedback when there is no time to test the alternative?
  • How do you record a design decision so it does not get relitigated?
  • 01

    Tell me about a time you had to make a trade-off between speed of delivery and architectural purity. How did you align the team on this decision?

  • 02

    How do you approach mentoring junior engineers and ensuring high code quality across your team?

  • 03

    Why are you interested in working in the fintech space, and how do you stay motivated when dealing with highly regulated systems?

  • 04

    Tell me about a time you had to explain a highly technical concept or system limitation to a non-engineering colleague. How did you ensure they understood?

  • 05

    How do you handle constructive feedback from peers or leadership when your system design is challenged?

  • 06

    Walk me through a complex technical project you owned from start to finish. What were the most critical architecture decisions you made, and what would you do differently today?

PracHub preparation framework ↗
How many rounds are there and how long does the process take?

Candidates report three rounds: an HR Screening Call, a Technical Phone Screen and an Interview Loop, spread over roughly 3-5 weeks. Some accounts give a somewhat shorter range. The order of sessions in the final stage can change with availability, and candidates mention rescheduled slots, so keep your recruiter updated and follow up politely if a step stalls.

Cardless Software Engineer candidate reports ↗
What does the final Interview Loop contain?

Candidates describe a system design session, a behavioral interview with cross-functional colleagues, and a culture conversation with executive leadership. The leadership conversation is described as informal and centered on your career journey, your interest in fintech and your goals, so prepare a clear personal story rather than technical depth for it.

Cardless Software Engineer candidate reports ↗
What kind of technical questions should I prepare for?

Candidates describe practical backend problems rather than obscure algorithm puzzles. Reported coding topics include velocity rules over transaction logs, a reward-points history, reward tiers and a thread-safe rate limiter. Reported design topics include a double-entry ledger, a traffic spike, webhook delivery and a partner integration layer. Build small working versions of each and practise explaining trade-offs aloud.

Cardless Software Engineer candidate reports ↗
Which languages and tools should I prepare in?

Candidates describe the role as asking for a backend language such as Go, Java or Python, solid SQL with an understanding of transaction isolation levels, and experience with RESTful APIs. Queues such as Kafka or RabbitMQ and databases such as PostgreSQL come up in design topics. AWS, GCP, Docker and Kubernetes are listed as nice-to-have. Pick one language and use it for every coding exercise.

PracHub Software Engineer practice ↗
Where is the role based and is it hybrid?

Candidates report that most engineering roles are based in the San Francisco office with a hybrid schedule that mixes office days and remote work. Confirm the arrangement for your specific team with the recruiter during the first call.

Cardless Software Engineer candidate reports ↗
Do I need prior fintech experience?

Candidates describe fintech, payment processing or double-entry ledger experience as nice-to-have, not required. A strong grasp of backend principles, database consistency and API design is what the reported topics point to. If you lack fintech background, prepare examples from billing, inventory or any system with money-like invariants, and be ready to say why you want to work in a regulated field.

PracHub Software Engineer practice ↗
Sources & methodology 3 sources ↗

No official company page is cited. Rounds and questions come from candidate reports and PracHub editorial material; each source shows the date it was read.