Czy w Twoim projekcie wdrożono praktyki DevOps, czy też istnieje zespół zajmujący się automatyzacją i integracją procesów rozwoju i eksploatacji?
Java
Jakie zmiany w podejściu lub rozwiązaniach wprowadziłbyś w ostatnim zrealizowanym projekcie, wiedząc to, co wiesz teraz?
Napisz testy dla systemu filtrowania powiadomień z użyciem JUnit 5 i Mockito, obejmujące główne scenariusze: wejście null/puste, powiadomienie ważne, blokada nadawcy, filtrowanie po kanale, deduplikacja.
Jak jest zorganizowany i rozłożony zespół w Twoim projekcie?
Jakie obecnie realizujesz projekty lub zadania?
Jaka jest złożoność czasowa operacji dodawania elementu do stosu?
Jak mikroserwis określa, jak skontaktować się z inną usługą w podejściu Direct Call?
Jak określana jest złożoność czasowa metody get w strukturze danych HashMap?
Czy mógłbyś wyjaśnić, czym jest sytuacja zakleszczenia wątków w systemie?
Jak można zoptymalizować implementację systemu filtrowania powiadomień?
/* Firma zapewnia usługę masowego wysyłania powiadomień do innych firm. Właściciel produktu zwrócił się z zadaniem stworzenia systemu filtrowania powiadomień z uwzględnieniem preferencji użytkowników. ## Definicje Powiadomienie: - id powiadomienia - typ powiadomienia (EMAIL, SMS, PUSH) - odbiorca (id użytkownika) - tekst wiadomości Odbiorca może mieć ustawienia preferencji: - dozwolone kanały powiadomień (lista typów) - zablokowani nadawcy (lista id nadawców) Historia wysłanych powiadomień: - lista powiadomień wysłanych do użytkownika ## Ważne Ustawienia użytkowników i historia powiadomień są dostarczane przez inne komponenty systemu. Musisz zaprojektować kontrakty do pobierania tych danych. Implementacja przechowywania nie jest wymagana. ## Zadanie Napisać system filtrowania powiadomień, który: - przyjmuje listę powiadomień do filtrowania i id nadawcy - wyklucza powiadomienia niezgodne z preferencjami użytkownika - implementuje ochronę przed duplikatami wiadomości, w tym uwzględniając wiadomości wysłane w ostatnich 24 godzinach. Duplikaty to wiadomości z tym samym id, skierowane do tego samego użytkownika - zwraca przefiltrowaną listę powiadomień gotowych do wysłania. Wysyłka powiadomień nie jest Twoim zadaniem - inny zespół zajmie się wysłaniem przefiltrowanej listy. Twoim zadaniem jest tylko filtrowanie. */ class NotificationFilter { UserSettingsService userSettingsService; NotificationHistoryService notificationHistoryService; public ??? filter(??? senderId, List<???> msgs) { // TODO implement } } interface UserSettingsService { // TODO any functions } interface NotificationHistoryService { // TODO any functions }