Full-Stack Engineer
Structured interview questions for Full-Stack Engineer, with what a strong answer surfaces for each one.
BehavioralTechnical decision-making Describe the hardest technical decision in your last role. Why was it hard and how did you make it?
What a strong answer surfacesAbility to structure a decision under uncertainty: identifying the conditions, explicit trade-offs, consulting the affected people, validating afterwards with data. Bonus: the candidate mentions changing their mind along the way or documenting the decision for the future. Anyone who describes an obvious decision in hindsight rarely weighed it seriously.
BehavioralDebugging and investigation Tell me about a production bug you fixed. What was the symptom, how did you diagnose it and how long did it take?
What a strong answer surfacesA structured debugging method: reproduction, logs, instrumentation, hypotheses validated by experiment. Honesty about duration (a real production bug is rarely done in under 30 minutes). Bonus: the candidate names the root cause and the systemic fix, not just the hotfix. Answers like I restarted the service with no diagnosis point to weak investigative ability.
BehavioralLearning ability and humility Describe a moment when you had to refactor or rewrite code you had written yourself just a few months earlier. What had happened in the meantime?
What a strong answer surfacesTechnical humility and an ability to learn. Bonus: the candidate names what they would do differently from the start today. Anyone who never really had to refactor their own code is lying or never kept code in production over time.
SituationalTechnical courage In a code review you spot a security flaw (SQL injection, a secret in plaintext, a missing auth check) in a senior colleague's PR. How do you react?
What a strong answer surfacesAbility to flag a technical weakness without blocking: a factual comment in the PR (here is the risk, here is my suggested fix), an offer to help solve it, escalation to the tech lead if the PR is merged despite the comment. Anyone who lets it slide because the profile is senior shows a lack of technical courage.
SituationalCommunication with product A Product Manager asks for a feature that you estimate at 3 weeks. The PM wants it in one week. How do you react?
What a strong answer surfacesClarifying the need before negotiating the timeline (perhaps the feature can ship in two phases or be simplified). Offering options: an MVP in one week plus V2 in two weeks, an explicit scope cut, additional resources. Answers like I can do it in a week if I work the weekend are a warning flag (a signal of poor self-management).
SituationalPragmatism and prioritization You join a team with significant technical debt: insufficient tests, manual deployments, barely any monitoring. What does your 30-day plan look like?
What a strong answer surfacesDiagnosis first: no attempt to fix everything at once. Prioritization by risk and impact (typically: monitoring first to see, then tests in critical zones, then deployment automation). Alignment with the team and tech lead before each move. Anyone who dives straight into a full rebuild shows a lack of pragmatism.
CaseSystem design Design: we want to add real-time notifications to our application (example: a colleague commented on your document). How do you design it?
What a strong answer surfacesClarification before proposing (expected volume, latency requirements, supported devices, persistence of unread notifications). A coherent architecture: push (WebSocket or Server-Sent Events) vs. pull (polling), persistence (a notification DB), idempotency, an email fallback. Bonus: acknowledging the zones of uncertainty (I'd build a POC before committing between WebSocket and SSE). Anyone who jumps straight into code without clarifying shows a design weakness.
CaseDebugging and investigation Debug: your API returns a 500 on 2 % of requests. The logs show no obvious error. How do you proceed?
What a strong answer surfacesA structured method: (1) temporarily raise the log level on the affected endpoints, (2) correlate with metrics (latency, payload size, source), (3) identify a pattern (time of day, request type, a specific user), (4) order the hypotheses (DB timeout, race condition, memory). Anyone who jumps straight to it's probably the DB without investigating has a bias.
CaseOptimization Performance: one page of your application takes 8 seconds to load. You have one week to get it under 2 seconds. Action plan?
What a strong answer surfacesMeasure before optimizing: DevTools, Lighthouse, a server profiler. Identify the bottleneck (rendering, DB queries, payload, CDN). Prioritize by effort times impact. Answers like I add caching with no diagnosis point to premature optimization. Bonus: recognizing that 8 seconds in production usually points to a systemic problem (N+1 queries, a huge payload), not a local optimization.
TechnicalCode quality What is your test strategy? Describe your last project: how many tests, which types, what coverage, and what did you really measure?
What a strong answer surfacesUnderstanding of the test pyramid (many unit tests, fewer integration tests, few E2E). Distinguishing coverage from value (90 % coverage on trivial code weighs less than 60 % on critical business logic). Bonus: the candidate cites a case where a test prevented a real regression. Anyone who simply answers 100 % coverage with no distinction shows weak judgment.
TechnicalBackend fundamentals What is the difference between a DB transaction and an application lock? When do you use one and when the other?
What a strong answer surfacesDB transaction: atomicity and isolation are managed by the DB (ACID), limited to the transaction's duration. Application lock: coordination between processes or instances via Redis, ZooKeeper or similar; useful when coordination goes beyond a single DB (microservices, a task queue). Deadlock risk in both. Anyone who cannot separate the two mechanisms builds race conditions into production.
TechnicalPragmatism and prioritization You join a poorly organized React codebase: 500-line components, props drilling across 5 levels, no separation of logic and presentation. Your action plan in 60 days, without breaking everything?
What a strong answer surfacesA stepwise approach: (1) map the critical components and recurring patterns, (2) first extract hooks and business logic (high leverage, low risk), (3) split large components along functional boundaries, not technical schemas, (4) introduce a state manager only where props drilling actually hurts (Context or Zustand at an SMB, Redux at higher volume). Anyone who wants to switch everything to React Server Components right away shows a lack of pragmatism.
ValuesCoachability How do you take a critical code review of code you were convinced was good?
What a strong answer surfacesOpenness: the ability to separate the code from personal ego. Bonus: the candidate cites a case where a review actually made them rethink. Anyone who describes explaining their logic to the reviewer instead of listening shows a coachability weakness; at an SMB with a small tech team that is a hard knock-out signal.
ValuesMentoring and knowledge sharing What role do you play in passing on technical knowledge to junior profiles or new team members?
What a strong answer surfacesAn active mentoring posture: pair programming, educational reviews (not just ok merge), documenting decisions, sharing good practices. Anyone who says I help when I'm asked with nothing more concrete shows a passive posture. At an SMB with a small tech team, the ability to pass on knowledge is decisive for the team's sustainability.
ValuesTeamwork with product How do you work with Product Managers and designers? Describe a situation where you pushed back on a brief.
What a strong answer surfacesA partnership posture: constructive challenging on the basis of feasibility or complexity, alternative proposals. Bonus: the candidate cites a case where they accepted the original brief after discussion (no systematic opposition). Anyone who describes PMs or designers as they don't understand the tech shows a teamwork weakness.
Evaluation playbook
The Full-Stack Engineer role reveals itself across five evaluation stages. The hands-on exercise (stage 4) must be realistic and time-boxed: an 8-hour task actually takes 24 hours, demotivates good profiles and delivers no better signal than a well-constructed 2-3 hour task.
Stage 1: CV review
Look for stack consistency (a profile with React and Python does not switch back to Java without 3-6 months of ramp-up), stability (at least 18-24 months in previous roles) and autonomy signals (own projects, open-source contributions, visible GitHub). The degree counts less than the last 3-5 years of practice: a self-taught engineer with 5 years of solid production experience weighs more than a top-university graduate with 2 years of extended internship.
Stage 2: Phone screen (30 min)
Three questions only: (1) Describe the most recent project you are proudest of; what was your concrete contribution?, (2) Which technical decision did you make recently that you still have doubts about? (humility and reflection), (3) Why are you looking to move now? Outcome: go/no-go in a 5-minute debrief. Avoid technical gotcha questions at this stage.
Stage 3: Technical interview (60-90 min)
Pair programming or code review on a bounded task (45-60 min), followed by 15-30 min of Q&A on architecture and technical decisions. Assess the ability to think out loud, ask clarifying questions and iterate. Avoid purely academic algorithms with no link to daily work; prefer tasks that resemble daily work (refactoring, adding a feature, debugging an uncovered case).
Stage 4: System-design exercise (60 min)
An architecture discussion on a concrete case: how would you design a system for [a product-specific feature]? Assess the ability to clarify conditions before proposing, weigh simplicity against scalability, and recognize zones of uncertainty. This is the most predictive stage for a Full-Stack Engineer who has to make technical decisions independently at an SMB.
Stage 5: References (structured check)
Call two references: a former tech lead or direct manager and a former developer colleague. Ask both the same 4 questions: What is she/he strongest at? Where would you hire someone complementary? Would you hire them again tomorrow, why? An example of a difficult technical decision made independently? The fourth question delivers the real autonomy signal.
How to recognize a great hire
| Trait | Below bar | On bar | Above bar |
|---|---|---|---|
| Technical soundness | Stumbles over fundamentals (HTTP, DB transactions, asynchrony). Finds solutions by trial and error with no clear mental model. Hard to put on a new language or framework. | Masters the current stack independently. Can learn a new framework in 2-4 weeks. Understands the fundamentals well enough to debug deeply when needed. | A reference for the stack on the team and able to switch to a new stack within a few weeks. Anticipates the classic traps (race conditions, memory leaks, edge cases). Builds useful, not premature, abstractions. |
| System design and pragmatism | Jumps into code without clarifying the conditions. Over-architects (microservices for an MVP) or under-architects (a spaghetti monolith with 50k LOC). Struggles to weigh simplicity against scalability. | Clarifies the need before coding. Pragmatic in the trade-off: no premature architecture for an uncertain future, but identifies zones where a little structure pays off. Can pivot when the initial hypothesis does not hold. | Designs systems that age well: well-chosen abstractions, minimal dependencies, clear functional boundaries. Recognizes their own zones of uncertainty and proposes targeted POCs. Trains the team in systemic thinking. |
| Code quality and hygiene | No clear test strategy; adds tests to produce coverage. Poorly structured code (500-line components, copy-paste, magic numbers). Superficial reviews. | A test pyramid fitting the business-critical zones. Readable code with clear naming and short functions. Structured reviews with actionable feedback. Refactors in passing where it makes sense. | A reference on the team for quality: documented conventions, automation of checks (linter, type checker, CI). Educational reviews that grow junior profiles. Can say no to code that passes the tests but ages badly. |
| Autonomy and resourcefulness | Blocks for hours on an unfamiliar topic without asking for help, or asks at the first obstacle. No structured debugging strategy. | Can diagnose independently on familiar topics; asks for help after investigating first (a summary of the problem, hypotheses, what has already been tried). | High resourcefulness on unfamiliar topics: reads the source of dependencies, instruments the runtime, isolates root causes. Documents the findings for the team. |
| Communication and teamwork | Explains their own work poorly to non-technical people. Defensive in reviews. Works in a silo, shares little context. Systematic opposition to PMs or designers. | Can explain their work to PM or management in clear language. Takes reviews constructively. Shares context in team reviews and 1:1s. | A bridge between tech and other functions. Facilitates technical debriefs, makes trade-offs understandable, negotiates timelines transparently. A reference on the team for cross-functional communication. |
30 / 60 / 90 day success plan
By day 30
- Local development environment fully set up and deployment of a (even trivial) PR to production validated
- Read and understood the code of the 3 most business-critical modules of the stack
- First documented 1:1 with the tech lead on conventions, identified debt and priorities
- First substantial PR (bug fix or small feature) reviewed and merged
By day 60
- Delivered a complete feature end to end (frontend, backend, deployment) independently
- First PR review of a colleague with structured feedback, not just an approve click
- First on-call or standby phase (if applicable) handling at least one incident
- Wrote or updated documentation of a recently worked module
By day 90
- Regular delivery (1-2 PRs per week) with quality confirmed in review
- First technical decision made independently on an ambiguous topic (refactor, library choice, design)
- Informal mentoring of a junior or new profile (pair programming, educational reviews)
- Formal review with the tech lead: ramp validated, development plan on 1-2 focus areas