Votre projet met-il en œuvre des pratiques DevOps ou disposez-vous d'une équipe qui s'occupe de l'automatisation et de l'intégration des processus de développement et d'exploitation?
Java
Quels changements dans l'approche ou les solutions apporteriez-vous au dernier projet réalisé, en sachant ce que vous savez maintenant?
Comment l'équipe est-elle structurée et répartie dans votre projet?
Écrivez des tests pour le système de filtrage des notifications en utilisant JUnit 5 et Mockito, couvrant les scénarios principaux : entrée nulle/vide, notification valide, blocage de l'expéditeur, filtrage par canal, déduplication.
Quels projets ou tâches réalisez-vous actuellement?
Quelle est la complexité temporelle de l'opération d'ajout d'un élément à la pile?
Comment un microservice détermine-t-il comment contacter un autre service dans l'approche d'appel direct ?
Comment la complexité temporelle de la méthode get dans la structure de données HashMap est-elle déterminée?
Pourriez-vous expliquer ce qu'est une situation de blocage mutuel des threads dans un système?
Comment peut-on optimiser la mise en œuvre du système de filtrage des notifications?
/* L'entreprise fournit un service d'envoi massif de notifications à d'autres entreprises. Un propriétaire de produit a demandé de créer un système de filtrage des notifications en tenant compte des préférences des utilisateurs. ## Définitions Notification: - id de la notification - type de notification (EMAIL, SMS, PUSH) - destinataire (id de l'utilisateur) - texte du message Le destinataire peut avoir des paramètres de préférences: - canaux de notification autorisés (liste de types) - expéditeurs bloqués (liste d'ids d'expéditeurs) Historique des notifications envoyées: - liste des notifications envoyées à l'utilisateur ## Important Les paramètres des utilisateurs et l'historique des notifications sont fournis par d'autres composants du système. Vous devez concevoir des contrats pour obtenir ces données. Il n'est pas nécessaire de faire de stockage. ## Tâche Écrire un système de filtrage des notifications qui: - reçoit une liste de notifications à filtrer et l'id de l'expéditeur - exclut les notifications qui ne correspondent pas aux préférences de l'utilisateur - met en œuvre une protection contre les messages en double, y compris ceux envoyés dans les dernières 24 heures. Les doublons sont considérés comme des messages avec le même id destinés à un même utilisateur - retourne la liste filtrée de notifications prêtes à être envoyées. L'envoi des notifications ne fait pas partie de votre tâche; une autre équipe s'en chargera. Votre tâche est uniquement le filtrage. */ class NotificationFilter { UserSettingsService userSettingsService; NotificationHistoryService notificationHistoryService; public ??? filter(??? senderId, List<???> msgs) { // TODO implement } } interface UserSettingsService { // TODO any functions } interface NotificationHistoryService { // TODO any functions }