Codeaza Technologies
Interview Guide · Confidential

Fintech Wallet — interview guide

Sunday 9 Aug · 5 back-to-back 45-min interviews (1 Go backend + 4 React Native). Hiring 2 — one of each. Live-coding is the tie-breaker: several resumes in this pool were inflated or had empty GitHubs, so weight the code over the CV.
Jump to
How to run each interview

Score each on: Availability ✅/❌ · CV-verified ✅/⚠️/❌ · Code 1–5 · Communication 1–5 · Wallet-fit 1–5 → verdict: yes / maybe / no. Rank as you go; don't anchor on the first person.

The 45-minute format
TimeSegmentWhat to do
0–3Warm-upPut them at ease. "Walk me through what you're building right now."
3–8Logistics gateConfirm the deal-breakers first, no negotiation: start within 2 weeks · fully remote · 6am PKT start (AU overlap) · rate in band. Hard no → keep it short.
8–15Verify the CVProbe the 2–3 specific claims on their card. Ask how, not whether — real builders give texture, fakers get vague.
15–38Live codingShare the repo. "Implement the TODOs so the tests pass — think out loud." Run the tests as they go. These are senior-level tasks (see below), not toy CRUD — watch: do they read the tests first? handle edge cases? reason about failures?
38–43Design chatOne real question (see bank below) about working in a codebase they didn't write / money-movement correctness.
43–45CloseTheir questions + "we'll come back this week." Don't commit on the call.

The exercises are deliberately senior — this is what they must handle

RepoWhat it really tests (beyond "make it work")
Go — wallet ledgerIdempotency (same key applied exactly once — the core payments concept), atomic transfers with an append-only double-entry ledger, and correctness under concurrency — incl. the same idempotency key fired from 200 goroutines and cross-transfers under -race. A mid dev makes the happy path pass; a senior gets idempotency + atomicity right under load.
RN — wallet clientOptimistic updates with rollback (pending → confirm/fail, immutably), and a single-flight token refresh: when many requests 401 at once, refreshToken() must run exactly once and all retry (a refresh stampede is the classic mid-level miss). Plus money formatting.

What "good" looks like

Question bank

Warm-up / signal

"What are you building right now, and what's your part in it?"
"Hardest bug you shipped a fix for in the last 6 months — what was it?"
"What's a piece of code you're proud of, and why?"

Logistics gate (ask first, no negotiation)

"Can you start within 2 weeks? What's your notice?"
"This needs a 6am PKT start for ~4h overlap with Australia — workable?"
"It's a 3-month contract, very likely extended — and your rate expectation?"

Design / architecture (38–43 min)

"You'll fork an existing large codebase you didn't write — how do you get productive in week one?"
Go: "How do you keep money-movement correct under concurrency? Where do races bite?"
RN: "How do you store a token / sensitive financial data securely on-device?"
RN: "How do you keep a wallet screen responsive with a slow network — optimistic UI, caching, offline?"

Close

"What do you want to know about the project or us?"

Per-candidate CV-verification questions are on each card below — those are the ones that separate real from inflated.

Architecture & technical questions — with model answers

Ask 2–3 that fit the candidate. Under each is what a strong answer covers — if they hit most of it unprompted, that's a senior. Vague/buzzword answers without the mechanism = downgrade.

Go / backend

"A client retries a transfer request (timeout). How do you guarantee it isn't applied twice?"

Strong answer: Idempotency keys — client sends a unique key per operation; server records applied keys and returns the original result on a replay. In a DB: a unique constraint on the key + the whole operation in one transaction (or a dedicated idempotency table). Never "check-then-act" without a lock. In memory: a seen-set guarded by the same lock as the mutation. (This is exactly the Go live test.)

"Two concurrent transfers A→B and B→A — how do you avoid deadlock and keep balances correct?"

Strong answer: a single serialized writer / one lock (simple + correct on one node), or per-account locks acquired in a canonical order (e.g. sorted by id) so no cycle forms. In Postgres: a transaction with SELECT … FOR UPDATE in consistent order, or serializable isolation + retry. Never hold a lock across I/O.

"Why not store money as a float?"

Strong answer: floats lose precision (0.1+0.2≠0.3). Use integer minor units (cents) or a decimal type; all arithmetic in integers; format only at the edge.

"How do you keep an audit trail and reconstruct balances?"

Strong answer: append-only double-entry ledger (debit + credit per movement, summing to zero); balance = sum of entries (or a maintained balance + the journal). Immutable history; reconcile against provider statements. (The Go test's Entries() models this.)

"Reliably notify a payment provider / publish events?"

Strong answer: outbox pattern — write the event in the same DB transaction as the state change; a worker publishes it; consumers are idempotent → at-least-once + idempotency = effectively once.

React Native / mobile

"Where do you store the auth token / sensitive financial data on device?"

Strong answer: the secure enclavereact-native-keychain (iOS Keychain / Android Keystore), not AsyncStorage or plaintext MMKV for secrets. Biometric gate; short-lived access token + refresh token, rotated. SSL/cert pinning, no secrets in logs, root/jailbreak detection for high-risk flows.

"User taps Send on a slow network — how do you keep the UI snappy AND correct?"

Strong answer: optimistic update — show the debit immediately as a pending txn, then confirm or roll back on the server response. Idempotency key on the mutation so retries don't double-charge. Offline queue that flushes in order with backoff; cache via React Query / RTK Query. (This is the RN reducer test.)

"The token expires and 5 requests 401 at the same time — what happens?"

Strong answer: single-flight refresh — the first 401 starts one refresh; all in-flight requests await the same promise, then retry with the new token. Prevents a refresh stampede / refresh-token invalidation; if refresh fails → log out. (This is the RN API-client test.)

"Keep a long transactions list at 60fps?"

Strong answer: FlashList/virtualization, memoized rows + stable keys, no inline objects/fns in render, heavy work off the JS thread, Hermes, MMKV for fast reads, and the New Architecture (Fabric/TurboModules/JSI) to cut bridge overhead.

"How would you structure the RN app on our existing Go backend?"

Strong answer: a typed API layer (generated from the backend's OpenAPI), React Query for server state + a small store (Zustand/Redux) for UI state, feature-based folders, a secure-storage module, retry/offline boundaries, Detox e2e, and shared, tested money-format/validation utils.

System design — if there's time (either role)

"Sketch the wallet MVP end-to-end."

Strong answer: RN app → Go API (JWT + refresh) → Postgres double-entry ledger. Transfer endpoint is idempotent (key + one DB tx + row locks). Payment provider via signed webhooks + outbox; a reconciliation job. Observability (Sentry, structured logs, metrics). Encrypted at rest/in transit, least-privilege, minimise PCI scope (tokenise cards, never store the PAN).

12:00 · Salman Ahmad
Go backend · repo salman-ahmad-go · notice: confirm

Screening: ~5 yrs, claims all-Go + DeFi/fintech (Vaultera, Bout-it AU). GitHub is real but small/toy — production depth unproven. Already works AEST hours (plus). Notice + rate were blank in the CV.

Ask to verify
"Your GitHub repos are fairly small — tell me about the biggest Go service you've run in production. Traffic? failure modes?"
"The Bout-it (Australia) founding-engineer role — what did you actually own end-to-end?"
"Where have races or money-consistency bugs bitten you, and how did you fix them?"
Live test — Go wallet ledger

Watch the concurrency test (go test -race ./...): a real Go dev reaches for a mutex and keeps Transfer atomic. Green + clean = genuine. Struggles with the mutex = the "senior Go" claim is thin.

Roadmap
0–3
Warm-up + what he's building.
3–8
Gate: pin down notice + rate first (both missing). If >2wk & won't compress → short call.
8–15
The 3 verify questions above — push for production texture.
15–38
Live: deposit/withdraw/transfer → then the -race test. This is the decider.
38–43
"Forking an existing Go codebase — first-week plan?"
43–45
Close. Note verdict.
1:00 · Umer Nawaz
React Native · repo umer-nawaz-rn · notice: 2 wks

Screening: PUCIT (T2). Strong RN — Turbo Modules / JSI native bridging + a crypto wallet (MetaMask) MVP. No GitHub on file → live code is the verifier.

Ask to verify
"Walk me through a native module you bridged (the Jimi SDK) — the Swift/Kotlin side and the JS interface."
"The crypto-wallet MVP — what did you build, and how did you handle keys/secrets?"
"You've no public code — is your work all private? Happy to see you build live today."
Live test — RN wallet (format · reducer · token-refresh)

Watch the immutable reducer and the token-refresh async — his level shows fast. No GitHub means the code IS the evidence.

Roadmap
0–8
Warm-up + gate (2-wk notice ok? 6am PKT? rate?).
8–15
Native-bridging + wallet questions — real detail or hand-wavy?
15–38
Live RN test — full weight (no public code to lean on).
38–43
"Securing a token / sensitive data on-device?"
43–45
Close. Verdict.
2:00 · Hassan Khawar
React Native · repo hassan-khawar-rn · NUST · notice: 1 wk

Screening: NUST (T1). Writes custom Swift/Kotlin native modules, built a fintech trading app, verified GitHub. Reads a bit backend-heavy.

Ask to verify
"Are you mobile-first, or a full-stack dev who also does RN? What split of your last year was React Native?"
"The trading app — your role, and the trickiest real-time / data part you owned?"
"Tell me about a native module you wrote and why RN alone wasn't enough."
Live test — RN wallet

Strong profile — check the code matches the NUST + verified-GitHub signal. If he drifts to backend framing, confirm real RN depth.

Roadmap
0–8
Warm-up + gate (1-wk notice — good).
8–15
Nail the RN-vs-fullstack split + trading-app depth.
15–38
Live RN test — expect clean, quick work.
38–43
"Keeping a wallet screen responsive on a slow network?"
43–45
Close. Verdict.
3:00 · Haris Amjad ★
React Native · repo haris-amjad-rn · NUST · immediate · likely top RN

Screening: NUST (T1), best all-round — real wallet + payments (Paystack + Fasset crypto, ~1k txns/day), deep native (Fabric/TurboModules/MMKV), verified active GitHub, immediate. Ask is 500K (top of band, but affordable — you cleared this).

Ask to verify
"Fasset — walk me through the wallet/payments flows you built and how you kept them correct at ~1k txns/day."
"You're at the top of our band — what does hiring you at senior tier buy us vs a mid?"
"New Architecture — where have you actually used Fabric / TurboModules in anger?"
Live test — RN wallet

This is the one to close if he delivers. Be ready to move fast — confirm immediate start and lock next steps internally.

Roadmap
0–8
Warm-up + gate (immediate — confirm rate lands).
8–15
Fasset wallet deep-dive + justify senior tier.
15–38
Live RN test — expect strong; note ceiling of his ability.
38–43
Sell a little: the long-term build + China-partner scale.
43–45
Close warm. Verdict — likely yes.
4:00 · Yasir Khan
React Native · repo yasir-khan-rn · best wallet fit · notice: 1 wk

Screening: Actually built a wallet + POS + PCI-DSS (Kuickpay) — the closest real wallet experience in the whole pool. 1-wk notice. Weak university + no GitHub → live code is decisive.

Ask to verify
"Kuickpay — the wallet/POS architecture, and what PCI-DSS actually meant for your day-to-day code."
"How did you secure card / financial data on the device and in transit?"
"No public code — walk me through your biggest shipped app; then let's build live."
Live test — RN wallet

If the domain experience is real and he codes cleanly, he's a serious contender despite thin pedigree. Great CV + weak live code = the CV was the sell; downgrade.

Roadmap
0–8
Warm-up + gate (1-wk — good).
8–15
Kuickpay wallet/PCI deep-dive — real detail is the tell.
15–38
Live RN test — decisive (no GitHub).
38–43
"Securing financial data on-device + in transit?"
43–45
Close. Verdict. Then compare all 4 RN and pick.
© 2026 Codeaza Technologies · Interview guide, Sunday 9 Aug · confidential — internal use only.