How we assess
Every applicant goes through 5 gates: application, an AI-assisted screen, a live technical assessment scored by a practice lead, a client-fit interview, and reference and credential checks. The questions below come from the live assessment. We score answers on reasoning and trade-offs, not on recalling definitions.
20 technical questions with model-answer hints
Questions 1–10 (role-specific)
Question 1: When do you choose a Server Component over a Client Component in Next.js?
Model-answer hint
Data fetching with no interactivity goes server-side; state, effects and browser APIs need the client; mentions bundle size.
Question 2: How do you share types between a Next.js client and a NestJS API?
Model-answer hint
Shared package or types generated from OpenAPI / GraphQL schema, plus runtime validation (Zod) at the boundary.
Question 3: Walk us through secure session handling for a web app.
Model-answer hint
HttpOnly, Secure, SameSite cookies; short-lived tokens with rotation; CSRF protection; nothing sensitive in localStorage.
Question 4: A list endpoint slows down at 2 million rows. What do you do?
Model-answer hint
Reads the query plan, adds indexes, cursor pagination, removes N+1 queries, caches with clear invalidation.
Question 5: How do you run a database migration with zero downtime?
Model-answer hint
Expand-and-contract, batched backfills, feature flags or dual writes, every step reversible.
Question 6: REST or GraphQL for a new web and mobile product?
Model-answer hint
Weighs caching, over-fetching, tooling and team skills; no dogmatic answer.
Question 7: How do you keep a Next.js page fast on mid-range Android phones?
Model-answer hint
Core Web Vitals from field data, image and font optimisation, code splitting, less client JavaScript.
Question 8: What does your test pyramid look like for a full-stack feature?
Model-answer hint
Unit tests for logic, integration tests for API plus database, a few Playwright journeys, contract tests between services.
Question 9: How do you handle RTL and Arabic in a shared component library?
Model-answer hint
Logical properties, dir attribute, icons mirrored only where meaning requires, locale-aware formatting.
Question 10: Tell us about a production incident you caused and fixed.
Model-answer hint
Clear ownership, timeline, root cause, prevention steps, blameless tone.
Questions 11–20 (Mobile & Web core)
Question 11: How do you estimate a feature when requirements are still unclear?
Model-answer hint
break it down, name the unknowns, run a short spike, give a range and re-estimate as you learn.
Question 12: How do you integrate national-ID login such as Nafath or UAE Pass safely?
Model-answer hint
standard redirect or app-to-app flow, state and nonce checks, secure token storage, expiry and failure paths.
Question 13: What goes into your definition of done for a user-facing feature?
Model-answer hint
tests, accessibility checks, analytics events, error states, documentation, feature flag.
Question 14: How do you set and enforce a performance budget?
Model-answer hint
Core Web Vitals or startup targets measured on mid-range devices, with CI checks that fail on regression.
Question 15: How do you release safely to millions of users?
Model-answer hint
feature flags, staged rollout, crash and error monitoring, fast rollback, store review planning.
Question 16: How do you handle offline or unreliable connectivity?
Model-answer hint
local caching, optimistic updates with conflict handling, retries with backoff, clear user feedback.
Question 17: What do you check before an app starts handling payments?
Model-answer hint
PCI scope, tokenisation, idempotency, webhooks, reconciliation, provider sandbox tests.
Question 18: How do you keep dependencies and SDKs secure and current?
Model-answer hint
lockfiles, automated update pull requests, vulnerability scanning, licence checks, removing unused packages.
Question 19: A design cannot be built as drawn. What do you do?
Model-answer hint
early feasibility review, alternatives with trade-offs, design-system components, a shared decision with the designer.
Question 20: How do you review a colleague’s pull request?
Model-answer hint
correctness, readability, tests and security; small PRs; clear blocking versus non-blocking comments.
Interviewer tip: Ask for a real example after every answer. Strong candidates describe what they built, what broke and what they changed.
Practical task
Timebox 3 hours take-home or 90 minutes live. Extend a provided Next.js + NestJS + PostgreSQL repository with an “invite teammate” feature: typed API endpoint, migration, email stub, role check, validated UI form and one Playwright test. Scored on correctness, type safety, security defaults, test quality and a 5-minute walkthrough of trade-offs.
How to run it Share the brief 24 hours ahead or run it live. Ask the candidate to talk through trade-offs as they work; reasoning matters more than a finished artefact.
Red flags our practice leads watch for
- Uses `any` or disables type checks to make the build pass.
- Stores auth tokens in localStorage without understanding the XSS risk.
- Cannot explain what a query does at database level.
- Treats tests and accessibility as somebody else’s job.
- Universal flag: Vague answers that never reach a concrete system, number or decision the candidate personally owned.
The scorecard we use
Score each dimension 1–4 (1 = no evidence, 2 = partial, 3 = solid, 4 = exceptional):
| Dimension | Weight | What a 4 looks like |
|---|---|---|
| Technical depth, production judgement and security | 40% | Explains how and why, designs for failure and sensitive data, and knows each tool’s limits |
| Practical task and problem solving | 30% | Delivers a working solution with tests and documented decisions |
| Communication and documentation | 20% | Explains clearly to technical and non-technical audiences, in English or Arabic |
| References and regional context | 10% | References confirm the claimed scope; knows the frameworks and data-residency rules that apply |
Pass bar: weighted average of 3.0 out of 4 or higher, with no dimension below 2. The practice lead approves the final result.