Java
/* 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 }
Da li imate iskustva u optimizaciji SQL upita? Da li znate analizirati plan upita?
Koja je svrha objektno-orijentisanog programiranja u razvoju softverskih sistema?
Koje odluke ste morali doneti u vezi sa zamenom ili implementacijom tehnološkog steka? Dajte primer.
Koja vrsta HTTP zahteva treba da se koristi za dobijanje podataka o klijentu putem API-ja po broju kartice?
Da li ste spremni za praktične razgovore i znate kako da odgovorite na tipična pitanja koja se javljaju u stvarnom sistemu zapošljavanja?
Koje su prednosti i mane korišćenja Prototype Scope u projektovanju sistema?
Kako organizovati izvršenje povlačenja transakcije ili operacije u distribuiranom sistemu koristeći mikroservise?
Koje su prednosti i mane korišćenja podele koda na funkcije?
Ispričaj o mentorstvu juniora — kako je to izgledalo?
U kojim slučajevima treba koristiti anotaciju @Service u razvoju aplikacije?
Zašto su istovremeno korišćena dva posrednika poruka — Kafka i RabbitMQ?
Koje vrste indeksa poznaješ u PostgreSQL? Pričaj o B-tree indeksu, kako je organizovan. Šta je GIN indeks?
Integer i = 300, j = 300; System.out.println(i == j);
Kako ste vršili promene u bazi podataka na produkciji? Da li ste koristili Liquibase?
Koja je razlika između map i flatMap u Stream API?
Koji nivo vidljivosti treba da bude naveden za kontroler da bi mogao da prati izvršenje zahteva?
Šta je REST i kako se razlikuje od običnog HTTP API-ja?
Šta može dovesti do pogoršanja brzine umetanja podataka u bazu podataka nakon kreiranja indeksa?
Kada je preporučljivo koristiti komandu install tokom rada sa sistemom?