Java
/* Het bedrijf biedt een massale notificatieservice voor andere bedrijven. Een product owner heeft de taak gekregen om een notificatiefilteringssysteem te maken dat rekening houdt met de voorkeuren van gebruikers. ## Definities Notificatie: - notificatie-ID - type notificatie (EMAIL, SMS, PUSH) - ontvanger (gebruikers-ID) - berichttekst De ontvanger kan voorkeurinstellingen hebben: - toegestane notificatiekanalen (lijst van types) - geblokkeerde afzenders (lijst van afzender-ID's) Verzonden notificatiegeschiedenis: - lijst van notificaties die aan de gebruiker zijn verzonden ## Belangrijk Gebruikersinstellingen en verzonden geschiedenis worden geleverd door andere systeemcomponenten. U moet contracten ontwerpen om deze gegevens op te halen. Opslagimplementatie is niet nodig. ## Taak Schrijf een notificatiefiltersysteem dat: - ontvangt een lijst van notificaties om te filteren en de afzender-ID - sluit notificaties uit die niet overeenkomen met de voorkeuren van de gebruiker - implementeert bescherming tegen duplicaten, inclusief berichten die in de laatste 24 uur zijn verzonden. Duplicaten worden beschouwd als berichten met dezelfde ID gericht aan dezelfde gebruiker - retourneert de gefilterde lijst van notificaties die klaar zijn voor verzending. Het verzenden van notificaties is niet jouw taak; een ander team zal de verzending afhandelen. Jouw taak is alleen filtering. */ class NotificationFilter { UserSettingsService userSettingsService; NotificationHistoryService notificationHistoryService; public ??? filter(??? senderId, List<???> msgs) { // TODO implement } } interface UserSettingsService { // TODO any functions } interface NotificationHistoryService { // TODO any functions }
Heb je ervaring met het optimaliseren van SQL-query's? Kun je het queryplan analyseren?
Wat is het doel van objectgeoriënteerd programmeren bij het ontwikkelen van softwaresystemen?
Welke beslissingen moest u nemen over het vervangen of implementeren van een technologische stack? Geef een voorbeeld.
Welk type HTTP-verzoek moet worden gebruikt om klantgegevens op te halen via API op basis van het kaartnummer?
Ben je voorbereid op praktische sollicitatiegesprekken en weet je hoe je de typische vragen kunt beantwoorden die in een echt aanwervingssysteem voorkomen?
Wat zijn de voordelen en nadelen van het gebruik van Prototype Scope bij het ontwerpen van systemen?
Hoe organiseer je het uitvoeren van een rollback van een transactie of operatie in een gedistribueerd systeem met microservices?
Wat zijn de voordelen en nadelen van het opsplitsen van code in functies?
Vertel over mentoring van junior developers — hoe zag dat eruit?
In welke gevallen moet de @Service-annotatie worden gebruikt in de ontwikkelde applicatie?
Waarom werden twee berichtenbrokers — Kafka en RabbitMQ — tegelijkertijd gebruikt?
Welke soorten indexen ken je in PostgreSQL? Vertel over de B-tree index, hoe is deze opgebouwd? Wat is een GIN index?
Integer i = 300, j = 300; System.out.println(i == j);
Hoe hebt u wijzigingen in de database in productie doorgevoerd? Heeft u Liquibase gebruikt?
Wat is het verschil tussen map en flatMap in de Stream API?
Welke zichtbaarheid moet voor de controller worden opgegeven zodat deze de uitvoering van verzoeken kan volgen?
Wat is REST en hoe verschilt het van een gewone HTTP API?
Wat kan de snelheid van gegevensinvoer in de database na het maken van indexen verminderen?
Wanneer wordt het aanbevolen om de opdracht install te gebruiken tijdens het werken met het systeem?