Coding Interviews

How to Prepare for an Online Assessment: Practical Guide

Learn how to prepare for an online assessment with a practical plan covering setup, timed practice, coding patterns, testing, and test-day decisions.

The Stealth Interview Team11 min read
How to Prepare for an Online Assessment: Practical Guide

Knowing how to prepare for an online assessment starts with the invitation, not a random set of coding problems. Extract the rules, practise the tested skills under similar constraints, verify your setup, and use a repeatable process during the test.

Start With the Assessment Instructions, Not Generic Practice#

Treat the employer’s written instructions as the specification for your preparation. General advice cannot override the rules for the assessment in front of you.

Read the invitation once for logistics and again for constraints. Pull the important details into a short technical assessment checklist:

  • Assessment format and section types
  • Supported programming languages
  • Overall or per-section time constraints
  • Whether you can move between questions
  • How answers are saved and submitted
  • Available editor features
  • Permitted documentation, notes, calculators, or other resources
  • Browser, application, camera, and microphone requirements
  • Deadline and time-zone details
  • Contact process for technical failures

Do not assume “technical assessment” means several algorithm questions. The test may contain a mix of:

  • Coding tasks: Implement a function or complete a program.
  • Multiple-choice questions: Evaluate language behavior, complexity, systems concepts, or role-specific knowledge.
  • Debugging sections: Find and repair defects in existing code.
  • SQL tasks: Write queries against a supplied schema.
  • Work samples: Modify a small project, review code, or explain a design.
  • Written responses: Describe trade-offs or justify an approach.

Each format needs different preparation. Algorithm drills will not teach you to inspect unfamiliar code efficiently. SQL review will not help much if the test is primarily graph traversal. Start with the actual section descriptions.

If the invitation names a provider, read its official instructions and use our platform and proctoring references to organize what that provider documents about its environment. Do not infer hidden monitoring behavior. Nobody outside the platform can verify how its integrity systems operate.

Create a one-page summary in your own words. For example:

Two coding tasks and one debugging task. Python is supported. Navigation is allowed. External documentation is not permitted. Code must be submitted through the assessment interface.

That summary gives your online assessment preparation a concrete target. If the invitation leaves something important unclear, ask the recruiter before the assessment rather than improvising a rule during it.

Build a Preparation Plan Around the Skills Being Tested#

Translate the assessment description into a short list of skills, then practise those skills deliberately. Random problem selection creates activity without giving you reliable coverage.

Look for clues in the role description and assessment invitation. A backend role might emphasize data transformation, API logic, SQL, and complexity. A frontend role might include JavaScript behavior, state changes, or debugging. A data role may lean toward SQL, arrays, aggregation, and edge-case handling.

For a general online coding assessment, begin with common foundations:

  1. Arrays and strings
  2. Hash maps and sets
  3. Sorting
  4. Two-pointer scans
  5. Stack and queue operations
  6. Tree or graph traversal
  7. Time and space complexity
  8. Clear testing and boundary-case analysis

Study less common techniques when the role or instructions point toward them. Dynamic programming, tries, union-find, and advanced graph algorithms matter in some assessments. They should not displace basic array and hash-map fluency without a reason.

Use focused sets instead of selecting problems at random. The pattern hubs group problems by reusable technique. Curated sets such as NeetCode 150 can give your coding assessment practice a defined scope.

For each problem, record four things:

  • The signal that identifies the pattern
  • The invariant or state your solution maintains
  • The expected time and space complexity
  • The mistake you are likely to repeat

Suppose you review frequency counting with a hash map:

Python
def frequencies(values):
    counts = {}
    for value in values:
        counts[value] = counts.get(value, 0) + 1
    return counts

This runs in O(n) expected time and uses O(k) space, where k is the number of distinct values. The important lesson is not the syntax. It is recognizing when repeated lookup or counting should replace a nested scan.

Review your chosen language#

Your plan should include language mechanics that become expensive under a timer:

  • Reading and parsing input
  • Splitting and joining strings
  • Sorting with keys or comparators
  • Dictionary, set, queue, and heap operations
  • Loop boundaries and indexing
  • Integer limits and overflow behavior
  • Copying versus mutating collections
  • Returning the required data type
  • Writing a small test harness

You want standard-library operations to feel routine. A timed coding test is a poor place to rediscover comparator syntax or queue behavior.

Practise Under Realistic Assessment Conditions#

A practice online assessment should resemble the real environment closely enough to expose operational mistakes. Solving the same problem casually in a full IDE tests a different skill.

Match what you know about the assessment:

  • Use the same programming language.
  • Set a timer with the same overall structure.
  • Work in an interruption-free room.
  • Use a plain editor if the assessment editor is limited.
  • Disable autocomplete when it will not be available.
  • Avoid local execution when the real environment requires manual reasoning.
  • Follow the same resource rules you expect on test day.

Do not make every session restrictive. First learn a technique with normal tools. Then repeat it under assessment constraints. Learning and simulation serve different purposes.

Use the same cycle for each task:

  1. Read: Identify inputs, outputs, constraints, and examples.
  2. Clarify: State assumptions that the prompt does not settle.
  3. Choose: Select a pattern and explain why it fits.
  4. Implement: Write the smallest correct version.
  5. Test: Exercise branches and boundary cases.
  6. Review: Compare the result with your intended complexity.

This cycle also prepares you to explain your approach aloud. Before coding, give yourself a short verbal summary:

I will sort the intervals by start time. Then I will scan them once, extending the last merged interval when the next interval overlaps.

That sentence exposes gaps before they become code.

After each session, classify mistakes by cause:

  • Misread requirement
  • Incorrect algorithm or complexity
  • Missing edge case
  • Language or syntax error
  • Implementation bug
  • Weak manual trace
  • Excessive time spent on one approach
  • Submission or interface mistake

The category matters more than the problem count. If most failures come from misunderstood requirements, another advanced algorithm will not fix the underlying issue.

Use a Simple Time-Management Procedure#

Manage the assessment through explicit decision points rather than intuition alone. You do not need a universal minute-by-minute schedule.

If the interface permits navigation, scan the available tasks before committing. Note the likely pattern, implementation size, and any unclear wording. Start where you can make dependable progress unless the instructions impose an order.

For each coding task, separate design from implementation.

Design checkpoint#

Before writing full code, establish:

  • The brute-force approach
  • The likely target complexity
  • The data structure or pattern
  • The main invariant
  • The important edge cases

If you cannot explain why the approach works, more typing usually deepens the problem. Simplify it. Write pseudocode. Try a small example by hand.

Progress checkpoint#

After some work, decide whether to:

  • Continue with the current approach
  • Reduce the scope to a simpler correct solution
  • Save partial work and move to another task
  • Restart because the invariant is wrong

Base the decision on evidence. A nearly complete linear scan deserves different treatment from an approach that still has no coherent state.

Keep enough time for a final pass. Check:

  • Empty and minimal inputs
  • Off-by-one errors
  • Accidental debug output
  • Missing return statements
  • Wrong function signatures
  • Unintended mutation
  • Saved and submitted status

Coding test time management is not only about speed. It is about preventing one uncertain task from consuming the whole session.

Worked Example: Solve Merge Intervals From Prompt to Tests#

Merge Intervals becomes straightforward once you sort intervals by start time and maintain one merged result. This is LeetCode 56, Merge Intervals.

Assume the input is a list of intervals:

Text
[[start_1, end_1], [start_2, end_2], ...]

The output should contain non-overlapping intervals covering the same ranges. If the prompt treats touching intervals as overlapping, [1, 4] and [4, 6] become [1, 6].

The enabling step is sorting by start time. Once sorted, a new interval can only overlap the last interval in the result. You do not need to compare it with every earlier interval.

Invariant#

After processing each input interval, the result contains the correctly merged, non-overlapping intervals seen so far.

For the next interval:

  • If its start is after the last merged end, append it.
  • Otherwise, extend the last merged end when necessary.
Python
def merge(intervals):
    if not intervals:
        return []

    ordered = sorted(intervals, key=lambda interval: interval[0])
    merged = [ordered[0][:]]

    for start, end in ordered[1:]:
        last = merged[-1]
        if start <= last[1]:
            last[1] = max(last[1], end)
        else:
            merged.append([start, end])

    return merged

Trace the important cases#

Nested intervals

Text
Input:  [[1, 10], [2, 4], [3, 8]]
Output: [[1, 10]]

The later intervals begin before the current merged interval ends. Neither extends the end beyond 10.

Touching intervals

Text
Input:  [[1, 4], [4, 6]]
Output: [[1, 6]]

The condition start <= last[1] merges touching boundaries. If the prompt defines overlap differently, that comparison must change.

Single interval

Text
Input:  [[5, 9]]
Output: [[5, 9]]

The scan has nothing else to process.

Empty input, if allowed

Text
Input:  []
Output: []

Do not add empty-input handling blindly. Check the stated constraints. This guard is appropriate when the contract permits an empty list or when defensive handling is expected.

Unsorted intervals

Text
Input:  [[8, 10], [1, 3], [2, 6]]
Sorted: [[1, 3], [2, 6], [8, 10]]
Output: [[1, 6], [8, 10]]

Sorting makes overlap decisions local.

Sorting takes O(n log n) time. The scan takes O(n) time, so the total remains O(n log n). The output uses O(n) space in the worst case. This Python implementation also creates a sorted copy instead of mutating the input.

The explanation is as important as the code. State the sorting step, the invariant, the overlap condition, and the complexity in that order.

Test Your Code Before You Submit It#

Build tests from the prompt’s constraints and from every branch in your code. Sample cases demonstrate intended behavior, but they rarely exercise the whole implementation.

For a typical collection problem, consider:

  • Empty input, if allowed
  • One element
  • Duplicate elements
  • Already sorted input
  • Reverse-ordered input
  • All values equal
  • No matches or overlaps
  • Every value matching or overlapping
  • Extreme values permitted by the constraints
  • Cases that enter each if, elif, and else branch

For Merge Intervals, the central branch is whether the next interval overlaps the current result. Your tests need both outcomes. They should also test an interval that is fully contained inside another, because that exercises the max operation without changing the end.

When execution is unavailable, dry-run the state on paper or in a comment block:

Text
ordered = [[1, 3], [2, 6], [8, 10]]
merged = [[1, 3]]

next = [2, 6]  -> overlap -> merged = [[1, 6]]
next = [8, 10] -> gap     -> merged = [[1, 6], [8, 10]]

Track only the state that can change. For a sliding window, track the left pointer, right pointer, and window data. For breadth-first search, track the queue and visited set. For dynamic programming, track the state definition and the entries used by the transition.

Before submission, verify the contract:

  • Does the function return rather than print?
  • Is the return type correct?
  • Did you preserve input order when required?
  • Did you mutate an input that should remain unchanged?
  • Are indexes valid at both boundaries?
  • Can arithmetic overflow in the chosen language?
  • Does division have the required integer or floating-point behavior?
  • Does the platform expect a full program or only a function?

A correct algorithm can still fail because its interface is wrong.

Prepare the Technical Setup#

Complete your assessment test-day setup before the scheduled session. Environment failures consume attention even when the platform provides recovery options.

Confirm the required:

  • Browser or desktop application
  • Operating system permissions
  • Network connection
  • Power source and charger
  • Camera and microphone
  • Speaker or headphones, if permitted
  • Keyboard layout
  • Display arrangement
  • Login credentials or access link

Run any official system check or practice environment included with the invitation. This can reveal blocked permissions, unsupported browser versions, login problems, or unfamiliar editor behavior.

Close unrelated applications and silence notifications. Pause background activity that you control, such as large downloads or operating-system updates. These steps reduce interruptions. They do not establish what an assessment platform can or cannot observe.

Prepare a fallback procedure for technical problems:

  1. Note the recruiter or support contact details.
  2. Know the platform’s documented reporting process.
  3. Keep the invitation accessible.
  4. Record the time and visible error message.
  5. Take screenshots when the rules permit it.
  6. Report the issue promptly and factually.

Do not experiment with major system changes immediately before the assessment. Use a stable setup you have already tested.

Know What to Do on Assessment Day#

Follow the written process carefully and preserve time for verification. Assessment-day discipline is the final part of how to prepare for an online assessment.

Before starting the timed portion, read every instruction on the page. Check whether timing begins immediately, whether sections lock after submission, and whether navigation is permitted. Confirm the selected language before writing code.

During the assessment:

  • Restate each task’s input and output contract.
  • Note the constraints before choosing an algorithm.
  • Use only resources explicitly permitted by the rules.
  • Keep implementation aligned with your stated invariant.
  • Test branches and boundary cases.
  • Use your decision points when progress stalls.
  • Save work before navigating away when the interface requires it.

If a technical problem occurs, use the platform’s supported process. Record what happened rather than silently spending the remaining session retrying the same action. Avoid claims about the cause until you have evidence.

At the end, confirm that every intended response is saved or submitted. Remove debug output. Recheck function signatures and selected languages. Do not leave the session until the interface shows the expected completion state.

Afterward, write a short private review while the details are fresh:

  • Which problem families appeared?
  • Which parts consumed unexpected time?
  • Which mistakes came from reasoning versus implementation?
  • Which language operations slowed you down?
  • Which setup or interface details should you change next time?

That review turns one online coding assessment into useful preparation for the next one.

Frequently asked questions

How should I prepare for an online assessment?
Start by extracting the format, constraints, permitted resources, technical requirements, and deadline from the invitation. Then practise the tested skills under similar conditions, verify your setup, and use a repeatable process during the assessment.
What topics should I study for an online coding assessment?
Base your study plan on the role and assessment description. Common foundations include arrays, strings, hash maps, sets, sorting, two-pointer scans, stacks, queues, traversal, complexity, testing, and boundary-case analysis.
How can I practise under realistic assessment conditions?
Use the same language, timing structure, resource rules, and editor limitations described for the real assessment. Learn techniques with normal tools first, then repeat them under assessment constraints.
How should I manage time during a coding assessment?
If navigation is allowed, scan the tasks before choosing where to begin. Separate design from implementation, use progress checkpoints, and reserve time to test boundary cases and verify submission status.
What should I test before submitting code?
Test the prompt examples, every branch in your code, and relevant cases such as empty or minimal input, duplicates, ordering differences, containment, and extreme permitted values. Also verify the function signature, return type, mutation behavior, and required output format.

Keep reading

Ace your next coding interview

Stealth Interview is a desktop app for macOS and Windows that reads the problem off your screen and answers with a working solution, a step-by-step explanation and its time and space complexity — while staying invisible to screen sharing.

Get Stealth Interview