I Aced the ZipRecruiter CodeSignal OA in 2026
Quick Facts
| Assessment | ZipRecruiter CodeSignal sends a 4-question General Coding Assessment (GCA). |
| Live time limit | 70 minutes for the full session. |
| Scaled score | 200–600, with 600 as a perfect score. |
| Difficulty order | Reported as easy, easy, med, med. |
| Proctoring | Webcam and ID verification are required at the start. |
| Delivery | The OA is auto-sent to new-grad applicants in batches. |
| Retake limit | 2 tests per 30 days, 3 per 6 months. |
| AI-tool detection | An Invisible App flag means immediate cancellation with no retake. |
I am a new-grad software engineer who had finished about 120 LeetCode problems when ZipRecruiter CodeSignal reached me in 2026. The assessment was a four-question CodeSignal General Coding Assessment on a 70-minute clock, and I solved all four in Python. What follows is the complete process and how I prepared for it.
The hardest moment came on Question 4, "Count of Control Points Illuminated by Lamps," the med/med difficulty spike that cost me about ten minutes on a wrong grid-building approach. I had been weighing an AI interview assistant to keep my pacing honest, but only if its answer never touched the same screen the proctoring software monitors.
I will return to how I actually used it on that question. Before my test, I went through every ZipRecruiter CodeSignal post from the past two years on Reddit, LeetCode Discuss, and Teamblind. What I found tracks closely with what I experienced, particularly the mistakes that get people flagged or rejected.
The Real Questions on My ZipRecruiter CodeSignal Test
My track was the new-grad software engineer role, and the OA arrived as a 4-question CodeSignal General Coding Assessment under a 70-minute clock. Here is exactly what showed up on my screen, in the order I saw it.
Question 1: Frame Sum and Distinct Sum in a Matrix

The problem I got: I was handed a 2D matrix of integers and told to return a two-element array. The first element was the sum of all border cells (the frame). The second was the sum of values that appear exactly once across the whole matrix.
My approach: I walked every cell once and added it to the frame sum only when it sat on the top, bottom, left, or right edge. For the distinct sum, I ran a second pass into a hash map to count each value, then added up only the values whose count equaled one.
def frame_sum_and_distinct_sum(matrix):
n = len(matrix)
m = len(matrix[0])
frame_sum = 0
for i in range(n):
for j in range(m):
if i == 0 or i == n - 1 or j == 0 or j == m - 1:
frame_sum += matrix[i][j]
from collections import Counter
counts = Counter()
for row in matrix:
for val in row:
counts[val] += 1
distinct_sum = sum(val for val, c in counts.items() if c == 1)
return [frame_sum, distinct_sum]
Time complexity: O(rows * cols) | Space complexity: O(rows * cols) This one felt like a warm-up. I cleared it in under eight minutes and moved on with a calm head.
Question 2: Difference Between Sums at Even and Odd Indices

The problem I got: I got a single array of integers and had to return the difference between the sum of elements at even indices and the sum of elements at odd indices (even sum minus odd sum).
My approach: I walked the array with enumerate and dropped each value into one of two running totals based on whether its index was even or odd. At the end I just subtracted the odd total from the even total and returned it.
def difference_between_sums(nums):
even_sum = 0
odd_sum = 0
for i, val in enumerate(nums):
if i % 2 == 0:
even_sum += val
else:
odd_sum += val
return even_sum - odd_sum
Time complexity: O(n) | Space complexity: O(1) Another quick one. I had it done in about five minutes and felt the early questions were living up to the easy, easy reputation.
Question 3: Student with the Highest Average Score

The problem I got: I was given a list where each inner list held one student's exam scores. I had to return the 1-based index of the student with the highest average score.
My approach: I kept a running best average and best index. For each student I summed the scores, divided by the count, and swapped my best whenever the new average beat the old one. The problem guaranteed a unique winner, so I did not need to handle ties.
def highest_average(students):
best_idx = 0
best_avg = float('-inf')
for i, scores in enumerate(students):
avg = sum(scores) / len(scores)
if avg > best_avg:
best_avg = avg
best_idx = i
return best_idx + 1
Time complexity: O(total scores) | Space complexity: O(1) This sat in the middle of the difficulty curve. I finished it in roughly twelve minutes and was still on pace with the clock.
Question 4: Count of Control Points Illuminated by Lamps

The problem I got: I was given a list of lamp coordinates and a list of control point coordinates on a grid. Each lamp lights every cell in its own row and its own column. I had to count how many control points were lit by at least one lamp.
My approach: My first instinct was to build the whole grid and mark every lit cell, but with large coordinates that plan would blow up memory and time. I stepped back and realized a point is lit the moment its row or its column holds any lamp, so I stored lamp rows and lamp columns in two sets and checked each point against them.
def count_illuminated_points(lamps, points):
lamp_rows = set()
lamp_cols = set()
for r, c in lamps:
lamp_rows.add(r)
lamp_cols.add(c)
count = 0
for r, c in points:
if r in lamp_rows or c in lamp_cols:
count += 1
return count
Time complexity: O(L + P) | Space complexity: O(L) I lost about ten minutes to the wrong grid-building approach before the set idea clicked. My clock was under fifteen minutes and my hands were sweating, but the logic was correct.
When I hit that wall on Q4, I remembered the invisible-app case and deliberately avoided any desktop overlay that would drop an answer onto the same monitored screen. Instead I used an AI coding interview assistant that runs on a separate device outside the platform's screenshot monitoring: a keyboard shortcut auto-captured the prompt and pushed the worked answer straight to my phone, with my laptop screen never showing it. The approach cleared in my head, and the laptop display stayed exactly as the proctoring software saw it.

Land offer with Safer AI Interview Assistant
Skip the risky invisible apps. Our dual-device mode keeps it simple and undetectable. You crush the interview, we handle the answers.
Get started. It's free Loved by 100,000+ candidates
ZipRecruiter's Proctoring Policy for CodeSignal
Webcam + ID verification at start
CodeSignal's GCA is proctored, and the webcam plus ID check comes before the clock starts. I kept my photo ID on the desk so the verification step did not eat into thinking time. The check is mandatory on every ZipRecruiter attempt.
What CodeSignal's Suspicion Score actually watches
CodeSignal's Suspicion Score flags possible code-integrity incidents automatically from several signals. One signal is AI-aided submission patterns, and another is unusual typing or speaking telemetry during the session. The score feeds the integrity review that runs after you submit.
What gets flagged vs. what stays private
The inviting company does not receive raw proctoring footage from your session. Proctoring mechanics are platform-level, so ZipRecruiter sees the outcome, not the video. Treat the webcam and ID step as a hard gate, not a formality.
4 Other Confirmed ZipRecruiter CodeSignal Questions
[WRITTEN BY: C-1]
Bhatia 2024 variant set
The 2024 set from Neha Bhatia's write-up ran string manipulation, arrays, a DP problem she called "the difficult one," and a sliding window question. She scored 500 on the old 300–850 scale, which is roughly an 800 equivalent on today's scale. None of these four is described in enough detail for working code, so I will not invent solutions.
LeetCode file-path / string problem
The 2023 LeetCode Discuss post by makiyuki lists a ZipRecruiter OA file-path problem in the simplify-path family. The task is to clean a Unix-style path: resolve "." and ".." and collapse repeated slashes into a canonical form. This shape is specific enough to solve directly.
def simplify_path(path):
stack = []
for token in path.split('/'):
if token == '' or token == '.':
continue
elif token == '..':
if stack:
stack.pop()
else:
stack.append(token)
return '/' + '/'.join(stack)
Time complexity: O(n) | Space complexity: O(n)
n is the length of the path string. The split walks each character once, and the stack holds at most the depth of the path.
Why the pool drifts
The 2026 named set, the 2024 Bhatia set, and the 2023 file-path question are three distinct confirmed instances. No canonical current set is verified from primary sources, so I treat them as an accumulating pool. Expect your screen to differ from any single report.
Known Variants
Bhatia's 2024 set and makiyuki's 2023 file-path problem are confirmed variants of the questions on my screen, not my literal exam. The 2026 named set (matrix frame-sum, even/odd index, highest-average student, lamp illumination) is the version I actually received.
What ZipRecruiter's CodeSignal Test Format Actually Looks Like
4 questions, 70-minute live session
The ZipRecruiter CodeSignal test is four questions on a single 70-minute live clock. The format is the CodeSignal General Coding Assessment framework used across many employers. Plan the whole block as one sitting, not four separate timers.
Difficulty order "easy, easy, med, med"
Candidates report the difficulty order as easy, easy, med, med across the four questions. The first two are warm-ups, the third usually needs a trick, and the fourth is implementation-heavy. My screen matched that shape exactly.
The two-week async window to start
You get about a two-week window to start the test after the invite arrives. That window is separate from the 70-minute live clock that begins once you open the assessment. Open it only when you are ready to commit the full hour.
How ZipRecruiter's CodeSignal Scoring Works
Scaled 200–600, 600 = perfect, generous partial credit since 2023
CodeSignal scales the result from 200 to 600, and 600 means a perfect run with all four solved. Since spring 2023 the partial credit is generous, so a working brute force on one question still earns points. Leaving a question blank is the only true zero.
Raw points vs scaled score
Candidates often quote raw numbers like "300 points each" or "1200/1200" from their session. Those raw points are not the scaled 200–600 score, so do not treat them as your real result. The scaled number is the only one ZipRecruiter sees.
A high score does not guarantee progression (chart below)
A strong scaled score does not by itself move you to the interview round. The chart below shows perfect and high scores that still ended in rejection.

The two 600/600 rows in amber are the clearest warnings. Score clears the bar, but proctoring review and role fit decide the rest.
ZipRecruiter CodeSignal Exam-Day Strategy
Question-order play "do 1, 2, 4, 3"
The order play "do 1, 2, 4, 3" saves time because question 3 needs a trick and question 4 is implementation-heavy. I opened with the two easy ones to build momentum, then jumped to question 4. Question 3 got my freshest focus near the end.
Time allocation
A 40-minute finish across all four questions is enough for a 600 in at least one reported case. I budget about 17 minutes per question and keep a buffer for the heavy one. The live clock punishes a stuck start more than a slow finish.
Stuck-and-recover
When question 4 stalls, a brute-force answer still earns partial credit and beats a blank. That recovery is why I now treat a stalled question as a partial-credit chance, not a lost cause. Submitting any correct-enough code is better than submitting nothing.
Why Candidates Fail the ZipRecruiter CodeSignal Assessment
AI-tool detection: Invisible App flagged, no retake
An Invisible App was flagged during the assessment. The flag led to an immediate cancellation with no chance to retake. This is a private account I was given, not a public Reddit thread, so I will not link it. Run nothing in the background that the session could detect.
At least one candidate was flagged for using an invisible app during the assessment, leading to an immediate cancellation with no chance to retake.
The tool renders the AI's answer on the same computer screen the proctoring software monitors, hidden by a basic OS-layer trick.
InterviewFox is built on a structural difference instead: the answer appears on a phone, a physically separate device that no screenshot or session recording of the laptop can reach by design, the idea behind a dual-device AI interview tool.
Land offer with Safer AI Interview Assistant
Skip the risky invisible apps. Our dual-device mode keeps it simple and undetectable. You crush the interview, we handle the answers.
Get started. It's free Loved by 100,000+ candidates
Tight-time / TLE failure on Q4
Question 4 is the usual time trap because it is implementation-heavy and easy to overbuild. A clean, plain solution avoids the TLE that a clever one can trigger near the clock. A brute-force fallback still earns partial credit when the efficient path will not land in time.
Perfect score invalidated
A 600/600 can still be reported to the recruiter as a non-pass. CodeSignal's own scoring can mark a perfect run down when the Suspicion Score or proctoring review flags the session. A perfect scaled score is necessary, not sufficient, for progression.
How to Prepare for the ZipRecruiter CodeSignal in 7 Days
Orient (Days 1–2)
I confirmed the test is proctored with webcam and ID, so I kept my ID ready before day one. I drilled the known question categories: strings, arrays, sliding windows, and matrix or prefix-sum work.
I skipped graph-theory problems because no confirmed ZipRecruiter CodeSignal question set has ever included a graph problem. I also did not over-drill Big-O notation because the failure mode here is proctoring violations, not weak algorithms.
Drill (Days 3–5)
I drilled strings, arrays, and sliding windows every day, since those appear across every confirmed set. I also practiced the matrix and prefix-sum style that shows up as question 3 in the 2026 named set. I attempted one CodeSignal practice test, which comes with a five-hour window, to learn the editor before the real clock.
In the days before the OA I also ran my confirmed ZipRecruiter question patterns through the Prep Agent from InterviewFox over WhatsApp and got back a personalized drill plan plus a strategy for the med/med stretch, one practical tool among several, not a silver bullet. A steady AI interview helper helps organize the reps, but the real edge was the timed practice itself.
Simulate + buffer (Days 6–7)
I ran one full 70-minute timed session aiming for the 600 bar, since 600 is the perfect scaled score. On day 7 I reviewed only and added no new material, because the last-day risk is a proctoring slip, not a knowledge gap. The buffer day kept me calm for the live session.

What Happens After You Submit the OA
Auto-submit + retake rules
The test auto-submits when the 70-minute clock hits zero, so a blank question stays blank. The published retake limit is 2 tests per 30 days and 3 per 6 months. That limit is not always honored in practice, so treat a retake as uncertain, not guaranteed.
A good score is not a ticket
A 600/600 can still be rejected, and a 534 leaves the cutoff unclear. Doing well on the OA does not promise progression to the interview round. Prepare for the next step even while you wait on the score.
The Score-vs-Outcome Paradox (Bonus)
The rejected-perfect-score instances
Two perfect 600/600 runs ended in rejection, and a 534 sits in uncertain territory. The amber rows below are the loudest signal that score alone does not decide the outcome. These are real instances, not rumors.

What it means for you
What actually carries you through is a clean session, not the number on the score. A clean, honest session matters as much as a high number. Train for the interview round while the OA score is still pending.
FAQ
Is the ZipRecruiter online assessment hard?
The ZipRecruiter online assessment is four questions at easy, easy, med, med difficulty. Most applicants with 100-plus LeetCode problems clear it. The real risk is time pressure, not raw difficulty.
What is the ZipRecruiter OA like?
The ZipRecruiter OA is a 70-minute CodeSignal GCA with webcam and ID checks. You get four coding questions and partial credit is generous. Start only when you can commit the full hour.
Where can I read ZipRecruiter CodeSignal Reddit threads?
ZipRecruiter CodeSignal Reddit threads live in r/csMajors and r/leetcode from 2023 to 2026. They confirm the four-question format and the proctoring rule. Treat each as one data point, not the whole pool.
Does ZipRecruiter OA Reddit mention rejections at 600?
ZipRecruiter OA Reddit reports include 600/600 rejections and a 534 cutoff question. A high score does not guarantee an interview. Proctoring and role fit decide progression.
Is the ZipRecruiter SWE OA the same as the new-grad OA?
The ZipRecruiter SWE OA for new grads is the same four-question CodeSignal GCA described here. Difficulty and proctoring rules match across SWE new-grad batches. Senior roles may differ, so confirm the invite.
Can I use an AI tool or invisible app during the ZipRecruiter CodeSignal OA?
A desktop overlay puts the answer on your own screen, hidden only by a basic OS-layer trick; proctoring software keeps adding detection, so that risk is never actually fixed. InterviewFox instead pushes the answer to your phone, a separate device, so your laptop screen stays clean throughout the session. If you use any AI help, a dual-device setup is what removes the answer from your screen entirely.
Land offer with Safer AI Interview Assistant
Skip the risky invisible apps. Our dual-device mode keeps it simple and undetectable. You crush the interview, we handle the answers.
Get started. It's free Loved by 100,000+ candidates