Java
Vysvetlite princíp fungovania metódy dvojitého overenia v kontexte viacvláknového programovania.
/* Spoločnosť poskytuje službu masového odosielania oznámení pre iné podniky. Vlastník produktu sa obrátil s úlohou vytvoriť systém filtrovania oznámení s prihliadnutím na preferencie používateľov. ## Definície Oznámenie: - ID oznámenia - typ oznámenia (EMAIL, SMS, PUSH) - príjemca (ID používateľa) - text správy Príjemca môže mať nastavenia preferencií: - povolené kanály oznámení (zoznam typov) - blokovaní odosielatelia (zoznam ID odosielateľov) História odoslaných oznámení: - zoznam oznámení odoslaných používateľovi ## Dôležité Nastavenia používateľov a história odoslaných oznámení sú poskytované inými komponentmi systému. Musíte navrhnúť zmluvy na získanie týchto údajov. Implementácia ukladania nie je potrebná. ## Úloha Napíšte systém filtrovania oznámení, ktorý: - prijíma zoznam oznámení na filtrovanie a ID odosielateľa - vylučuje oznámenia, ktoré nevyhovujú preferenciám používateľa - implementuje ochranu proti duplicitám správ, vrátane tých odoslaných za posledných 24 hodín. Duplicitami sú správy s rovnakým ID, adresované rovnakému používateľovi - vracia filtrovaný zoznam oznámení pripravených na odoslanie. Odosielanie oznámení nie je súčasťou vašej úlohy; iný tím sa postará o odoslanie filtrovaného zoznamu. Vašou úlohou je iba filtrovanie. */ class NotificationFilter { UserSettingsService userSettingsService; NotificationHistoryService notificationHistoryService; public ??? filter(??? senderId, List<???> msgs) { // TODO implement } } interface UserSettingsService { // TODO any functions } interface NotificationHistoryService { // TODO any functions }
Máte skúsenosti s optimalizáciou SQL dopytov? Viete analyzovať plán dopytu?
Aký je účel objektovo orientovaného programovania pri vývoji softvérových systémov?
Aké rozhodnutia ste museli urobiť v súvislosti s výmenou alebo zavedením technologického zásobníka? Uveďte príklad.
Aký typ HTTP požiadavky by sa mal použiť na získanie údajov o zákazníkovi podľa čísla karty cez API?
Ste pripravení na praktické pohovory a viete odpovedať na typické otázky, ktoré sa v reálnom systéme náboru vyskytujú?
Aké sú výhody a nevýhody používania Scope Prototype pri navrhovaní systémov?
Ako zorganizovať vykonanie rollbacku transakcie alebo operácie v distribuovanom systéme s mikroservismi?
Aké sú výhody a nevýhody rozdeľovania kódu na funkcie?
Porozprávaj o mentorstve juniorov — ako to vyzeralo?
V akých prípadoch by sa mala použiť anotácia @Service v vyvíjanej aplikácii?
Prečo boli súčasne použité dvaja sprostredkovatelia správ — Kafka a RabbitMQ?
Aké typy indexov poznáte v PostgreSQL? Porozprávajte o B-tree indexe, ako je štruktúrovaný. Čo je GIN index?
Integer i = 300, j = 300; System.out.println(i == j);
Ako ste vykonali zmeny v databáze na produkcii? Použili ste Liquibase?
Aký je rozdiel medzi map a flatMap v Stream API?
Akú úroveň viditeľnosti by mal kontrolér uvádzať, aby mohol sledovať vykonávanie požiadaviek?
Čo je REST a ako sa líši od bežného HTTP API?
Čo môže spôsobiť zhoršenie rýchlosti vkladania údajov do databázy po vytvorení indexov?