Golang
Τι ήταν αποθηκευμένο στην cache; Κάποιοι κατάλογοι;
/* Chreiazomaste na metatrepoume dedomena apo mia poria se mia alli. I poria parexei ta dedomena se mikro merh, (~deka eggrafes), enw o xristis douleuei pio apodotika me megalous morfous. Enas pragmatikos paradeigma einai i metatrepisi dedomenon apo Kafka-typous oures stin vasi dedomenon Clickhouse. Poria: - Praktika apeiro. - I poria den epistrefei pio apo MaxItems eggrafes se mia monadiki klisi Next. - Mesa se mia "synthesi" (mia klisi tis sunartisis Pipe), i poria epistrefei nea dedomena se kathe Next. - Omws, meta apo mia epanarchi, i poria tha ksekinisei apo tin prohgoumeni "epiveveomeni" thesi, pou deixnei apo to cookie. Opote, *kathe* timi cookie pou epistrefei to Next, meta tin apothikeusi ton dedomenon ston parakto, prepei na epiveveothei me mia klisi Commit, stin idia seira pou epistrefontai apo to Next. Paraliptikos: - Den mporei na diadrastei perissotero apo MaxItems se mia fora. Vasi: Prepei na ylopoiisete tin sunartisi func Pipe(p Producer, c Consumer) error pou diavazei dedomena apo tin poria, ta omadopoiei se ena buffer me megethos oxi pio apo MaxItems kai ta apothikeuei ston parakto, meta epivevevei to progresa stin poria. */ const MaxItems = 9999 type Producer interface { // Next epistrefei: // - ena paketo me items gia diadrasth // - cookie gia na epiveveothei otan oloklirothei i diadrasth // - lathi Next() (items []any, cookie int, err error) // Commit xrisimopoieitai gia na shmeiosei oti to paketo einai olokliro Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }
Μπορείτε να απαριθμήσετε τις εταιρείες ή τους προμηθευτές με τους οποίους είχατε επαφή;
Πες μου για την τελευταία σου δουλειά: τι έκανες, ποιο τεχνολογικό στοίβα χρησιμοποιούσες, ποιες ήταν οι δύσκολες εργασίες;
Τι είναι ένα slice στο Go;
Μπορείτε να απαριθμήσετε τους βασικούς τύπους κλήσεων που χρησιμοποιούνται στο gRPC;
Επιτρέπεται η λήψη πληροφοριών από κανάλι με ενεργοποιημένη κλειστή λειτουργία;
Μπορεί κανείς να γράψει απευθείας σε μια συγκεκριμένη partition του Kafka, παρακάμπτοντας το κλειδί για το hashing;
Μπορείτε να εξηγήσετε τον μηχανισμό προσθήκης ενός στοιχείου στο τέλος μιας δομής δεδομένων, όπως μια λίστα ή έναν πίνακα;
Ποια δεδομένα και με ποιον τρόπο τοποθετούνται στη στοίβα κατά την εκτέλεση του προγράμματος;
Ποιες μεθόδους caching προτιμάτε να χρησιμοποιείτε στα έργα σας και γιατί;
Ποια είναι η διαφορά μεταξύ μιας υλοποιημένης προβολής και μιας κανονικής προβολής;
Ποια στοιχεία αποτελούν μέρος της δομής μιας συνδεδεμένης λίστας;
Πώς καθορίζεται ο χρόνος εκτέλεσης της λειτουργίας προσθήκης ενός στοιχείου με κλειδί στη δομή δεδομένων Map;
Για ποιο λόγο το αρχικό μέγεθος της στοίβας των νημάτων ορίζεται συνήθως στα 2 MB;
Έχετε χρησιμοποιήσει ποτέ τη δομή ErrGroup στα έργα σας για τη διαχείριση παράλληλων εργασιών;
Ποια ασυνήθιστα ή μη τυπικά πακέτα έχετε χρησιμοποιήσει στην πρακτική σας;
Γιατί επιβραδύνεται η αύξηση της φέτας και γιατί δεν μπορούμε να διπλασιάζουμε συνεχώς;
Σε ποιο σημείο εκτελούνται οι εντολές κατά τη διάρκεια της διαδικασίας εργασίας του GitLab CI/CD;
Ποιες συνέπειες μπορεί να προκύψουν από την μη τήρηση των αρχών SOLID στον σχεδιασμό λογισμικού;