Golang
Πώς να επιταχύνετε ένα αργό API endpoint — ποιες προσεγγίσεις υπάρχουν;
Ποιος πόρος του Kubernetes χρειάζεται ώστε οι περιπτώσεις του pod να τρέχουν σε όλους τους κόμβους του κλάστερ;
Πώς λειτουργεί το map εσωτερικά;
Ποιες είναι οι προσδοκίες σας σχετικά με τον μισθό; Πώς διαμορφώθηκε το προηγούμενο εισόδημά σας (βασικός μισθός, μπόνους); Είστε διατεθειμένοι να εξετάσετε το συνολικό εισόδημα συμπεριλαμβανομένων των μπόνους;
Τι συμβαίνει αν πραγματοποιούνται περαιτέρω μαθηματικές λειτουργίες με ένα αποτέλεσμα int32 που έχει υπερχειλίσει — θα υπάρξει σφάλμα, πανικός ή κάτι άλλο;
Μίλησέ μου για μια δύσκολη εργασία που κατάφερες να υλοποιήσεις πρόσφατα, ή την πιο ενδιαφέρουσα. Τι ήταν, τι έκανες, τι έγινε;
Πόσο συχνά κάνετε κυκλοφορίες και πότε;
Τι είναι ένα slice στο Go;
Ανασκόπηση κώδικα: προβλήματα στη λειτουργία getExternalOrderIdFromCRM (HTTP-πελάτης)
Έχετε εμπειρία στη μετάβαση από μονολιθική αρχιτεκτονική σε μικροϋπηρεσίες;
Ποια γεγονότα μεταδόθηκαν μέσω Kafka και πώς διαχειριστήκατε τη λανθασμένη σειρά τους;
Αν δηλώσουμε πολλαπλά ευρετήρια, θα επηρεάσει αυτό την αποθήκευση όσον αφορά τον χώρο που καταλαμβάνει;
// Ο πελάτης μεταβιβάζει ένα αντικείμενο (Task) με δεδομένα για την εκτέλεση της εργασίας, // στο παράδειγμά μας θα χρησιμοποιήσουμε μια κενή δομή. // // Ο διαχειριστής μπορεί να επεξεργάζεται το πολύ N εργασίες ταυτόχρονα, // και όχι περισσότερες από X εργασίες μπορούν να βρίσκονται στη σειρά αναμονής. // Αν δεν υπάρχει χώρος στη σειρά, επιστρέφουμε άμεσα σφάλμα στον πελάτη. // // Η εργασία λαμβάνεται υπό επεξεργασία αν υπάρχουν ελεύθεροι επεξεργαστές. // Προσομοιώνουμε τη διάρκεια επεξεργασίας με time.Sleep(5*time.Second). // Μόλις μια εργασία ολοκληρωθεί, παίρνουμε την επόμενη από τη σειρά. // Αν η σειρά είναι άδεια, περιμένουμε νέες εργασίες από τους πελάτες. // // Με ένα αστερίσκο: επεκτείνετε τη δομή Task και λάβετε τις καταστάσεις των εργασιών μέσω ξεχωριστού αιτήματος. package scheduler type Scheduler interface { AddTask(t Task) error Close() } type scheduler struct { queue chan Task wg sync.WaitGroup } func New(workers, queue int) Scheduler { // υλοποίηση αναμένεται } type Task interface { Do() }
Ξέρεις τη δομή του Kubernetes, ποιες οντότητες υπάρχουν, τι είναι το control plane;
Πες μου περισσότερα για το WaitGroup: ποια είναι η χρήση του, ποια μεθόδους υπάρχουν;
Ας υποθέσουμε ότι είμαστε ένα μεγάλο δίκτυο διαφήμισης. Τοποθετούμε banners σε συνεργατικές ιστοσελίδες σε όλο τον κόσμο. Πρέπει να σχεδιάσουμε ένα σύστημα συλλογής και επεξεργασίας γεγονότων σε πραγματικό χρόνο. Αυτά τα δεδομένα είναι κρίσιμα για δύο σκοπούς: Χρέωση: Απομείωση χρημάτων από διαφημιστές για κλικ. Ανάλυση: Εμφάνιση της τρέχουσας απόδοσης των καμπανιών (CTR, εμφανίσεις) στον πίνακα ελέγχου. Δεδομένα εισόδου (για τον υπολογισμό φόρτου) Πρέπει να εκτιμήσετε μόνοι σας τις απαιτούμενες δυνατότητες (RPS, κυκλοφορία, αποθήκευση), βασιζόμενοι στα ακόλουθα metrics: Δίκτυο συνεργατών: 500.000 ενεργές ιστοσελίδες. Κυκλοφορία: Μέσο όρο, κάθε ιστοσελίδα λαμβάνει 2 προβολές σελίδας ανά δευτερόλεπτο. Μπλοκ διαφημίσεων: Σε κάθε σελίδα εμφανίζονται ταυτόχρονα 3 banners. Μετατροπή: Ο μέσος CTR (Click-Through Rate) είναι 1%. Ανωμαλία: Η αιχμή φόρτου (βραδινές ώρες) είναι 4 φορές μεγαλύτερη από το μέσο όρο. Μέγεθος γεγονότος: Το αντικείμενο γεγονότος (ID banner, ID ιστοσελίδας, UserID, Timestamp, τύπος γεγονότος) ζυγίζει περίπου 500 bytes. Τεχνικές απαιτήσεις Near Real-Time: Τα δεδομένα στην αναλυτική διεπαφή πρέπει να εμφανίζονται με καθυστέρηση όχι μεγαλύτερη από 10 δευτερόλεπτα. Αξιοπιστία: Η απώλεια κλικ δεν είναι αποδεκτή (αυτό σημαίνει άμεση απώλεια χρημάτων). Η απώλεια εμφανίσεων (impressions) είναι αποδεκτή μέχρι 0,01%. Κλιμάκωση: Το σύστημα πρέπει να μπορεί να επεκταθεί εύκολα με την αύξηση του αριθμού των πλατφορμών.
Τι συμβαίνει αν προσθέσουμε πάρα πολλά στοιχεία σε ένα slice μέσα σε μια συνάρτηση;
SELECT user_id, COUNT(*) AS order_count FROM orders WHERE price_total >= 1000 GROUP BY user_id ORDER BY order_count DESC;
Πώς να δομήσετε σωστά την αρχιτεκτονική της υπηρεσίας: πού να αποθηκεύσετε εντολές, οντότητες πεδίου, σφάλματα;
Τελικά, από ποιες λύσεις επιλέξατε; ClickHouse, ELK και τι άλλο;