Hiring

Assessment builder28 verified labs

Filter integrity-checked debugging labs, stack up to three into one screen, then send it to your team for approval.

Preview a candidate report

28 labs available

Select up to 3

JavaScript · Node.jsEasy

Pagination off by one

Page 1 skips the first N items.

nodeapipagination
10 minjunior
JavaScript · NodeEasy

The Phantom Env Var

Works locally. Fails in CI after a config change.

nodeauthenv
12 minjunior
JavaScript · Node.jsEasy

The Price That Refused to Update

Merchants change a price. Half the storefront still shows yesterday's number.

nodecacheinvalidation
12 minjunior
JavaScript · Node.jsEasy

The Retry That Amplified Outages

When auth fails, clients hammer it harder. Traffic multiplies the outage.

noderetryhttp
12 minjunior
JavaScript · Node.jsEasy

The missing trace ID

A downstream request loses its correlation header.

nodeheaderstracing
14 minjunior
JavaScript · NodeEasy

Wrong Port, Right Service

Health check passes, traffic hits the admin service instead of the public API.

nodeportsrouting
14 minjunior
JavaScript · Node.jsMedium

CORS origin parsing bug

Regex origin validation allows malicious domains.

nodesecuritycors
15 minmid
Python · Python 3Medium

The Config That Swallowed Prod

Production boots with the dev database URL and debug flags.

pythonconfigenvironment
15 minmid
Python · Python 3Medium

The Dashboard That Averaged Averages

On-call swears p95 is fine. Customers still time out.

pythonpercentilemetrics
15 minmid
TypeScript · Node.jsMedium

The Event That Fired Twice

Webhook side effects run twice after every reconnect.

typescripteventssubscribe
15 minmid
JavaScript · Node.jsMedium

The Filter That Swallowed False

?includeDeleted=false still returns soft-deleted rows.

nodequeryboolean
15 minmid
JavaScript · Node.jsMedium

The Header That Vanished Mid-Flight

Authenticated upstream calls 401 even though the client set Authorization.

nodeheadershttp
15 minmid
JavaScript · Node.jsMedium

The Invoice That Forgot Quantity

Carts with quantity > 1 undercharge. Finance finds missing line totals.

nodemoneyfloat
15 minmid
TypeScript · Node.jsMedium

The Lock That Never Let Go

After one failing job, every later attempt waits forever on the same lock.

typescriptlockconcurrency
15 minmid
TypeScript · Node.jsMedium

The Permission That Outlived the User

Security revokes a contractor. API logs still show successful deletes.

typescriptauthcache
15 minmid
JavaScript · Node.jsMedium

The Query That Loaded the World

Orders list endpoint returns every tenant's rows and times out under load.

nodedatabasequery
15 minmid
JavaScript · Node.jsMedium

The Rate Limit That Counted Everyone

One noisy tenant trips the rate limit for every customer on the node.

noderate-limitmulti-tenant
15 minmid
Python · Python 3Medium

The Redirect That Left the Building

Login next= parameter sends users to attacker-controlled hosts.

pythonredirectsecurity
15 minmid
JavaScript · NodeEasy

The Stale Lock

Deploy pipeline stuck because an old lock never expired.

nodecideploy
15 minjunior
TypeScript · Node.jsMedium

The Token That Never Expired

Revoked sessions still authorize long after their expiresAt.

typescriptsessionauth
15 minmid
Python · Python 3Medium

The Webhook That Trusted Silence

Unsigned webhook deliveries are accepted when the signature header is missing.

pythonwebhookhmac
15 minmid
Python · Python 3Medium

The File That Left the Vault

A document download endpoint serves more than the vault folder.

pythonpath-traversalsecurity
18 minmid
JavaScript · Node.jsMedium

The stale confirmation

A successful update is followed by an old value.

nodedatabasereplica
18 minmid
JavaScript · Node.jsHard

Cache key missing tenant id

Multi-tenant cache key uses just user_id, causing cross-tenant leaks.

nodecachemulti-tenant
20 minsenior
JavaScript · Node.jsMedium

Duplicate webhook processing

Each request registers another event listener, so later webhooks are processed multiple times.

webhookseventsnodejs
20 minmid
JavaScript · Node.jsMedium

Idempotency key ignored

The payment endpoint validates an idempotency key but drops it before the database call.

httppaymentsidempotency
20 minmid
JavaScript · Node.jsMedium

The log that ate the request

A debug log serializes an entire upload payload.

nodeloggingmemory
20 minmid
JavaScript · Node.jsHard

Half an import

A rejected batch still leaves earlier rows committed.

nodetransactionsbatch
24 minsenior