SampleThis is a sample. Real assessments are custom-built from your job description.

What the candidate does. What you get back.

Exactly what a candidate sees and submits, and the full report that lands in your inbox — scoring, a moment-by-moment replay, anti-cheat, and a debrief that tests whether they can explain their own code. Toggle between the two. No sales call needed.

Candidate's view
BackendHardSubmitted at 15:40

Add pagination to a live product-search function

The catalog has grown to ~50,000 products and the results page needs to paginate. Extend search_productswithout breaking the existing callers, and make sure it holds up at 50k rows. An AI assistant is available — how they direct it, and whether they check it, is part of what we measure.

catalog.py · starter codegiven
# catalog.py — live product search. Keep existing callers working.
PRODUCTS = load_products()   # ~50,000 rows

def search_products(query, category=None):
    results = [p for p in PRODUCTS
               if query.lower() in p["name"].lower()]
    if category:
        results = [p for p in results if p["category"] == category]
    return results
catalog.py · submittedPython
# catalog.py — added keyset pagination. Old callers unaffected.
from collections import namedtuple
SearchPage = namedtuple("SearchPage", ["items", "next_cursor"])

def search_products(query, category=None, *, cursor=None, limit=None):
    results = [p for p in PRODUCTS
               if query.lower() in p["name"].lower()]
    if category:
        results = [p for p in results if p["category"] == category]

    # No pagination requested -> original behaviour, callers unchanged.
    if limit is None:
        return results

    # Keyset pagination: stable sort, then seek past the cursor. No full
    # re-scan per page, and no drift if the catalog changes mid-scroll.
    results.sort(key=lambda p: p["id"])
    if cursor is not None:
        results = [p for p in results if p["id"] > cursor]

    page = results[:limit]
    next_cursor = page[-1]["id"] if len(page) == limit else None
    return SearchPage(page, next_cursor)
AI assistantcandidate-directed
Candidate
Need to paginate search_products — 50k rows, and existing callers pass (query, category).
AI assistant
Add offset and limit params and return results[offset:offset + limit].
Candidate
Offset re-scans all 50k every page and drifts if the catalog changes mid-scroll, so users see duplicates or skips. I'll use a keyset cursor on id, and keep the old signature by only paginating when a limit is passed.
AI assistant
Keyset avoids the offset drift and scales better — solid call.
✦ Overrode the AI's offset suggestion — and said why.
Tab switches: 0
Paste events: 0
AI tool: Claude (allowed)
Total time: 15m 40s
Book a demo — your first candidate's on us →Or email us →

Real assessments include 3–6 problems custom-built from your job description, the full anti-cheat trail, and a senior-engineer walkthrough for every dimension. Your first candidate is on us.