Performance Interview Talking Points
Frontend performance interview map — Core Web Vitals, measurement, common fixes, and how to answer without cargo-cult tips.
- interview
- performance-interview
Performance interviews punish checklist recitation (“I would use CDN and memo”). They reward measure → hypothesize → fix → verify and fluency with Core Web Vitals.
Hub: Core Web Vitals · mindset: Measuring performance.
What interviewers score
- Metrics literacy — LCP, INP, CLS (+ TTFB)
- Lab vs field — Lighthouse ≠ users
- Critical path thinking
- Prioritization — biggest win first
- Regression control — budgets, RUM
Core Web Vitals table
| Metric | What it captures | Interview fix directions | Learn |
|---|---|---|---|
| LCP | Loading: largest contentful paint | Image optimize, preload, server TTFB, less blocking CSS/JS | LCP tactics |
| INP | Interactivity across inputs | Break long tasks, fewer main-thread JS, defer non-critical | INP tactics |
| CLS | Visual stability | Size attributes, reserve space, font strategy | CLS tactics |
Also: TTFB · Lab vs field · Lighthouse interpretation.
Answer framework (use every time)
1. What user pain / metric?
2. How measured (RUM, trace, Lighthouse)?
3. Top 1–2 causes from evidence
4. Fix
5. How to prevent regression
Loading path talking points
| Topic | Can you… | Learn |
|---|---|---|
| Critical path | CSS blocking; JS parser cost | Critical rendering path |
| Code splitting | Route-level splits; avoid micro-splits | Code splitting strategies · React lazy |
| Bundle budget | Set CI fail thresholds | JS bundle budget · Budgets in CI |
| Images | formats, srcset, priority | Image optimization · Responsive images |
| Fonts | display strategy; subset | Font loading |
| Third parties | tag managers, chat widgets | Third-party script cost |
| Hints | preconnect, preload (sparingly) | Preconnect |
| Caching | hashed assets, SW caution | Caching fingerprinting |
Runtime / interactivity
| Topic | Can you… | Learn |
|---|---|---|
| Long tasks | yield, chunk, workers | Long tasks · scheduler.yield |
| Layout thrash | batch reads/writes | Avoid layout thrashing |
| Lists | virtualize large feeds | Virtual lists · React virtualization |
| React re-renders | profile before memo | React performance checklist · React.memo |
| Idle work | defer analytics | Idle scheduling |
Measurement toolkit
| Tool | When |
|---|---|
| Lighthouse / CI | Lab regressions |
| Performance panel | Main-thread traces |
| Network waterfall | Resource order/size |
| Web Vitals JS / RUM | Field p75 |
| React Profiler | Component cost |
RUM · Performance panel · PerformanceObserver.
Classic prompts & strong directions
| Prompt | Direction |
|---|---|
| “Page feels slow” | Which metric? Device? Cold/warm? Field data? |
| “Improve LCP” | Element identity → bytes → discovery time → TTFB |
| “Input lag” | Long tasks; handlers; rendering; INP breakdown |
| “Layout jump” | Fonts, ads, images without dimensions, late inject |
| “React app jank” | Profile commits; state location; lists; concurrent features carefully |
Footguns (say these)
- Optimizing average when p75 mobile is the product metric
- Memoizing everything — memoization tradeoffs
- Preloading half the site
- Blaming network while main thread is blocked 800ms
- Celebrating Lighthouse 100 with terrible RUM
Mini case (out loud)
“Field LCP p75 3.8s on product page. Lab: hero image 1.8MB PNG, no priority, discovered after 300ms of JS. Fix: AVIF/WebP, explicit size, fetchpriority=high, preload. Server TTFB already 200ms. Budget: image weight in CI. Re-check CrUX/RUM in a week.”
Related on this site
- Core Web Vitals
- Browser interview questions
- Network tab debugging
- Frontend performance roadmap
- React performance checklist
- Interview hub
Further reading
Performance talk is evidence-led. Metrics first, tips second.