Váš projekt implementuje praktiky DevOps nebo máte tým, který se zabývá automatizací a integrací procesů vývoje a provozu?
Java
Jaké změny v přístupu nebo řešeních byste provedli v posledním dokončeném projektu, když víte to, co víte nyní?
Napište testy pro systém filtrování oznámení s použitím JUnit 5 a Mockito, pokrývající hlavní scénáře: null/prázdný vstup, platné oznámení, blokování odesílatele, filtrování podle kanálu, deduplikace.
Jak je tým ve vašem projektu strukturován a rozdělen?
Jaká je časová složitost operace přidání prvku do zásobníku?
Jaké aktuální projekty nebo úkoly realizujete v poslední době?
Jak určuje mikroservis, jak se spojit s jinou službou v přístupu Přímé volání?
Jak je určena časová složitost metody get ve struktuře dat HashMap?
Můžete vysvětlit, co je to situace vzájemného zablokování vláken v systému?
Jak optimalizovat implementaci systému filtrování oznámení?
/* Společnost poskytuje službu hromadného rozesílání oznámení pro jiné podniky. Vlastník produktu se obrátil s úkolem vytvořit systém filtrování oznámení s ohledem na preference uživatelů. ## Definice Oznámení: - ID oznámení - typ oznámení (EMAIL, SMS, PUSH) - příjemce (ID uživatele) - text zprávy Příjemce může mít nastavení preferencí: - povolené kanály oznámení (seznam typů) - blokovaní odesílatelé (seznam ID odesílatelů) Historie odeslaných oznámení: - seznam oznámení odeslaných uživateli ## Důležité Nastavení uživatelů a historie odeslaných oznámení jsou poskytovány jinými komponenty systému. Je třeba navrhnout smlouvy pro získání těchto dat. Uložení není třeba implementovat. ## Úkol Napsat systém filtrování oznámení, který: - přijímá seznam oznámení k filtrování a ID odesílatele - vylučuje oznámení, která neodpovídají preferencím uživatele - implementuje ochranu proti duplicitám zpráv, včetně těch odeslaných za posledních 24 hodin. Duplicitami jsou zprávy se stejným ID, adresované stejnému uživateli - vrací filtrovaný seznam oznámení připravených k odeslání. Odeslání oznámení není vaší úlohou; jiný tým se postará o odeslání filtrovaného seznamu. Vaším úkolem je pouze filtrování. */ class NotificationFilter { UserSettingsService userSettingsService; NotificationHistoryService notificationHistoryService; public ??? filter(??? senderId, List<???> msgs) { // TODO implement } } interface UserSettingsService { // TODO any functions } interface NotificationHistoryService { // TODO any functions }