Java
/* Das Unternehmen bietet einen Massensendungsservice für Benachrichtigungen an andere Unternehmen an. Ein Product Owner hat die Aufgabe gestellt, ein Benachrichtigungsfiltersystem zu erstellen, das die Präferenzen der Nutzer berücksichtigt. ## Definitionen Benachrichtigung: - Benachrichtigungs-ID - Benachrichtigungstyp (EMAIL, SMS, PUSH) - Empfänger (Benutzer-ID) - Nachrichtentext Der Empfänger kann Präferenz-Einstellungen haben: - erlaubte Benachrichtigungskanäle (Liste von Typen) - blockierte Absender (Liste von Absender-IDs) Versandhistorie: - Liste der an den Nutzer gesendeten Benachrichtigungen ## Wichtig Die Nutzereinstellungen und die Versandhistorie werden von anderen Systemkomponenten bereitgestellt. Sie müssen Verträge entwerfen, um diese Daten zu erhalten. Speicherimplementierung ist nicht erforderlich. ## Aufgabe Schreiben Sie ein Benachrichtigungsfiltersystem, das: - eine Liste von Benachrichtigungen zum Filtern und eine Absender-ID erhält - Benachrichtigungen ausschließt, die nicht den Nutzerpräferenzen entsprechen - Schutz vor Duplikaten implementiert, einschließlich der in den letzten 24 Stunden gesendeten Nachrichten. Duplikate sind Nachrichten mit derselben ID, die an denselben Nutzer gerichtet sind - gibt die gefilterte Liste der Benachrichtigungen zurück, die versandbereit sind. Der Versand der Benachrichtigungen ist nicht Teil Ihrer Aufgabe; ein anderes Team kümmert sich um den Versand der gefilterten Liste. Ihre Aufgabe ist nur das Filtern. */ class NotificationFilter { UserSettingsService userSettingsService; NotificationHistoryService notificationHistoryService; public ??? filter(??? senderId, List<???> msgs) { // TODO implement } } interface UserSettingsService { // TODO any functions } interface NotificationHistoryService { // TODO any functions }
Haben Sie Erfahrung in der Optimierung von SQL-Abfragen? Können Sie den Abfrageplan analysieren?
Was ist der Zweck der objektorientierten Programmierung bei der Entwicklung von Softwaresystemen?
Welche Entscheidungen mussten Sie bezüglich des Austauschs oder der Implementierung eines Technologie-Stacks treffen? Geben Sie ein Beispiel.
Welche Art von HTTP-Anfrage sollte verwendet werden, um Kundendaten anhand der Kartennummer über die API abzurufen?
Bist du bereit für praktische Vorstellungsgespräche und kannst du typische Fragen beantworten, die in einem echten Einstellungssystem auftreten?
Was sind die Vor- und Nachteile der Verwendung des Prototype Scope bei der Systemgestaltung?
Wie kann man die Rückabwicklung einer Transaktion oder Operation in einem verteilten System mit Microservices organisieren?
Was sind die Vor- und Nachteile der Verwendung von Codeaufteilung in Funktionen?
Erzählen Sie mir vom Mentoring der Juniors — wie sah das aus?
In welchen Fällen sollte die @Service-Annotation in der entwickelten Anwendung verwendet werden?
Warum wurden zwei Messaging-Broker, Kafka und RabbitMQ, gleichzeitig verwendet?
Welche Arten von Indizes kennst du in PostgreSQL? Erkläre den B-tree Index, wie er aufgebaut ist. Was ist ein GIN-Index?
Integer i = 300, j = 300; System.out.println(i == j);
Wie haben Sie Änderungen an der Datenbank in der Produktion durchgeführt? Haben Sie Liquibase verwendet?
Was ist der Unterschied zwischen map und flatMap in der Stream API?
Welche Sichtbarkeitsstufe sollte für den Controller angegeben werden, damit er die Ausführung der Anfragen verfolgen kann?
Was ist REST und wie unterscheidet es sich von einer herkömmlichen HTTP-API?
Was kann die Einfügegeschwindigkeit von Daten in die Datenbank nach der Erstellung von Indizes verschlechtern?
Wann wird empfohlen, den Befehl install während der Arbeit mit dem System zu verwenden?