
I still get that adrenaline rush just thinking about cracking the Affirm software engineer interview back in early 2026. The whole process was intense. There were moments when I'd zone out and later think, "Wait, what did I just say?" But I walked away with the role.
Linkjob.ai helped me practise and get ready for my interview, even giving me some useful tips during the interview itself. Apart from the gods of computer science, it's definitely another thing I'm super grateful for. I DID most of the questions by myself, but it was also very helpful to get an AI copilot during the interview process, and it was only visible to me on the device.
When I started the Affirm software engineer interview, I noticed the process felt familiar compared to other fintech companies. The stages included:
A recruiter call (scheduled in the email)
A technical screen
An interview with the hiring manager
Three final VO interviews, including two coding tests and a behavioral one
I liked that Affirm balanced practical coding and system design with behavioral assessments. Some companies focus only on algorithmic puzzles, but Affirm wanted to see how I solved real-world problems and fit into their culture.
This mix of structured and unstructured formats made the process feel dynamic and challenging. I realized early that structured thinking and clear communication would help me stand out in software engineering interviews.
The first step in my affirm software engineer interview was a recruiter call, which lasted about 30 minutes, just like what they wrote in the email.
It was mainly them telling me info abt the role and company. Nothing big deal, basic questions only. For what I can recall, they asked about my past experience and how it aligns with what this role is, my salary expectations, and start date confirmation. They also threw in curveballs like the most challenging experience, lessons I learned, etc.
I made it in the format of a table, which might be a little easier to read.
Round Type | Description |
|---|---|
Tech Screening | Received a coding problem where I had to read, modify, and debug code within a pre-existing project. |
Managerial Interview | A deep dive into my resume, asking detailed questions. |
Technical Coding Round 1 & 2 | Coding challenge, Leetcode-style problem solving. (I will give examples below) |
Surely I have practiced a lot to cover all the possible questions. I did Leetcode, posted everywhere I might get some help, and also, found Linkjob.ai, an AI Interview assistant that is completely undetectable to others. I did cheat with it in one formal interview, after I used it when I mocked some. But tbh, it acted so quietly and gave the information I needed in an instant, I would not be surprised when someone uses it during all their interviews.

The last stage of the affirm software engineer interview was the final behavioral round.
This round focused on cultural fit and my overall suitability for the role. The questions explored how I handled challenges, worked with teams, and aligned with Affirm’s mission.
Nothing wild as well, and I was pretty confused when given this round, as some of the questions were already asked in the managerial round.
One of the technical interviews included a card game question. I can't remember all the details, but I have found a similar one in the forums. Here’s what the question looked like:
Given a row of N cards with integer values (values may be positive, zero, or negative), two players alternately pick either the leftmost or rightmost card. Both play optimally to maximize their total sum. Implement a function winner_score(cards: List[int]) -> int that returns the maximum score difference (first − second). Then:
Explain your time and space complexity.
Modify the function to also return one optimal sequence of picks (as a list of indices). Constraints: 1 ≤ N ≤ 2000.
Another challenge was a debugging question about distributed systems.
Filter and deduplicate events with multiple criteria
You are given an events table with one row per event. Each event has an id, type, timestamp (seconds since epoch), a JSON payload, and an integer column event_order that represents the original input order (smaller event_order means the event appeared earlier in the input).
Write a single SQL query to implement the following behavior for this specific scenario:
include_types = ('click', 'view')
exclude_types = ('view')
start_ts = 100
end_ts = 300
limit = 3
dedupe_by_id = TRUE (keep only the event with the largest event_ts per event_id)
Behavior requirements:
First, keep only events whose event_type is in include_types.
Then, remove events whose event_type is in exclude_types.
Then, keep only events whose event_ts is within the inclusive window [start_ts, end_ts].
If dedupe_by_id is TRUE, for each event_id keep only the event with the largest event_ts; if there is a tie on event_ts for the same event_id, keep the one with the largest event_order.
Return the remaining events ordered by event_ts ascending; if event_ts ties, use event_order ascending to preserve the original relative order.
Finally, return only the earliest limit events (limit = 3) after all filtering and deduplication.
Write a query that returns the filtered, deduplicated, and sorted events for this exact configuration.
Expected Output
Events after applying include_types=('click','view'), then exclude_types=('view'), then restricting event_ts to [100,300], deduplicating by event_id to keep the latest event_ts (breaking ties on event_order), ordering by event_ts then event_order ascending, and finally limiting to the earliest 3 events.
Tables-events
Column | Type |
|---|---|
event_id | VARCHAR(10) |
event_type | VARCHAR(20) |
event_ts | INT |
payload | JSON |
event_order | INT |
I started my journey with a clear plan for coding and algorithms. I knew that Affirm’s technical rounds would test my ability to solve problems quickly and accurately. I spent a lot of time on platforms that successful candidates often use, like HackerRank and CoderPad.
I made a habit of reviewing my solutions and rewriting them for clarity. I paid special attention to how my code would scale and how it might fit into a larger system design.
When I was confused or having trouble practicing, I would turn to Linkjob.ai for basic help. As a decent assistant carrying the newest AI models, it can help me solve the questions by directly taking a screenshot.

Preparing for my system design interview meant studying for Affirm's fintech questions. These are about payment processing, fraud detection, APIs and data pipelines. I read guides that covered these topics in depth, learned to highlight trade-offs in designs (e.g. balancing latency with compliance) and always prioritized security and compliance.
I ended up without coming towards some difficult system design questions, pure luck, I suppose, since I only applied for an NG position.
Here’s a quick look at the topics I covered for system design interview prep:
Topic | Why It Matters at Affirm |
|---|---|
Payment Workflows | Core to Affirm’s business and system design interviews |
Fraud Detection | Essential for security and compliance |
APIs and Data Pipelines | Key for scalability and reliability |
Latency vs. Compliance | Unique challenge in fintech system design |
PCI Compliance & Encryption | Required for handling sensitive data |
Behavioural interviews at Affirm are just as important as technical ones. I prepared using the STAR method, which helped me organise my stories and make my answers clear and concise. I picked examples from my past work that showed leadership, teamwork and problem-solving, and quantified my contributions.
Affirm's interviewers often asked open-ended questions, so I practiced answering these by setting the context first, then walking through my actions and the results.
I also reviewed common behavioural questions and crafted responses that aligned with Affirm's values. Practising with Linkjob.ai gave me a chance to refine my answers and get comfortable with the behavioural interview format.
Mock interviews helped me prepare for technical and behavioural interview scenarios. I reviewed my sessions and identified areas for improvement. I paid close attention to my approach to system design interviews.
I asked for feedback on my communication style and technical depth. I learned to set the context before delving into details. This made my answers clearer. Each mock interview boosted my confidence. I found that clear explanations and quantifying my contributions helped in the final rounds.
Here’s a quick checklist I followed for each mock interview:
Set the context for each answer
Explain my reasoning step by step
Quantify results whenever possible
Highlight trade-offs in system design interview scenarios
Stay calm and adapt to new questions
By the time I reached the real system design interview at Affirm, I felt ready for anything. My preparation gave me the structure and confidence I needed to succeed.
When I prepared for the Affirm software engineer interview, I followed a clear checklist that kept me organized and focused. Here’s the exact plan I used:
Step | Description |
|---|---|
1 | Resume + 1-Pager Story Sheet: I prepared my top 3 projects, included metrics, and wrote short postmortems. |
2 | Target-Team Prep: I identified three teams at Affirm and learned about their priorities. |
3 | Time-Boxed Rehearsal Plan: I scheduled coding blocks, system design sketches, and mock interviews. |
4 | General Coding Rounds: I practiced top LeetCode problems under time pressure. |
5 | Specialized Rounds: I built mini-projects to simulate real job tasks. |
6 | System Design: I created a two-page sketch for design discussions. |
7 | Behavioral Rounds: I prepared a six-story deck that covered my leadership experiences. |
8 | After the Interviews: I sent a follow-up note and debriefed myself. |
This checklist helped me track my progress and made sure I covered every important area, especially system design and behavioral stories.
I found that using the right resources made a huge difference in my preparation. Some of the most actionable tips that worked for me included:
conducting mock interviews
using structured templates to debrief
focusing on clarity and communication
Besides using Linkjob.ai for mock interviews and also problem solving, I used learning frameworks like Grokking the System Design Interview to build a strong mental model for system design questions. HackerRank and CoderPad are actually pretty normal for our kind of people, but since they were of great deal of help, I listed them here anyway.
Looking back, I found that structured preparation and adaptability made all the difference. I aligned my approach with Affirm’s values, especially their focus on transparency and professional growth. Their clear career framework helped me understand what mattered most.
Every challenge became a chance to grow. If I can do it, anyone willing to put in the work can too.
It took about three weeks from the recruiter call to the final offer. I found that scheduling moved quickly once I finished each round.
The card game problem really challenged me. I had to think fast and explain my logic clearly.
Not all of them. I practiced with Linkjob.ai for both technical and behavioral rounds, and tried it in one tech interview.
Insights From My 2026 Oracle Software Engineer Interview Journey
Reflecting On My 2026 Perplexity AI Interview Insights
Leveraging AI To Succeed In My Microsoft Teams Interview