Java
Expliquez le principe de fonctionnement de la méthode de double vérification dans le contexte de la programmation multithread.
/* 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 }
Avez-vous de l'expérience dans l'optimisation des requêtes SQL ? Savez-vous analyser le plan de la requête ?
Quelle est la finalité de la programmation orientée objet dans le développement de systèmes logiciels?
Quelles décisions avez-vous dû prendre concernant le remplacement ou l'implémentation d'une pile technologique ? Donnez un exemple.
Quel type de requête HTTP doit être utilisé pour obtenir les données du client par numéro de carte via l'API?
Êtes-vous prêt à passer des entretiens pratiques et savez-vous répondre aux questions typiques rencontrées dans un système de recrutement réel?
Quels sont les avantages et inconvénients de l'utilisation du scope prototype dans la conception de systèmes?
Comment organiser l'annulation d'une transaction ou d'une opération dans un système distribué utilisant des microservices?
Quels sont les avantages et inconvénients de l'utilisation de la division du code en fonctions?
Parlez-moi du mentorat des débutants — à quoi cela ressemblait-il?
Dans quels cas faut-il utiliser l'annotation @Service dans l'application en cours de développement?
Pourquoi utiliser deux brokers de messages, Kafka et RabbitMQ, en même temps?
Quels types d'index connais-tu dans PostgreSQL ? Parle de l'index B-tree, comment il fonctionne. Qu'est-ce qu'un index GIN ?
Integer i = 300, j = 300; System.out.println(i == j);
Comment avez-vous déployé les modifications de la base de données en production ? Avez-vous utilisé Liquibase ?
Quelle est la différence entre map et flatMap dans l'API Stream?
Quel niveau de portée doit être spécifié pour le contrôleur afin qu'il puisse suivre l'exécution des requêtes?
Qu'est-ce que REST et en quoi diffère-t-il d'une API HTTP classique?
Qu'est-ce qui peut entraîner une baisse de la vitesse d'insertion des données dans la base de données après la création d'index ?