← Back to Directory

Circle interview notes, page 1 of 2

Large Enterprises

Screna has 19 Circle interview write-ups. The most reported round is the technical phone screen (11).

19 interview notes · updated Jul 2026

Circle·Software Engineer·Technical Phone Screen

Apr 2026
Circle SWE interview, got a banking system design question that was more algorithmic than I expected. Pretty niche problem around tracking outgoing spend across accounts.
  • Implement a `topSpenders(timestamp, k)` function for a banking system that returns the top k accounts ranked by total outgoing spending. Outgoing transfers and payments count; incoming transfers and deposits do not. Sort descending by spend, break ties by account ID lexicographically. Return strings formatted like 'alice(1200)'. If fewer than k accounts have spent anything, just return all of them.

“The tie-breaking tripped me up more than the core logic.”

View Post

Circle·Software Engineer·Technical Phone Screen

Apr 2026
Circle SWE interview that went pretty deep on a banking system design problem. The bulk of it was extending a multi-level transaction system to support historical balance queries, which sounds straightforward until you're actually in it.
  • Extend a banking system to support querying an account's balance at a specific past timestamp. How would you design the GET_BALANCE_AT API, and what data structures would you use?

“My first instinct was to just replay all transactions up to the timestamp on every call, which works but is obviously slow.”

View Post

Circle·Software Engineer·Online Assessment (OA)

Apr 2026
Circle OA for a Software Engineer role, one question, basically a CRUD system design with some tricky case-sensitivity rules baked in. The kind of problem that looks straightforward until you actually read the constraints.
  • Design a Recipe Storage system that supports Create, Read, Update, and Delete operations. Each recipe has a name, ingredients list, and steps list. Add() should return an auto-incrementing string ID like 'recipe1', 'recipe2', etc. Name matching on Add is case-insensitive (reject duplicates but keep original casing). Update only allows changing casing of the name, not renaming to something different. Get and Delete work by string ID.

“Spent the first few minutes thinking this was a simple hashmap problem and almost missed the name-matching rules entirely.”

View Post

Circle·Software Engineer·Online Assessment (OA)

Apr 2026
Circle SWE interview had me working through a multi-level banking system problem on what felt like a CodeSignal-style platform. Just level one, but the operations stack up fast once you factor in all the edge cases.
  • Implement a basic banking system with createAccount, deposit, and transfer operations, each taking a timestamp. createAccount should return false if the account already exists, deposit should return the new balance or null if the account is missing, and transfer should move funds between two accounts and return the source's new balance, handling failures like missing accounts, same source and target, or insufficient funds.

“The createAccount and deposit parts were fine, pretty mechanical.”

View Post

Circle·Software Engineer·Onsite - Coding / Algorithms

Apr 2026
Circle SWE interview was a multi-level coding problem centered on building a simplified banking system from scratch. Each level stacked new requirements on top of the last, so if your design from level 1 was too rigid you'd feel it by level 3 or 4.
  • Implement basic banking operations: creating accounts, depositing funds, and transferring money between accounts. All operations take a stringified millisecond timestamp.
  • Extend the system to rank accounts by their total outgoing transaction volume.
  • Add support for scheduling future payments and querying the status of those scheduled payments.
  • Support merging two accounts, preserving both balances and the full transaction history of each account.

“The timestamp-as-string detail is easy to gloss over and it matters more later.”

View Post

Circle·Software Engineer·Online Assessment (OA)

Apr 2026
Did a coding round for a Software Engineer role at Circle. It was a Level 1 task management problem, nothing algorithmically tricky, just more boilerplate than I expected for the time given.
  • Build a Task class that supports adding tasks and retrieving the current list of tasks, with formatted output.

“Pretty straightforward class design exercise.”

View Post

Circle·Software Engineer·Technical Phone Screen

Apr 2026
Circle SWE interview had me building out a banking system in stages, each level stacking on top of the last. Pretty well-designed problem structure, I'll give them that.
  • Implement basic banking account operations: creating accounts (rejecting duplicates), depositing funds, and processing payments while tracking each account's cumulative outgoing total.
  • Given the account operations above, implement a TOP_SPENDERS query that returns the top N accounts by total outgoing payments, with ties broken alphabetically by account ID.
  • Extend the system with a transfer mechanism where funds are deducted from the source immediately but only credited to the target upon explicit acceptance, and transfers expire if not accepted within 24 hours.
  • Implement ACCEPT_TRANSFER: validate that the accepting account is the intended target, check the transfer hasn't expired, and credit the funds if valid.

“The duplicate check tripped me up for a second.”

View Post

Circle·Software Engineer·Technical Phone Screen

May 2026
Circle SWE interview, got hit with a pretty involved banking system design problem that kept layering on requirements. The scheduled payments piece was where things got tricky and I spent most of my time thinking through edge cases.
  • Design and implement a scheduled payment system for a banking application. You need a schedulePayment function that takes a timestamp, account ID, amount, and delay, then queues a payment to execute at timestamp+delay and returns a unique payment ID. You also need cancelPayment to cancel any pending payment for a given account. Critical constraint: every operation must first flush all pending payments whose execute time has passed before doing anything else. Payments execute in creation order when they share the same execute time, and a failed payment (insufficient balance) is silently dropped with no balance change and no spending recorded.

“The 'flush at the start of every operation' rule is what got me.”

View Post

Circle·Software Engineer·Onsite - System Design / Architecture

May 2026
System design round at Circle for a software engineering role. The whole thing was one big question about flight ticket aggregation, which sounds scoped until you realize they want you to cover like six different subsystems in 45 minutes.
  • Design a system that aggregates and surfaces the cheapest flight tickets across multiple providers, supporting search by origin, destination, dates with flexible ranges, cabin class, and number of stops.
  • Walk through your schema and indexing strategy to support fast price queries and efficient price updates at scale.

“I started with the ingestion layer and spent probably too long on it.”

View Post

Circle·Software Engineer·Onsite - Coding / Algorithms

May 2026
Did a coding round for a Software Engineer role at Circle centered entirely around a banking payment system design problem. Pretty involved for what felt like a single question, lots of moving parts to juggle at once.
  • Design and implement a banking payment system that supports canceling previously scheduled payments, extends payment scheduling to persist and report both success and failure outcomes, removes obsolete payment cases, and generates a report of outgoing transactions sorted by total loss amount.

“This was a lot to unpack in one sitting.”

View Post