Java
Εξηγήστε την αρχή λειτουργίας της μεθόδου διπλού ελέγχου στο πλαίσιο του πολυνηματικού προγραμματισμού.
/* Η εταιρεία παρέχει υπηρεσία μαζικής αποστολής ειδοποιήσεων σε άλλες επιχειρήσεις. Ένας ιδιοκτήτης προϊόντος ανέθεσε τη δημιουργία ενός συστήματος φιλτραρίσματος ειδοποιήσεων λαμβάνοντας υπόψη τις προτιμήσεις των χρηστών. ## Ορισμοί Ειδοποίηση: - id ειδοποίησης - τύπος ειδοποίησης (EMAIL, SMS, PUSH) - παραλήπτης (id χρήστη) - κείμενο μηνύματος Ο παραλήπτης μπορεί να έχει ρυθμίσεις προτιμήσεων: - επιτρεπτά κανάλια ειδοποιήσεων (λίστα τύπων) - αποκλεισμένοι αποστολείς (λίστα id αποστολέων) Ιστορικό αποστολής ειδοποιήσεων: - λίστα ειδοποιήσεων που έχουν σταλεί στον χρήστη ## Σημαντικό Οι ρυθμίσεις χρηστών και το ιστορικό αποστολής παρέχονται από άλλα συστατικά του συστήματος. Πρέπει να σχεδιάσετε συμβάσεις για την απόκτησή τους. Δεν απαιτείται υλοποίηση αποθήκευσης. ## Εργασία Γράψτε ένα σύστημα φιλτραρίσματος ειδοποιήσεων που: - λαμβάνει μια λίστα ειδοποιήσεων για φιλτράρισμα και το id αποστολέα - αποκλείει ειδοποιήσεις που δεν ταιριάζουν με τις προτιμήσεις του χρήστη - υλοποιεί προστασία από διπλότυπα μηνύματα, συμπεριλαμβανομένων αυτών που έχουν σταλεί τις τελευταίες 24 ώρες. Τα διπλότυπα θεωρούνται μηνύματα με το ίδιο id, που απευθύνονται στον ίδιο χρήστη - επιστρέφει τη φιλτραρισμένη λίστα ειδοποιήσεων, έτοιμη για αποστολή. Η αποστολή ειδοποιήσεων δεν αποτελεί μέρος της εργασίας σας - μια άλλη ομάδα θα αναλάβει την αποστολή της φιλτραρισμένης λίστας. Η εργασία σας είναι μόνο η φιλτράρισμα. */ class NotificationFilter { UserSettingsService userSettingsService; NotificationHistoryService notificationHistoryService; public ??? filter(??? senderId, List<???> msgs) { // TODO implement } } interface UserSettingsService { // TODO any functions } interface NotificationHistoryService { // TODO any functions }
Έχετε εμπειρία στη βελτιστοποίηση ερωτημάτων SQL; Μπορείτε να αναλύσετε το σχέδιο του ερωτήματος;
Ποιος είναι ο σκοπός του αντικειμενοστραφούς προγραμματισμού στην ανάπτυξη λογισμικού;
Ποιες αποφάσεις έπρεπε να πάρετε σχετικά με την αντικατάσταση ή την υλοποίηση μιας τεχνολογικής στοίβας; Δώστε ένα παράδειγμα.
Ποιος τύπος αιτήματος HTTP πρέπει να χρησιμοποιηθεί για την λήψη δεδομένων πελάτη μέσω API με βάση τον αριθμό κάρτας;
Έχετε προετοιμαστεί για πρακτικές συνεντεύξεις και ξέρετε πώς να απαντάτε στις τυπικές ερωτήσεις που συναντώνται σε ένα πραγματικό σύστημα πρόσληψης;
Ποια είναι τα πλεονεκτήματα και τα μειονεκτήματα της χρήσης του Prototype Scope στο σχεδιασμό συστημάτων;
Πώς οργανώνεται η εκτέλεση μιας ανάκλησης μιας συναλλαγής ή λειτουργίας σε ένα κατανεμημένο σύστημα με μικροϋπηρεσίες;
Ποια είναι τα πλεονεκτήματα και τα μειονεκτήματα της διαίρεσης του κώδικα σε λειτουργίες;
Μίλησε για την καθοδήγηση των νέων — πώς ήταν;
Σε ποιες περιπτώσεις πρέπει να χρησιμοποιείται η σημείωση @Service στην αναπτυσσόμενη εφαρμογή;
Γιατί χρησιμοποιήθηκαν δύο διαμεσολαβητές μηνυμάτων — Kafka και RabbitMQ — ταυτόχρονα;
Ποιοι τύποι ευρετηρίων γνωρίζετε στο PostgreSQL; Μιλήστε για το ευρετήριο B-tree, πώς είναι δομημένο. Τι είναι ένα ευρετήριο GIN;
Integer i = 300, j = 300; System.out.println(i == j);
Πώς κάνατε τις αλλαγές στη βάση δεδομένων σε παραγωγή; Χρησιμοποιήσατε το Liquibase;
Ποια είναι η διαφορά μεταξύ map και flatMap στο API Stream;
Ποιο επίπεδο ορατότητας πρέπει να οριστεί για τον ελεγκτή ώστε να μπορεί να παρακολουθεί την εκτέλεση των αιτημάτων;
Τι είναι το REST και πώς διαφέρει από ένα συνηθισμένο HTTP API;
Τι μπορεί να οδηγήσει σε επιδείνωση της ταχύτητας εισαγωγής δεδομένων στη βάση δεδομένων μετά τη δημιουργία ευρετηρίων;