R1·OA · Part 1 · Before the loop
The online assessment
The only round with no human in it, and the only one you can fail without ever being told. Mid-size product and SaaS loops put this first — before the recruiter call, sometimes before anyone has read your resume. A machine decides, and a cutoff you never see decides again.
- product
- saas
- service
- agency (less often)
Everything open, top to bottom.
07On this page
- What is the platform actually scoring?
- Which language do you pick — and the JavaScript trap in this round.
- The MCQ section nobody prepares for.
- How do you spend sixty minutes on two problems?
- Proctoring: tab switches, the webcam, and the plagiarism flag.
- The variants: timed window, certified score, and the 24-hour OA.
- You did not hear back. What actually happened?
What is the platform actually scoring?
What they are really testingWhether you understand that "it worked on the sample input" and "it passed" are unrelated statements.
Every submission is run against a hidden set — typically fifteen to thirty cases you never see, including the empty input, the single element, the maximum size and one adversarial case built to blow up an O(n²) solution. Three things get scored:
- Cases passed, usually as a percentage. Most platforms give partial credit — eleven of fifteen is a real score, not a fail.
- Time limit, per case. A correct brute force on n = 10⁵ does not "run slowly", it is killed and marked failed.
- Memory limit, which almost never matters unless you are memoising an entire grid.
The consequence is the whole strategy for this round: a submitted brute force scoring 60% beats an unsubmitted optimal solution scoring nothing, and unsubmitted is what happens when you spend fifty minutes on the elegant version.
Running the sample, seeing it match, and moving on. The sample is the easy case, deliberately. If you have not typed in the empty array and the single-element array yourself, you have not tested.
- Your solution passes the samples and fails four hidden cases. Which inputs do you try first?
- n goes up to 10⁵ and your solution is O(n²). Will it pass?
- You have eleven of fifteen with twenty minutes left. Keep optimising, or move on?
Which language do you pick — and the JavaScript trap in this round.
What they are really testingNothing, but the wrong answer here costs you fifteen minutes you do not have.
Pick the language you will not have to think about. For you that is TypeScript or JavaScript — a round that filters on speed is not the round to prove you know Python.
The trap is input handling. Most platforms hand JavaScript candidates a bare process.stdin and no scaffold, and a real number of people lose the first fifteen minutes to reading input instead of solving anything. Learn this block once and type it from memory:
const lines = require("fs").readFileSync(0, "utf8").split("\n");
let p = 0;
const nextLine = () => lines[p++];
const nextInt = () => Number(nextLine().trim());
const nextInts = () => nextLine().trim().split(/\s+/).map(Number);
const n = nextInt();
const arr = nextInts();
const out = [];
out.push(solve(n, arr));
console.log(out.join("\n"));If the platform offers a language-specific time multiplier, it is usually already applied to JavaScript. Do not switch to C++ for speed unless you write C++ weekly — the syntax cost is bigger than the runtime cost at this level.
Two more JavaScript-specific things that fail silently on a platform and never in your editor:
- Integer overflow. Anything past 2⁵³ needs
BigInt. Sum-of-large-numbers problems are written specifically to catch this. - Recursion depth. Node blows the stack around ten thousand frames. A recursive DFS over 10⁵ nodes crashes — convert to an explicit stack.
- Printing inside a loop.
console.logper line on 10⁵ lines is slow enough to time out on its own. Buffer into an array and print once, as above.
- Your sum goes past 2⁵³. What happens, and what do you change?
- Your recursive DFS crashes only on the largest case. Why?
- The output is right and the case still times out. Where do you look?
The MCQ section nobody prepares for.
What they are really testingBreadth, cheaply. Twenty questions, one mark each, and they are worth as much as a whole DSA problem.
Product and service assessments usually bolt fifteen to twenty-five multiple-choice questions onto the front. Candidates skip preparing for them entirely and then lose the cutoff by four marks. They come from a small, predictable pool:
- Output prediction. Hoisting,
this, closures in loops, promise versussetTimeoutordering, type coercion. This is R3 content in multiple-choice form — if you have read that round, you already have these. - Complexity. "What is the time complexity of this snippet?" Nested loop over the same array, binary search inside a loop, sort then scan.
- SQL. One or two: what a
LEFT JOINreturns when the right side is empty, whatGROUP BYwithout an aggregate does, index usage. R6 covers this properly. - HTTP and web basics. Status codes, idempotency, CORS, what a preflight is.
- Occasionally aptitude. Percentages, ratios, one series. Service companies only. Do not lose sleep, but do not be surprised.
Answer every one — there is no negative marking on any platform in common use, so a blank is strictly worse than a guess.
Spending eight minutes on one output-prediction question with three nested closures. Flag it, guess, move on. The MCQ section is a time trap disguised as an easy section.
- A resolved promise, a setTimeout(0) and a console.log — in what order do they print?
- What is the complexity of a binary search inside a for loop?
- What does a LEFT JOIN return when the right table has no matching row?
How do you spend sixty minutes on two problems?
What they are really testingTriage under a clock, which is the actual skill this round measures.
- 0–5 min. Read both problems before writing anything. Then start with the one you can see the ending of. There are no bonus marks for order and the second problem is not always the harder one.
- 5–20 min. Brute force the easier one, submit it, and take the partial score. It is now banked and cannot be lost.
- 20–40 min. Optimise only if the brute force actually timed out. If it passed everything, do not touch it — go to the second problem.
- 40–55 min. Second problem, same pattern: working first, fast second.
- 55–60 min. Submit everything, including the half-solution. Test one edge case per problem with custom input.
The people who fail this round are almost never the people who could not solve the problems. They are the people who solved one beautifully and ran out of clock on the other.
There is nobody to say this to. That is the point — write the plan down on paper before the timer starts, because there is no interviewer to pull you out of a hole at minute forty.
- You are forty minutes in with one problem half-done. What now?
- The brute force passed every case. Do you still optimise it?
- Which problem do you open first, and how do you decide?
Proctoring: tab switches, the webcam, and the plagiarism flag.
What they are really testingWhether the score they are about to trust is yours.
Assume everything is recorded, because it is. Standard proctoring on HackerRank, Codility, HackerEarth and CodeSignal logs all of this:
- Tab and window focus. Every time you leave the tab is timestamped and shown to the reviewer as a count. Two or three is normal and nobody cares. Fifteen reads as a second screen.
- Full-screen exit, if the test enforces it. Exiting can end the attempt outright on strict settings.
- Paste events. A 40-line paste into an empty editor is flagged and shown as one event with a size. Typing your own boilerplate takes twenty seconds and looks like typing.
- Webcam and screen capture, on senior and remote-first roles. Sit somewhere plain, and do not talk to anyone in the room.
- Code similarity. Submissions are compared against every other submission for that problem and against public solutions. A pasted LeetCode answer with the variable names intact is the most-caught thing in this round.
Opening a second browser to check a syntax detail. Use the platform docs or your own memory. One tab switch to Google an array method costs nothing; a rhythm of them costs the round.
2026: platforms now flag suspiciously perfect first drafts — no compile errors, optimal on the first submission, typed at an even pace. That pattern gets a human review, not an automatic pass. The safe version is honest: solve it yourself, and let the keystroke rhythm look like thinking. If a company allows AI assistance they say so explicitly in the instructions; silence is not permission.
- The report shows fourteen tab switches. What were they?
- Your solution is close to a public one. Can you explain it line by line?
- Did you use any AI assistance during the test?
The variants: timed window, certified score, and the 24-hour OA.
What they are really testingNothing. Knowing which one you agreed to.
- Fixed-window OA. "Complete within 72 hours, 90 minutes once you open it." Open it when you are sharp, not at 11pm because it expires tomorrow. The window is for scheduling; the clock inside is real.
- Certified assessment. CodeSignal-style, one score reused across many companies. Worth taking seriously once — a good score gets you skipped past this round elsewhere for a year.
- The 24-hour take-home OA. A small build task on the platform rather than DSA. This is a take-home round wearing an OA badge — read that chapter, not this one.
- The paired follow-up. Some companies bring your OA solution into the next round and ask you to explain or extend it. Keep a copy of what you submitted. You will not get it back from the platform.
- Walk me through the solution you submitted.
- Now extend it to handle updates to the input.
- What would you change about it with another thirty minutes?
You did not hear back. What actually happened?
What they are really testingNothing — but the answer changes what you do next.
OA rejections are almost never communicated, and the cutoff is not published. Three real reasons, in order of frequency:
- You were under the cutoff, which is often set at a percentile of that week's applicant pool rather than an absolute score. The same submission passes in a quiet week.
- A proctoring flag put your attempt in a manual review queue that nobody drained.
- Nothing to do with you. The role was filled or frozen and the pipeline was dropped whole.
The useful response is to keep your own record: date, company, platform, problems, roughly what you scored. After four of them a pattern shows up — usually "I keep timing out on the second problem", which is a fixable thing, not a talent problem.
- Have you applied or interviewed with us in the last six months? (Most companies enforce a cool-off period.)
- Would you be willing to retake the assessment?
- Do you have a certified score you can share instead?
Finished this round?
0 of 27 rounds read in this book