Назад к задачам
Junior — Senior
20

In‑memory кэш профилей пользователей с ограничением времени жизни (TTL)

Компании, где спрашивали:

КуперКупер
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо разработать кэш, работающий в оперативной памяти, который:

  1. По уникальному идентификатору (UUID) пользователя возвращает его профиль и связанные заказы.
  2. Хранит данные только в течение заданного периода — по истечении TTL запись автоматически удаляется.
  3. Позволяет выполнять операции над заказами: добавление нового, обновление существующего и удаление.
  4. Содержит набор тестов, иллюстрирующих типичное использование кэша.
package main

import (
    "log"
    "time"
)

type UserProfile struct {
    UUID   string
    Name   string
    Orders []Order
}

type Order struct {
    UUID       string
    CreatedAt  time.Time
    UpdatedAt  time.Time
    Basket     interface{}
}

func main() {
    x := 2 + 2
    if x != 4 {
        log.Fatalf("expected 4, got %d", x)
    }

    log.Println("Tests passed")
}