Golang
Έχεις εσύ ο ίδιος περιγράψει κάτι για την observability — μετρήσεις, ειδοποιήσεις;
Τι σου αρέσει στο Go και τι σε ενοχλεί;
Υπήρχαν κάποιοι endpoints στη υπηρεσία για να ελέγχουν αν η υπηρεσία λειτουργεί τώρα;
Ποιες είναι οι συστάσεις για τη συγγραφή modules Go;
Πώς διασφαλίσατε τη συνέπεια των δεδομένων στο έργο; Υπήρξαν περιπτώσεις αποκλίσεων;
Τι θα συμβεί με τα τρέχοντα αιτήματα χωρίς Graceful Shutdown κατά το τερματισμό της διαδικασίας;
Προσωπικά, δοκίμασα ότι το Postgres αναδιατάσσει τις στήλες και ο βελτιστοποιητής δεν νοιάζεται σε ποια σειρά γράφεις το ερώτημα — θα το αναδιαμορφώσει μόνος του όπως πρέπει. Τι λες;
Τι θα εμφανιστεί κατά την εκτέλεση του προγράμματος: func main() { counter := make([]int, 0, 1000) var wg sync.WaitGroup for i := 0; i < 1000; i++ { wg.Add(1) go func() { defer wg.Done() counter = append(counter, i) time.Sleep(10 * time.Millisecond) // Προσομοίωση εργασίας }() } wg.Wait() fmt.Println(len(counter)) }
Παραθέστε τα επίπεδα απομόνωσης των συναλλαγών στο Postgres. Γιατί τα πιο αυστηρά επίπεδα απομόνωσης λειτουργούν πιο αργά; Από ποιο επίπεδο ξεκινά ο ανταγωνισμός για τα δεδομένα;
Γράψτε μια λειτουργία που διαγράφει όλα τα στοιχεία ίσα με το val από το slice in-place. Επιστρέφει το slice χωρίς τις διαγραμμένες τιμές. func RemoveValue(slice []int, val int) []int { // ο κώδικάς σας } // Παράδειγμα RemoveValue([]int{1,2,3,2,4}, 2) // -> []int{1,3,4} RemoveValue([]int{1,2,3}, 5) // -> []int{1,2,3} RemoveValue([]int{}, 1) // -> []int{}
Ποια εργαλεία χρησιμοποιήσατε για τη διαχείριση εξαρτήσεων στο Go;
Πες μου για το Garbage Collector στο Go, πώς λειτουργεί.
Ποια προβλήματα μπορεί να προκύψουν κατά τη χρήση του Redis υπό υψηλό φόρτο;
Πες μου για το sync.Atomic: για τι χρησιμοποιείται, έχεις χρειαστεί να το χρησιμοποιήσεις στη δουλειά;
Τι είναι μια συναλλαγή και ποια είναι τα αρχές ACID;
Σε πόσα hosts λειτουργούσε η υπηρεσία και πόσα instances ξεκινούσαν;
Πώς εργαστήκατε με WebSocket; Σε ποιο επίπεδο - ρύθμιση υποδομής ή μόνο κώδικας; Ποιες τεχνολογίες χρησιμοποιήσατε; Υπήρχαν προβλήματα σύνδεσης σε επίπεδο υποδομής;
Μπορείτε να περιγράψετε σύντομα από ποιες υπηρεσίες αποτελούταν το σύστημα και πώς επικοινωνούσαν μεταξύ τους;
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) // προσθήκη συναλλαγής if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount // προστασία SELECT FOR UPDATE partner.Hold -= amount partner.Balance += amount if err := r.save(advertiser); err != nil { return err } if err := r.save(partner); err != nil { return err } r.totalPayouts++ return nil }
Τι γράφεις σε Go — μικροϋπηρεσίες ή υπηρεσίες;