Golang
Πώς να προσθέσετε το νέο πεδίο στον πίνακα με ένα δισεκατομμύριο εγγραφές χωρίς διακοπή;
Το μήκος μπορεί να φτάσει μέχρι 1000 — εξηγήστε γιατί μπορεί να συμβεί αυτό και πώς ονομάζεται αυτό το φαινόμενο;
Ποιοι τύποι αναπαραγωγής υπάρχουν (συγχρονική και ασύγχρονη); Πώς λειτουργεί η συγχρονική αναπαραγωγή και ποια είναι τα έξοδά της;
Είπατε ότι έχετε μια υπηρεσία που ακούει το Kafka και ενημερώνει την cache στο Redis, σωστά;
Τι είναι μια διαδικασία και ένα νήμα, και ποιες είναι οι βασικές διαφορές τους;
Πες μου για την εμπειρία σου και τον αντίκτυπο που είχες στο προϊόν ή στη λειτουργία στην προηγούμενη εργασία σου.
Γράψτε ένα ερώτημα SQL που θα επιστρέφει τον αριθμό των παραγγελιών ανά χρήστη με συνολική τιμή μεγαλύτερη ή ίση με 1000, ταξινομημένο κατά φθίνουσα σειρά με βάση τον αριθμό των παραγγελιών: +---------+--------------+ | user_id | order_count | +---------+--------------+ | 111 | 2 | | 222 | 1 | | 333 | 1 | +---------+--------------+
Πώς συγχρονίζετε τους εργαζόμενους μέσω Redis ώστε δύο εργαζόμενοι να μην επεξεργάζονται ταυτόχρονα το ίδιο αντικείμενο;
Ποια επίπεδα απομόνωσης συναλλαγών υπάρχουν; Ποιο πρέπει να χρησιμοποιηθεί για χρηματοοικονομικές συναλλαγές;
Τι είναι το μοτίβο Transactional Outbox;
Πώς μπορούν να αλληλεπιδρούν μεταξύ τους τα δοχεία;
Πώς καταλάβατε ότι υπάρχει φόρτωση στη βάση δεδομένων; Πώς συμμετείχατε στην ανίχνευση του προβλήματος;
Πότε χρησιμοποιείται το μοτίβο CQRS και πώς θα λειτουργεί η βάση δεδομένων όταν διαχωρίζονται λογικά οι υπηρεσίες ανάγνωσης και εγγραφής — θα είναι μία ή διαφορετικές;
Αν κάνω 6 αντίγραφα της υπηρεσίας με 3 διαμερίσματα, θα βοηθήσει στην επιτάχυνση της ανάγνωσης;
// Γράψτε έναν ασύγχρονο διαχειριστή εργασιών ως βιβλιοθήκη // Ο πελάτης μεταβιβάζει ένα αντικείμενο (Task) με δεδομένα για την εκτέλεση της εργασίας, // στο παράδειγμά μας θα χρησιμοποιήσουμε μια κενή δομή. // Ο διαχειριστής μπορεί να επεξεργάζεται το πολύ N εργασίες ταυτόχρονα, // και το πολύ X εργασίες μπορούν να τοποθετηθούν σε ουρά για επεξεργασία. // Αν δεν υπάρχει χώρος στην ουρά, επιστρέφουμε άμεσα σφάλμα στον πελάτη. // Μια εργασία λαμβάνεται υπό επεξεργασία αν υπάρχουν διαθέσιμοι επεξεργαστές. // Προσομοιώνουμε τη διάρκεια επεξεργασίας με time.Sleep(5*time.Second). // Μόλις μια εργασία ολοκληρωθεί, παίρνουμε την επόμενη από την ουρά. // Αν η ουρά είναι άδεια, περιμένουμε νέες εργασίες από τους πελάτες. // Με ένα αστερίσκο: συμπληρώστε τη δομή Task και λάβετε την κατάσταση των εργασιών μέσω ξεχωριστού αιτήματος package scheduler type Scheduler interface { AddTask(t Task) error Close() } type Task interface { Do() }
Γιατί χρησιμοποίησες το sync.Map αντί για έναν κανονικό χάρτη με Mutex;
// 2 func merge(chans ...chan int) <-chan int { panic("not implemented") } func main() { a,b,c := make(chan int), make(chan int), make(chan int) out := merge(a,b,c) go func(){ for v := range out { println(v) } }() a <- 1 a <- 2 a <- 3 b <- 4 c <- 5 close(c) a <- 6 } Εφαρμόστε τη λειτουργία merge που λαμβάνει πολλαπλά κανάλια ακέραιων και επιστρέφει ένα μόνο κανάλι που συγχωνεύει τις τιμές από όλα τα εισερχόμενα κανάλια. Το συγχωνευμένο κανάλι πρέπει να κλείνει όταν όλα τα εισερχόμενα κανάλια έχουν κλείσει.
Ποιοι είναι οι τύποι/ομάδες σχεδιαστικών προτύπων;
Πες μας για τη χρήση του Redis στα έργα σου.
Ποιος δείκτης να προσθέσετε για το ερώτημα αναζήτησης διαθέσιμων βιβλίων; Γιατί κάθε πεδίο σε έναν σύνθετο δείκτη; Πώς θα λειτουργήσει ο δείκτης με 2 εκατομμύρια γραμμές;