Skip to the notes
JSGroundwork
JSGroundwork handwritten · web dev
✎Playground→⌘Problems◎Interview prep↻Review🔥Progress

Chapters

23 chapters
⌕
Beginner18›
00Scouting reportR1Screening callR1·OAOnline assessmentR1·THTake-home roundR1·TPTech phone screenR2Machine codingR3JavaScript & TSR3·TSTypeScriptR4React & Next.jsR5Node & NestJSR6Databases & RedisR7DSA roundR8System designR9AWS, Docker, CI/CDR10Resume grillingR11BehaviouralR12HR & the number✓The week before
Advanced5›
50LWhat changes at ₹50L50LHard DSA50LDistributed systems50LRuntime internals50LStaff behavioural
/ search[ ] chaptert top
Switch topic4›
JSJavaScript⑂GitΣDSA in JSSDSystem Design

⚙ Display

Text size
100%
Theme
Style
R1·OA

The online assessment

Length60–120 min, unattended
WhoNobody — a platform and a cutoff
DecidesWhether a human ever opens your resume
Fail modeBoth problems half-solved, neither submitted
productsaasserviceagency

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.

1OA.1
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.

The answer that loses the room

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.

1OA.2
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:

the only stdin boilerplate you need — memorise it
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"));
2026 note

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.log per line on 10⁵ lines is slow enough to time out on its own. Buffer into an array and print once, as above.
1OA.3
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 versus setTimeout ordering, 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 JOIN returns when the right side is empty, what GROUP BY without 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.

The answer that loses the room

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.

1OA.4
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.

Say it like this

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.

1OA.5
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.
The answer that loses the room

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 note

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.

1OA.6
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.
1OA.7
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.

←previousScreening call↑ CovernextTake-home round→