Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что такое холодный, теплый и горячий кеш в оптимизации V8?
В V8 кеширование кода делится на три типа: холодный кеш, теплый кеш и горячий кеш. Холодный кеш относится к коду, который не исполнялся ранее и не имеет никаких оптимизаций. Теплый кеш содержит код, который исполнялся несколько раз, и движок может начать его оптимизировать. Горячий кеш включает часто исполняемый код, который уже оптимизирован и работает быстрее, что значительно улучшает производительность приложения.
Как работает inline-кеширование (inline caching) и почему оно важно для производительности?
Inline-кеширование — это техника, используемая JavaScript-движками для ускорения доступа к свойствам объектов. При первом обращении к свойству объектного типа кешируется информация о его местоположении, что позволяет при последующих обращениях избежать повторного поиска. Это значительно ускоряет доступ к свойствам объектов, особенно в циклах или часто вызываемых функциях.
Какие проблемы могут возникнуть при использовании глобальной переменной-кеширования, и как их избежать?
Глобальный кеш приводит к гонкам, неконтролируемому росту памяти и затрудняет тестирование.
Без синхронизации он небезопасен. Лучше использовать структуру с mutex или внешний Redis.
Объясните, как реализовать кеширование.
NestJS предоставляет CacheModule для реализации кеширования. Оно поддерживает разные хранилища (например, in-memory или Redis). Кеширование может быть настроено для хранения результатов методов или HTTP-ответов с использованием декораторов или перехватчиков.
Как кеширование влияет на производительность системы?
Кеширование снижает нагрузку на базу данных и ускоряет ответы системы. Оно позволяет получать данные быстрее, чем при прямом обращении к источнику. При этом кеширование усложняет архитектуру и требует контроля актуальности данных. Эффект от кеша напрямую зависит от правильности его применения.
Что такое инвалидация кеша?
Как реализовать кеширование часто используемых данных?
Какие подходы используются для реализации кеширования и какие инструменты при этом применяются?
Как используется кеширование, например, с Redis, для оптимизации?
Как организовать согласованный сброс кешей между несколькими датацентрами (multi-DC cache invalidation)?
Рейтинг:
4
Сложность:
6
Инвалидация кеша — это процесс удаления или обновления устаревших данных в кеше. Она нужна, чтобы данные в кеше не расходились с источником истины. Неправильная инвалидация приводит к ошибкам и некорректным данным. Это одна из самых сложных задач в кешировании.
Рейтинг:
5
Сложность:
6
Обычно кеширование делают так: данные сначала ищут в кеше, а если там нет — берут из источника (БД/API) и кладут в кеш с TTL. Ключи кеша делают стабильными и понятными (например, user:123:profile:v1). Важно заранее продумать, как кеш будет обновляться: через TTL, явную инвалидацию при изменениях или их комбинацию. Ещё нужно учитывать проблемы вроде “толпы” запросов при истечении TTL и “устаревших” данных.
Рейтинг:
5
Сложность:
6
Кеширование — это сохранение уже вычисленных или полученных данных, чтобы не обращаться каждый раз к “дорогому” источнику (БД, внешнему API, тяжёлым расчётам).
Используются разные подходы: кеширование в памяти приложения, кеширование в Redis/Memcached, HTTP-кеширование, кеширование на уровне БД и CDN для статики.
Инструменты: Redis, Memcached, встроенные фреймворковые кеши (Django cache, Flask-caching), reverse-proxy (Nginx), CDN.
Кеширование ускоряет приложение и снижает нагрузку на базу и внешние сервисы, но требует аккуратной стратегии инвалидции (“invalidation”).
Рейтинг:
5
Сложность:
6
Redis используется как кеш-слой между приложением и основной базой данных для хранения часто запрашиваемых данных в оперативной памяти. Это позволяет значительно ускорить чтение данных и снизить нагрузку на основную БД. Redis хранит данные в формате ключ-значение с поддержкой различных структур данных. Кеширование особенно эффективно для редко изменяющихся данных, результатов сложных вычислений и сессий пользователей.
Рейтинг:
3
Сложность:
9
Используют глобальные каналы коммуникации (Kafka/Redis Stream), версионирование ключей, lease-based caching или CRDT. Цель — обеспечить одно и то же состояние кеша во всех датацентрах.
Рейтинг:
3
Сложность:
8
Рейтинг:
2
Сложность:
7
Рейтинг:
3
Сложность:
7
Рейтинг:
2
Сложность:
6
Рейтинг:
5
Сложность:
5