Java
Izskaidrojiet dubultās pārbaudes metodes darbības principu daudzprocesu programmēšanas kontekstā.
/* Uzņēmums nodrošina masu paziņojumu sūtīšanas pakalpojumu citiem uzņēmumiem. Jums vērsās produkta īpašnieks ar uzdevumu izveidot filtrēšanas sistēmu, ņemot vērā lietotāju preferences. ## Definīcijas Paziņojums: - paziņojuma ID - paziņojuma tips (EPASTS, SMS, PUSH) - saņēmējs (lietotāja ID) - ziņojuma teksts Saņēmējs var būt iestatījis preferences: - atļautie paziņojumu kanāli (saraksts ar tipiem) - bloķētie sūtītāji (saraksts ar sūtītāju ID) Sūtījumu vēsture: - saraksts ar sūtītajiem paziņojumiem lietotājam ## Svarīgi Lietotāju iestatījumi un sūtījumu vēsture tiek nodrošināta ar citu sistēmas komponentu palīdzību. Jums jāizstrādā šo datu saņemšanas līgumi. Glabāšanas īstenošana nav nepieciešama. ## Uzdevums Izstrādāt paziņojumu filtrēšanas sistēmu, kas: - pieņem ievadē sarakstu ar paziņojumiem filtrēšanai un sūtītāja ID - izslēdz paziņojumus, kas neatbilst lietotāja preferencēm - īsteno aizsardzību pret dublikātu ziņojumiem, ieskaitot tos, kas nosūtīti pēdējās 24 stundās. Dublikāti tiek uzskatīti par ziņojumiem ar vienādu ID, adresēti vienam lietotājam - atgriež filtrētu paziņojumu sarakstu, kas ir gatavs nosūtīšanai. Paziņojumu sūtīšana nav jūsu uzdevums – to veiks cita komanda. Jūsu uzdevums ir tikai filtrēšana. */ class NotificationFilter { UserSettingsService userSettingsService; NotificationHistoryService notificationHistoryService; public ??? filter(??? senderId, List<???> msgs) { // TODO implement } } interface UserSettingsService { // TODO any functions } interface NotificationHistoryService { // TODO any functions }
Vai jums ir pieredze SQL vaicājumu optimizācijā? Vai jūs spējat analizēt vaicājuma plānu?
Kāda ir objektorientētās programmēšanas nozīme programmatūras sistēmu izstrādē?
Kādus lēmumus jums nācās pieņemt, mainot vai ieviešot tehnoloģiju steku? Sniedziet piemēru.
Kāda veida HTTP pieprasījums būtu jāizmanto, lai saņemtu klienta datus pēc kartes numura caur API?
Vai esi gatavs praktiskām intervijām un zini, kā atbildēt uz tipiskajiem jautājumiem, kas sastopami reālajā darba pieņemšanas sistēmā?
Kādi ir priekšrocības un trūkumi, izmantojot Prototype Scope sistēmu projektēšanā?
Kā organizēt darījuma vai operācijas atcelšanu izplatītā sistēmā, izmantojot mikroservisus?
Kādi ir funkciju sadalīšanas koda priekšrocības un trūkumi?
Pastāstiet par jauniešu mentorēšanu — kā tas izskatījās?
Kādos gadījumos būtu jāizmanto @Service anotācija izstrādājamajā lietojumprogrammā?
Kāpēc vienlaikus tika izmantoti divi ziņojumu starpnieki — Kafka un RabbitMQ?
Kādus indeksu veidus pazīsti PostgreSQL? Pastāsti par B-tree indeksu, kā tas ir uzbūvēts. Kas ir GIN indekss?
Integer i = 300, j = 300; System.out.println(i == j);
Kā veicāt izmaiņas datu bāzē ražošanā? Vai izmantojāt Liquibase?
Kāda ir atšķirība starp map un flatMap Stream API?
Kādu redzamības līmeni būtu jānorāda kontrolierim, lai tas varētu uzraudzīt pieprasījumu izpildi?
Kas ir REST un kā tas atšķiras no parastas HTTP API?
Kas var izraisīt datu ievietošanas ātruma pasliktināšanos datu bāzē pēc indeksu izveides?