Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+717новых вакансий за сутки·60 871вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 951
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 391 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python9 224
  • Облачные технологии4 076
  • QA вакансии1 588
  • Android1 322
  • Инженер данных805
  • Продакт-менеджер368

Разработка

  • Backend вакансии1 317
  • iOS1 239
  • AI вакансии608
  • Fullstack вакансии523
  • Frontend вакансии456
  • Mobile вакансии28

По стеку

  • Go5 445
  • Java3 175
  • Kotlin1 119
  • Node.js1 026
  • Rust949
  • .NET666
  • PHP311
  • C#210
  • C++204

DevOps и инфраструктура

  • DevOps вакансии2 713
  • Kubernetes2 308
  • Linux-инфраструктура1 890
  • Terraform / IaC1 406
  • CI/CD842
  • Мониторинг и Observability645
  • SRE226
  • Кибербезопасность84

Аналитика и данные

  • Аналитик данных483
  • Data Scientist469
  • Бизнес-аналитик349
  • Системный аналитик48

Другие направления

  • Проджект-менеджер139
  • UI/UX дизайн71
  • Ручное тестирование14

По регионам

  • Вакансии в США24 791
  • Вакансии в Европе9 439
  • Работа в России2 924
  • Вакансии в Канаде2 178

По формату

  • Удалённые вакансии43 505
  • Релокация в США24 791
  • Гибридная работа3 370
  • Офисная работа2 525

По уровню

  • Senior вакансии20 898
  • Middle вакансии12 438
  • Junior вакансии3 864

Сейчас нанимают

Все компании
  • Wise191 вакансия
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме NestJSВсе вопросы
NestJSMiddleТеория

Как реализовать кэширование в NestJS?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

NestJS предоставляет CacheModule из @nestjs/cache-manager. Подключите его глобально, используйте декоратор @CacheKey/@CacheTTL на контроллерах или вызывайте CACHE_MANAGER напрямую через inject.

Установка и регистрация

// app.module.ts
import { CacheModule } from '@nestjs/cache-manager';
import { redisStore } from 'cache-manager-redis-store';

@Module({
  imports: [
    CacheModule.registerAsync({
      isGlobal: true,
      useFactory: async () => ({
        store: await redisStore({
          socket: { host: 'localhost', port: 6379 },
        }),
        ttl: 60, // секунд
      }),
    }),
  ],
})
export class AppModule {}

Кэширование в NestJS

NestJS интегрируется с библиотекой cache-manager через пакет @nestjs/cache-manager. Поддерживаются in-memory хранилище (по умолчанию) и Redis через @keyv/redis или cache-manager-redis-store.

Авто-кэш через CacheInterceptor

Декоратор @UseInterceptors(CacheInterceptor) или глобальная регистрация автоматически кэшируют ответы GET-маршрутов.

import { CacheInterceptor, CacheKey, CacheTTL } from '@nestjs/cache-manager';

@Controller('products')
@UseInterceptors(CacheInterceptor)
export class ProductsController {
  @Get()
  @CacheKey('all-products')
  @CacheTTL(120)
  findAll() {
    return this.productsService.findAll();
  }
}

Ручное управление кэшем

import { Inject } from '@nestjs/common';
import { Cache, CACHE_MANAGER } from '@nestjs/cache-manager';

@Injectable()
export class ProductsService {
  constructor(@Inject(CACHE_MANAGER) private cache: Cache) {}

  async getProduct(id: string) {
    const key = `product:${id}`;
    const cached = await this.cache.get<Product>(key);
    if (cached) return cached;

    const product = await this.repo.findById(id);
    await this.cache.set(key, product, 300);
    return product;
  }

  async invalidate(id: string) {
    await this.cache.del(`product:${id}`);
  }
}

Глобальная регистрация интерсептора

// app.module.ts providers
{
  provide: APP_INTERCEPTOR,
  useClass: CacheInterceptor,
}

Подводные камни

  • CacheInterceptor кэширует только GET-запросы; POST/PUT игнорируются — не стоит ожидать кэша для мутаций.
  • Ключ по умолчанию = URL + query string; у разных пользователей с одинаковым URL кэш будет общим — добавляйте userId в ключ вручную.
  • isGlobal: true важно указывать, иначе каждый модуль создаёт свой изолированный кэш-экземпляр.
  • При обновлении @nestjs/cache-manager v2 токен инъекции изменился с CACHE_MANAGER из @nestjs/common на импорт из @nestjs/cache-manager — путаница ломает DI.
  • TTL задаётся в секундах в cache-manager v5, но в миллисекундах в старых версиях — всегда проверяйте документацию используемой версии.
  • Redis-соединение не восстанавливается автоматически при обрыве — настройте reconnectOnError и мониторинг.
  • Хранение объектов с методами (классов) в кэше теряет прототип после сериализации/десериализации — используйте plain objects или применяйте трансформацию при получении.
  • CacheInterceptor не работает с WebSocket и gRPC транспортами — только HTTP.

Частые вопросы на собеседовании

  • Что такое NestJS и каковы его основные принципы проектирования?
  • Какова роль модулей в NestJS? Как работает система модулей?
  • В каких backend-проектах NestJS является сильным выбором, а где лучше выбрать более простой или другой стек?
  • Что такое dependency injection (DI) в NestJS и как он реализован?

Типичные ошибки

  • Дает общий ответ про Node.js и не называет конкретные API NestJS.
  • Не объясняет, где в lifecycle находится кэширование в NestJS.
  • Не разделяет validation, authorization, business logic и persistence.
  • Игнорирует ошибки, лимиты входных данных, observability и тестирование.

Что проверяет интервьюер

  • Может объяснить кэширование в NestJS на примере кода.
  • Называет ключевые API: CacheModule, CacheInterceptor.
  • Использует точные API NestJS, а не вымышленные hooks/decorators/methods.
  • Видит production-риски: безопасность, отказоустойчивость, логирование и тесты.

Как вы знаете этот вопрос?

Проверить себя по теме NestJS →

Источники

  • https://docs.nestjs.com/techniques/caching

Связанные темы

NestJSperformance-tuningreliability

Вакансии с этим навыком

  • Fullstack JavaScript разработчик
  • Senior Backend Developer
  • Automation QA Engineer (Payments)