Golang
Ποια θα είναι τα αποτελέσματα αν τα δεδομένα που μεταδίδονται μέσω του καναλιού παραμείνουν αδιάβαστα;
Ποιο είναι το πλεονέκτημα των goroutines σε σύγκριση με τα νήματα όσον αφορά την αποδοτικότητα και την ευκολία χρήσης;
Τι καθορίζει το πεδίο πρόσβασης μιας μεταβλητής που δηλώνεται με τον τροποποιητή ιδιωτικό;
Ποια παράμετροι μπορούν να ρυθμιστούν για τη λειτουργία του προγραμματιστή εργασιών;
Ποιοι τρόποι μπορούν να χρησιμοποιηθούν για να διασφαλιστεί η επεξεργασία του Kafka έως και 100.000 μηνύματα ανά δευτερόλεπτο;
Πώς αντιλαμβάνεστε την κατάσταση όταν στη κώδικα δεν αναφέρεται ρητά η χρήση διεπαφής;
Πες μου για το τρέχον έργο στο οποίο εργάζεσαι ή εργάστηκες πρόσφατα
Ποιες λειτουργίες υπάρχουν πάνω σε slices στο Go;
Πώς ονομάζεται η διαδικασία μετακίνησης στοιχείων από ένα Map σε άλλο;
/* Πρέπει να μεταφέρουμε δεδομένα από μια πηγή σε έναν καταναλωτή. Η πηγή παρέχει δεδομένα σε μικρές παρτίδες (~δέκα εγγραφές), ενώ ο καταναλωτής λειτουργεί πιο αποδοτικά με μεγάλες παρτίδες (~χίλιες εγγραφές). Ένα πραγματικό παράδειγμα είναι η μεταφορά δεδομένων από ουρές τύπου Kafka σε μια βάση δεδομένων Clickhouse. Πηγή: - Πρακτικά ατελείωτη. - Η πηγή ποτέ δεν επιστρέφει περισσότερα από MaxItems εγγραφές σε μια κλήση Next. - Σε μια "συνεδρία" (μία κλήση της λειτουργίας Pipe), η πηγή επιστρέφει νέα δεδομένα σε κάθε κλήση Next. - Ωστόσο, μετά από επανεκκίνηση, η πηγή ξεκινά από την προηγούμενη "επιβεβαιωμένη" θέση, που υποδεικνύεται από το cookie. Επομένως, κάθε τιμή cookie που επιστρέφεται από το Next, μετά την αποθήκευση των δεδομένων στον δέκτη, πρέπει να επιβεβαιωθεί με μια κλήση στο Commit, με την ίδια σειρά με αυτή που επιστράφηκε από το Next. Δέκτης: - Δεν μπορεί να επεξεργαστεί περισσότερα από MaxItems ταυτόχρονα. Βασικό επίπεδο: Απαιτείται η υλοποίηση της λειτουργίας func Pipe(p Producer, c Consumer) error που διαβάζει δεδομένα από την πηγή, τα ομαδοποιεί σε ένα buffer μεγέθους όχι μεγαλύτερο από MaxItems και τα αποθηκεύει στον δέκτη, μετά επιβεβαιώνει την πρόοδο στην πηγή. Πρόσθετη δυσκολία: Οι μέθοδοι Next, Process και Commit σχετίζονται με κλήσεις δικτύου και μπορεί να διαρκέσουν αρκετά. Για την επιτάχυνση της διαδικασίας, πρέπει να παραλληλοποιηθούν οι διαδικασίες ανάγνωσης, εγγραφής και επιβεβαίωσης προόδου. Έτσι, κατά τη διάρκεια των Process ή Commit, η ανάγνωση από την πηγή και η δημιουργία του νέου buffer συνεχίζονται. */ const MaxItems = 9999 type Producer interface { // Next επιστρέφει: // - ένα batch αντικειμένων προς επεξεργασία // - ένα cookie για επιβεβαίωση όταν η επεξεργασία ολοκληρωθεί // - ένα σφάλμα Next() (items []any, cookie int, err error) // Το Commit χρησιμοποιείται για να σηματοδοτήσει ένα batch δεδομένων ως επεξεργασμένο Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }
Πώς υλοποιείται η λειτουργία select στη γλώσσα Go και πώς λειτουργεί με κανάλια;
Μπορείτε να διακόψετε την εκτέλεση μιας goroutine έτσι ώστε να μπλοκάρει σε ένα συγκεκριμένο νήμα συστήματος;
Η γλώσσα Go διαθέτει ενσωματωμένη υποστήριξη για πίνακες;
Ποιος μηχανισμός αφαίρεσης στο γλώσσα Go προορίζεται για την αναπαράσταση χαρακτήρων ή tokens;
Τι σημαίνει μηδενική τιμή για ένα τμήμα σε μια γλώσσα προγραμματισμού;
Πώς υλοποιείται η παράλληλη και σειριακή επεξεργασία εργασιών στη γλώσσα Go;
Ποια μηχανισμοί και μέθοδοι χρησιμοποιούνται για την προστασία των δεδομένων κατά τη δημιουργία συνδέσεων HTTPS;
Ποιοι τύποι δεδομένων είναι κατάλληλοι για χρήση ως κλειδί σε μια δομή δεδομένων Map;
Μπορείτε να εξηγήσετε τον μηχανισμό λειτουργίας του προγραμματιστή εργασιών στο λειτουργικό σύστημα;
Μπορείτε να εξηγήσετε τη δομή και τη λειτουργία ενός πίνακα κατακερματισμού;