Next.js
Экспресс-шпаргалка 20/20
- App Router использует nested layouts, server components и file-based conventions нового поколения по сравнению с Pages Router.
- Server Components рендерятся на сервере и уменьшают JS в браузере; Client Components нужны для интерактивности и browser API.
- SSR - динамика/персонализация, SSG - статический контент, ISR - периодическое обновление pre-rendered страниц.
- Кэш в Next управляется на уровне fetch/route/page и контролируется revalidate/tag/path invalidation.
- Route Handlers - это серверные HTTP endpoints внутри app router, удобны для BFF сценариев.
- Hydration mismatch происходит, когда серверный HTML не совпадает с клиентским рендером.
- loading/error states реализуются через
loading.js,error.jsи Suspense boundaries. - Dynamic rendering нужен при request-time данных, static - когда данные стабильны и важна скорость/SEO.
generateMetadataформирует SEO-метаданные на сервере и должен учитывать data freshness.- Оптимизация media:
next/image,next/font, контроль размеров и preload критических ассетов. - Границы server/client нужно держать явными через
use clientи не импортировать server-only код в клиент. - Server Actions - серверные мутации рядом с UI, но требуют проверки прав и безопасной обработки ошибок.
- Авторизацию в Next обычно строят через middleware + server-side проверки + secure cookies.
- TTFB/LCP улучшают через кэш, streaming, уменьшение blocking fetch и оптимизацию critical path.
- BFF в Next подходит для умеренной сложности; при росте домена лучше выделенный backend.
- Edge/runtime дает меньшую latency ближе к пользователю, но имеет ограничения по API окружения.
- Глобальный state без boundaries усложняет hydration и увеличивает стоимость ререндеров.
- Инвалидация кэша после мутаций делается через revalidatePath/revalidateTag и явные правила freshness.
- i18n в Next проектируют через локализованные маршруты, словари и корректные SEO alternate links.
- Частые anti-patterns: смешивание server/client, отсутствие cache strategy и переизбыток client components.
1. Что изменилось в App Router по сравнению с Pages Router?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
App Router использует nested layouts, server components и file-based conventions нового поколения по сравнению с Pages Router.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Проверяю целевой сценарий под slow network/CPU throttling и подтверждаю улучшение цифрами, а не ощущением.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Что изменилось в App Router по сравнению с Pages Router?" с одним production-сценарием и объясните, почему она влияет на результат.
- Сравните поведение на быстром и медленном устройстве/сети.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Как будете валидировать эффект на медленных устройствах?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
SSR/CSR/SSG/ISR(если применимо). - Профилирование рендера до/после изменения.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
2. Разница между Server Components и Client Components?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
Server Components рендерятся на сервере и уменьшают JS в браузере; Client Components нужны для интерактивности и browser API.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Снимаю baseline в профайлере/DevTools, применяю изменение и подтверждаю эффект по LCP/INP/CPU time.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Разница между Server Components и Client Components?" с одним production-сценарием и объясните, почему она влияет на результат.
- Опишите влияние темы на user-centric метрики (
LCP,INP,CLS) и perceived performance. - Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не проверяют сценарий на медленных устройствах и сетях.
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Как будете валидировать эффект на медленных устройствах?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Профилирование рендера до/после изменения.
- Критический путь рендера и метрики
LCP/INP/CLS. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
3. Как выбирать между SSR, SSG и ISR в Next.js?
Теги: nextjs, react, rendering
Сложность: Middle/Senior
Короткий ответ
SSR - динамика/персонализация, SSG - статический контент, ISR - периодическое обновление pre-rendered страниц.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Сравниваю flamegraph и пользовательские метрики до/после, затем фиксирую guard-тест от регрессии.
Мини-пример
export const revalidate = 60;
export default async function Page() {
const res = await fetch('https://api.example.com/data', { next: { revalidate: 60 } });
return <pre>{JSON.stringify(await res.json(), null, 2)}</pre>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как выбирать между SSR, SSG и ISR в Next.js?" с одним production-сценарием и объясните, почему она влияет на результат.
- Опишите влияние темы на user-centric метрики (
LCP,INP,CLS) и perceived performance. - Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как будете валидировать эффект на медленных устройствах?
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Критический путь рендера и метрики
LCP/INP/CLS. - Границы
SSR/CSR/SSG/ISR(если применимо). - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
4. Как устроен кэш данных в Next.js и revalidation?
Теги: nextjs, react, cache
Сложность: Middle/Senior
Короткий ответ
Кэш в Next управляется на уровне fetch/route/page и контролируется revalidate/tag/path invalidation.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Без стратегии инвалидации кэш становится источником stale-данных и трудноуловимых багов.
- Как проверяете решение: Снимаю baseline в профайлере/DevTools, применяю изменение и подтверждаю эффект по LCP/INP/CPU time.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как устроен кэш данных в Next.js и revalidation?" с одним production-сценарием и объясните, почему она влияет на результат.
- Сравните поведение на быстром и медленном устройстве/сети.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
SSR/CSR/SSG/ISR(если применимо). - Профилирование рендера до/после изменения.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
5. Что такое Route Handlers и когда их использовать?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
Route Handlers - это серверные HTTP endpoints внутри app router, удобны для BFF сценариев.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Сравниваю flamegraph и пользовательские метрики до/после, затем фиксирую guard-тест от регрессии.
Мини-пример
// app/api/users/route.ts
export async function GET() {
return Response.json({ users: [] });
}
Углубление (2-3 минуты)
- Свяжите тему "Что такое Route Handlers и когда их использовать?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, как изменение влияет на рендер и стоимость JavaScript.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Не проверяют сценарий на медленных устройствах и сетях.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как будете валидировать эффект на медленных устройствах?
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Профилирование рендера до/после изменения.
- Критический путь рендера и метрики
LCP/INP/CLS. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
6. Как избежать hydration mismatch в Next.js?
Теги: nextjs, react, rendering
Сложность: Middle/Senior
Короткий ответ
Hydration mismatch происходит, когда серверный HTML не совпадает с клиентским рендером.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Недетерминированный initial render вызывает mismatch и деградацию UX.
- Как проверяете решение: Проверяю целевой сценарий под slow network/CPU throttling и подтверждаю улучшение цифрами, а не ощущением.
Мини-пример
'use client';
import { useEffect, useState } from 'react';
export default function Clock() {
const [now, setNow] = useState('');
useEffect(() => setNow(new Date().toISOString()), []);
return <span>{now}</span>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как избежать hydration mismatch в Next.js?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, как изменение влияет на рендер и стоимость JavaScript.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Не проверяют сценарий на медленных устройствах и сетях.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
SSR/CSR/SSG/ISR(если применимо). - Профилирование рендера до/после изменения.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
7. Как организовать loading/error states в App Router?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
loading/error states реализуются через loading.js, error.js и Suspense boundaries.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Снимаю baseline в профайлере/DevTools, применяю изменение и подтверждаю эффект по LCP/INP/CPU time.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как организовать loading/error states в App Router?" с одним production-сценарием и объясните, почему она влияет на результат.
- Опишите влияние темы на user-centric метрики (
LCP,INP,CLS) и perceived performance. - Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не проверяют сценарий на медленных устройствах и сетях.
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как будете валидировать эффект на медленных устройствах?
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Профилирование рендера до/после изменения.
- Границы
SSR/CSR/SSG/ISR(если применимо). - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
8. Когда нужен dynamic rendering, а когда static?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
Dynamic rendering нужен при request-time данных, static - когда данные стабильны и важна скорость/SEO.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Снимаю baseline в профайлере/DevTools, применяю изменение и подтверждаю эффект по LCP/INP/CPU time.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Когда нужен dynamic rendering, а когда static?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, как изменение влияет на рендер и стоимость JavaScript.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Как будете валидировать эффект на медленных устройствах?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Профилирование рендера до/после изменения.
- Критический путь рендера и метрики
LCP/INP/CLS. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
9. Как работает generateMetadata и зачем он важен?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
generateMetadata формирует SEO-метаданные на сервере и должен учитывать data freshness.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Снимаю baseline в профайлере/DevTools, применяю изменение и подтверждаю эффект по LCP/INP/CPU time.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как работает
generateMetadataи зачем он важен?" с одним production-сценарием и объясните, почему она влияет на результат. - Покажите, как изменение влияет на рендер и стоимость JavaScript.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не проверяют сценарий на медленных устройствах и сетях.
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как будете валидировать эффект на медленных устройствах?
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Критический путь рендера и метрики
LCP/INP/CLS. - Границы
SSR/CSR/SSG/ISR(если применимо). - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
10. Как в Next.js оптимизировать изображения и шрифты?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
Оптимизация media: next/image, next/font, контроль размеров и preload критических ассетов.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Снимаю baseline в профайлере/DevTools, применяю изменение и подтверждаю эффект по LCP/INP/CPU time.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как в Next.js оптимизировать изображения и шрифты?" с одним production-сценарием и объясните, почему она влияет на результат.
- Опишите влияние темы на user-centric метрики (
LCP,INP,CLS) и perceived performance. - Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Не проверяют сценарий на медленных устройствах и сетях.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Как будете валидировать эффект на медленных устройствах?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Критический путь рендера и метрики
LCP/INP/CLS. - Профилирование рендера до/после изменения.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
11. Как разделять server/client логику без дублирования?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
Границы server/client нужно держать явными через use client и не импортировать server-only код в клиент.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Сравниваю flamegraph и пользовательские метрики до/после, затем фиксирую guard-тест от регрессии.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как разделять server/client логику без дублирования?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, как изменение влияет на рендер и стоимость JavaScript.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Не проверяют сценарий на медленных устройствах и сетях.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
SSR/CSR/SSG/ISR(если применимо). - Профилирование рендера до/после изменения.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
12. Что такое Server Actions и где их границы?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
Server Actions - серверные мутации рядом с UI, но требуют проверки прав и безопасной обработки ошибок.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Сравниваю flamegraph и пользовательские метрики до/после, затем фиксирую guard-тест от регрессии.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Что такое Server Actions и где их границы?" с одним production-сценарием и объясните, почему она влияет на результат.
- Опишите влияние темы на user-centric метрики (
LCP,INP,CLS) и perceived performance. - Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как будете валидировать эффект на медленных устройствах?
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Профилирование рендера до/после изменения.
- Границы
SSR/CSR/SSG/ISR(если применимо). - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
13. Как проектировать авторизацию в Next.js приложении?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
Авторизацию в Next обычно строят через middleware + server-side проверки + secure cookies.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Снимаю baseline в профайлере/DevTools, применяю изменение и подтверждаю эффект по LCP/INP/CPU time.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как проектировать авторизацию в Next.js приложении?" с одним production-сценарием и объясните, почему она влияет на результат.
- Опишите влияние темы на user-centric метрики (
LCP,INP,CLS) и perceived performance. - Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
SSR/CSR/SSG/ISR(если применимо). - Профилирование рендера до/после изменения.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
14. Как оптимизировать TTFB и LCP в Next-проекте?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
TTFB/LCP улучшают через кэш, streaming, уменьшение blocking fetch и оптимизацию critical path.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Снимаю baseline в профайлере/DevTools, применяю изменение и подтверждаю эффект по LCP/INP/CPU time.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как оптимизировать TTFB и LCP в Next-проекте?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, как изменение влияет на рендер и стоимость JavaScript.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не проверяют сценарий на медленных устройствах и сетях.
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Профилирование рендера до/после изменения.
- Границы
SSR/CSR/SSG/ISR(если применимо). - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
15. Как организовать API слой в Next: BFF или внешний backend?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
BFF в Next подходит для умеренной сложности; при росте домена лучше выделенный backend.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Проверяю целевой сценарий под slow network/CPU throttling и подтверждаю улучшение цифрами, а не ощущением.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как организовать API слой в Next: BFF или внешний backend?" с одним production-сценарием и объясните, почему она влияет на результат.
- Опишите влияние темы на user-centric метрики (
LCP,INP,CLS) и perceived performance. - Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
SSR/CSR/SSG/ISR(если применимо). - Критический путь рендера и метрики
LCP/INP/CLS. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
16. Как деплоить Next.js на edge/runtime и что учитывать?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
Edge/runtime дает меньшую latency ближе к пользователю, но имеет ограничения по API окружения.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Проверяю целевой сценарий под slow network/CPU throttling и подтверждаю улучшение цифрами, а не ощущением.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как деплоить Next.js на edge/runtime и что учитывать?" с одним production-сценарием и объясните, почему она влияет на результат.
- Сравните поведение на быстром и медленном устройстве/сети.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как будете валидировать эффект на медленных устройствах?
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Критический путь рендера и метрики
LCP/INP/CLS. - Профилирование рендера до/после изменения.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
17. Какие риски у глобального state в Next-приложении?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
Глобальный state без boundaries усложняет hydration и увеличивает стоимость ререндеров.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Проверяю целевой сценарий под slow network/CPU throttling и подтверждаю улучшение цифрами, а не ощущением.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Какие риски у глобального state в Next-приложении?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, как изменение влияет на рендер и стоимость JavaScript.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Не проверяют сценарий на медленных устройствах и сетях.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Как будете валидировать эффект на медленных устройствах?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Критический путь рендера и метрики
LCP/INP/CLS. - Профилирование рендера до/после изменения.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
18. Как строить кэш-инвалидацию после мутаций данных?
Теги: nextjs, react, cache
Сложность: Middle/Senior
Короткий ответ
Инвалидация кэша после мутаций делается через revalidatePath/revalidateTag и явные правила freshness.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Без стратегии инвалидации кэш становится источником stale-данных и трудноуловимых багов.
- Как проверяете решение: Сравниваю flamegraph и пользовательские метрики до/после, затем фиксирую guard-тест от регрессии.
Мини-пример
export class CreateUserDto {
@IsEmail()
email!: string;
}
Углубление (2-3 минуты)
- Свяжите тему "Как строить кэш-инвалидацию после мутаций данных?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, как изменение влияет на рендер и стоимость JavaScript.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
SSR/CSR/SSG/ISR(если применимо). - Критический путь рендера и метрики
LCP/INP/CLS. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
19. Как строить мультиязычность и роутинг i18n в Next?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
i18n в Next проектируют через локализованные маршруты, словари и корректные SEO alternate links.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Сравниваю flamegraph и пользовательские метрики до/после, затем фиксирую guard-тест от регрессии.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Как строить мультиязычность и роутинг i18n в Next?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, как изменение влияет на рендер и стоимость JavaScript.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не проверяют сценарий на медленных устройствах и сетях.
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как будете валидировать эффект на медленных устройствах?
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Критический путь рендера и метрики
LCP/INP/CLS. - Границы
SSR/CSR/SSG/ISR(если применимо). - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
20. Какие anti-patterns чаще всего встречаются в Next-коде?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
Частые anti-patterns: смешивание server/client, отсутствие cache strategy и переизбыток client components.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Сравниваю flamegraph и пользовательские метрики до/после, затем фиксирую guard-тест от регрессии.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Куда дальше
- Вернитесь в модуль: Next.js.
- Сверьтесь с картой темы: Next.js.
- Продолжайте по маршруту: Middle трек.
- Закрепите один ответ на практике в Песочнице.
Углубление (2-3 минуты)
- Свяжите тему "Какие anti-patterns чаще всего встречаются в Next-коде?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, как изменение влияет на рендер и стоимость JavaScript.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Оптимизируют без baseline-метрик и не понимают реальный эффект.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Как будете валидировать эффект на медленных устройствах?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Критический путь рендера и метрики
LCP/INP/CLS. - Профилирование рендера до/после изменения.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.