Java
/* Compania oferă un serviciu de trimitere în masă a notificărilor pentru alte afaceri. Un proprietar de produs a solicitat crearea unui sistem de filtrare a notificărilor, ținând cont de preferințele utilizatorilor. ## Definiții Notificare: - id-ul notificării - tipul notificării (EMAIL, SMS, PUSH) - destinatarul (id-ul utilizatorului) - textul mesajului Destinatarul poate avea setări de preferințe: - canale de notificare permise (listă de tipuri) - expeditori blocați (listă de id-uri de expeditori) Istoria notificărilor trimise: - listă de notificări trimise utilizatorului ## Important Setările utilizatorilor și istoricul notificărilor sunt furnizate de alte componente ale sistemului. Trebuie să proiectați contracte pentru a obține aceste date. Implementarea stocării nu este necesară. ## Sarcină Scrieți un sistem de filtrare a notificărilor care: - primește o listă de notificări pentru filtrare și id-ul expeditorului - exclude notificările care nu corespund preferințelor utilizatorului - implementează protecție împotriva mesajelor duplicate, inclusiv cele trimise în ultimele 24 de ore. Duplicatele sunt considerate mesajele cu același id, adresate aceluiași utilizator - returnează lista filtrată de notificări gata pentru trimitere. Trimiterea notificărilor nu face parte din sarcina dvs.; un alt echipă se va ocupa de trimiterea listei filtrate. Sarcina dvs. este doar filtrarea. */ class NotificationFilter { UserSettingsService userSettingsService; NotificationHistoryService notificationHistoryService; public ??? filter(??? senderId, List<???> msgs) { // TODO implement } } interface UserSettingsService { // TODO any functions } interface NotificationHistoryService { // TODO any functions }
Ai experiență în optimizarea interogărilor SQL? știi să analizezi planul interogării?
Care este scopul programării orientate pe obiect în dezvoltarea sistemelor software?
Ce decizii a fost necesar să luați în legătură cu înlocuirea sau implementarea unui stack tehnologic? Oferiți un exemplu.
Ce tip de solicitare HTTP trebuie utilizat pentru a obține datele clientului după numărul cardului prin API?
Ești pregătit pentru interviuri practice și știi să răspunzi la întrebările tipice întâlnite într-un sistem real de angajare?
Care sunt avantajele și dezavantajele utilizării Scope-ului de tip prototip în proiectarea sistemelor?
Cum se organizează efectuarea unui rollback al unei tranzacții sau operații într-un sistem distribuit folosind microservicii?
Care sunt avantajele și dezavantajele împărțirii codului în funcții?
Vorbește despre mentoratul pentru juniori — cum a fost?
În ce cazuri trebuie utilizată adnotarea @Service în aplicația în curs de dezvoltare?
De ce au fost folosiți doi brokeri de mesaje — Kafka și RabbitMQ — în același timp?
Ce tipuri de indecși cunoști în PostgreSQL? Vorbește despre indexul B-tree, cum este structurat. Ce este un index GIN?
Integer i = 300, j = 300; System.out.println(i == j);
Cum ați realizat modificările bazei de date în producție? Ați folosit Liquibase?
Care este diferența dintre map și flatMap în API-ul Stream?
Ce nivel de vizibilitate trebuie specificat pentru controler pentru a putea urmări executarea solicitărilor?
Ce este REST și cum diferă de o API HTTP obișnuită?
Ce poate duce la scăderea vitezei de inserare a datelor în baza de date după crearea indexurilor?
Când este recomandat să folosiți comanda install în timpul lucrului cu sistemul?