Web DeveloperInterview Answers
Common Interview Questions
My primary stack is [React or Next.js for frontend, Node.js/Express or Python for backend, PostgreSQL for relational data, and deployed on AWS/Vercel]. I chose it based on ecosystem maturity, job market demand, and personal projects where I could validate my skills. I'm also comfortable with [Vue, Angular, Django — add any secondary experience]. I approach technology choices pragmatically: the right tool for the project requirements, team skills, and long-term maintenance needs — not the most popular framework on HackerNews.
I target Core Web Vitals as the primary performance metric: LCP (largest contentful paint) under 2.5s, INP under 200ms, CLS near zero. I optimise images (WebP/AVIF format, correct sizing, lazy loading), minimise JavaScript bundle size (code splitting, tree shaking), leverage browser caching, use a CDN for static assets, and eliminate render-blocking resources. I measure performance using Lighthouse and PageSpeed Insights before and after optimisation. Performance is a feature — fast sites rank better, convert better, and retain users better.
I follow OWASP Top 10 as a security baseline: input validation to prevent XSS and injection attacks, HTTPS everywhere, secure authentication (strong hashing for passwords, CSRF tokens, rate limiting), proper CORS configuration, and dependency management (regularly auditing with npm audit or Snyk). I never store sensitive data unnecessarily and encrypt what I do store. I treat security as an ongoing practice, not a project phase — automated security checks in CI catch regressions before they reach production.
I design mobile-first: starting with the smallest viewport and progressively enhancing for larger screens. I use CSS Grid and Flexbox for flexible layouts, relative units (rem, %, clamp()) for scalability, and media queries for breakpoint-specific adjustments. I test on real devices alongside Chrome DevTools emulation — emulation is useful but not a substitute. I also consider touch interactions (tap target size minimum 44px, appropriate hover state handling) and font legibility across screen sizes. Responsive design is about a great experience on any device, not just fitting the screen.
I've worked with WordPress (custom theme development, plugin development, REST API), Contentful, Sanity, and Strapi as headless CMS options. I choose a CMS based on the client's content management capability, performance requirements, and the complexity of the content model. For marketing sites where non-technical editors need control, a headless CMS paired with a static site generator or Next.js offers excellent performance and editorial flexibility. I always design the content model to match editorial workflows, not just technical convenience.
I use project management tools (Linear, Trello, Notion) to track all tasks with clear ownership and deadlines. I establish a clear scope of work and change request process at the start — scope creep is the primary cause of over-budget and late projects. I communicate proactively: weekly progress updates, early flags for blockers, and staged deliveries (mockups, staging site, final) that allow feedback before the final product. I stage my deployments — dev, staging, production — so nothing untested reaches the live site.
Git is fundamental to everything I do. I use feature branches, descriptive commit messages, and pull requests for all changes — even solo projects, because it builds good habits. In team environments, I follow conventional commits, link PRs to issues/tickets, and give thorough code reviews. I'm comfortable with Git rebase and merge strategies. I also participate in code review culture: reviewing others' code is one of the best ways to learn and one of the highest-value contributions a developer can make to a team.
I use Can I Use to check feature support before implementing and decide on polyfills or alternative approaches for critical features not universally supported. I set a browser support policy with the client at the start of a project — supporting IE11 has real cost implications. I test in Chrome, Firefox, Safari, and Edge as a minimum. I use autoprefixer for CSS vendor prefixes and Babel for JavaScript transpilation where needed. I also design progressive enhancement: the core experience works everywhere; enhanced features add value where supported.
Ready to create your own?
Upload your CV and a job description to generate a tailored version in under 60 seconds.
Would you like suggested answers to expected questions for a job you've applied for?
Load your submitted CV and / or the job description