Опишите како сте сарађивали са тимом у вашем последњем пројекту.
Java
Kako je tim strukturiran i raspoređen u vašem projektu?
Napišite testove za sistem filtracije obaveštenja koristeći JUnit 5 i Mockito, pokrivajući osnovne scenarije: null/prazan unos, validno obaveštenje, blokiranje pošiljaoca, filtriranje po kanalu, deduplikacija.
Koje trenutne projekte ili zadatke realizujete u poslednje vreme?
Koja je vremenska složenost operacije dodavanja elementa u stek?
Kako se određuje vremenska složenost metode get u strukturi podataka HashMap?
Kako mikroservis određuje kako da komunicira sa drugim servisom u pristupu Direktni Poziv?
Koje promene u pristupu ili rešenjima biste uneli u poslednji projekat, znajući sada ono što znate?
Можете ли објаснити шта је ситуација међусобног заклезања нитева у систему?
Kako optimizovati implementaciju sistema filtriranja obaveštenja?
/* Kompanija pruža uslugu masovnog slanja obaveštenja za druge biznise. Vlasnik proizvoda je zatražio kreiranje sistema za filtriranje obaveštenja uzimajući u obzir preferencije korisnika. ## Definicije Obaveštenje: - ID obaveštenja - tip obaveštenja (EMAIL, SMS, PUSH) - primalac (ID korisnika) - tekst poruke Primalac može imati podešavanja preferencija: - dozvoljeni kanali obaveštenja (lista tipova) - blokirani pošiljaoci (lista ID pošiljaoca) Istorija poslatih obaveštenja: - lista obaveštenja poslatih korisniku ## Važno Podešavanja korisnika i istorija poslatih obaveštenja se obezbeđuju od strane drugih komponenti sistema. Morate dizajnirati ugovore za dobijanje ovih podataka. Implementacija skladištenja nije potrebna. ## Zadatak Napisati sistem za filtriranje obaveštenja koji: - prima listu obaveštenja za filtriranje i ID pošiljaoca - isključuje obaveštenja koja ne odgovaraju korisničkim preferencama - implementira zaštitu od duplikata poruka, uključujući i one poslate u poslednjih 24 sata. Duplicati se smatraju porukama sa istim ID-jem, upućenim istom korisniku - vraća filtriranu listu obaveštenja spremnu za slanje. Slanje obaveštenja nije deo vašeg zadatka; drugi tim će se pobrinuti za slanje filtrirane liste. Vaš zadatak je samo filtriranje. */ class NotificationFilter { UserSettingsService userSettingsService; NotificationHistoryService notificationHistoryService; public ??? filter(??? senderId, List<???> msgs) { // TODO implement } } interface UserSettingsService { // TODO any functions } interface NotificationHistoryService { // TODO any functions }