Как данные появляются в Prometheus и Grafana?
Как защититься от мутации через геттер (возврат копии списка)?
/* Компания предоставляет сервис массовой рассылки уведомлений для других бизнесов. К вам обратился product owner с задачей создать систему фильтрации уведомлений с учетом предпочтений пользователей. ## Определения Уведомление: - id уведомления - тип уведомления (EMAIL, SMS, PUSH) - получатель (id пользователя) - текст сообщения Получатель может иметь настройки предпочтений: - разрешенные каналы уведомлений (список типов) - заблокированные отправители (список id отправителей) История отправленных уведомлений: - список уведомлений, отправленных пользователю ## Важно Настройки пользователей и история уведомлений предоставляются другими компонентами системы. Вам необходимо спроектировать контракты для получения этих данных. Реализацию хранения делать не нужно. ## Задача Написать систему фильтрации уведомлений, которая: - на вход получает список уведомлений для фильтрации и id отправителя - исключает уведомления, не соответствующие предпочтениям пользователя - реализует защиту от дубликатов сообщений, в том числе учитывая сообщения, отправленные за последние 24 часа. Дубликатами считаются сообщения с одинаковыми id, адресованные одному пользователю - возвращает отфильтрованный список уведомлений, готовых к отправке. Отправка уведомлений не входит в вашу задачу - другая команда займется отправкой отфильтрованного списка. Ваша задача - только фильтрация. */ class NotificationFilter { UserSettingsService userSettingsService; NotificationHistoryService notificationHistoryService; public ??? filter(??? senderId, List<???> msgs) { // TODO implement } } interface UserSettingsService { // TODO any functions } interface NotificationHistoryService { // TODO any functions }
Что является основной причиной некорректного поведения кода при использовании неизменяемой карты Поля без «только для чтения» могут изменяться HashMap не сохраняет порядок элементов Излишнее использование обёрток вызывает путаницу Карта «Неизменяемая» отображает изменения исходной карты Неправильное использование объекта приводит к ошибке
Знаешь ли ты про retry-политики в Kafka и как они работают?
Каковы причины OutOfMemoryError и как найти утечку памяти?
Когда пробрасываешь исключения, что используешь, чтобы не потерять stack trace?
Чем LEFT JOIN отличается от INNER JOIN?
Почему согласился пообщаться, если скорее в пассивном поиске?
Чем отличаются Stream API от циклов? Что быстрее и почему?
Обладает ли топик Kafka свойством FIFO (First In, First Out)?
Почему готовые отчёты хранятся в MongoDB, а не в S3/объектном хранилище?
Что такое Effectively Final в Java и где используется?
Что такое GC Roots?
Насколько критична отсутствие аккредитации у компании?
На какой уровень дохода ориентируешься?
Бывают ли ситуации, когда Kafka Producer ждет Consumer'а?
Какой контракт между equals() и hashCode()?
Что такое Keycloak? Расскажи, с чем сталкивался.
Каким образом несколько инстансов ACL-сервиса принимают сообщения из Kafka?