Golang
Τι να πείτε στον συνεντευξιαστή (αν σας ρωτήσουν) "Θα χρησιμοποιούσα ένα pool εργαζομένων με σταθερό αριθμό εργαζομένων, ένα κανάλι για εργασίες και sync.WaitGroup. Οι εργαζόμενοι θα εκτελούν τα αιτήματα, και το timeout και η ακύρωση θα ελέγχονται μέσω του context. Τα αποτελέσματα θα συγκεντρώνονται σε ένα buffer, προστατευμένο από ένα mutex (ή μέσω ενός ξεχωριστού καναλιού)." Τώρα είναι η σειρά σου Γράψε τον κώδικα σε αυτό το chat. Θα τον ελέγξω και θα σου δώσω ανατροφοδότηση. Αν δεν ξέρεις από πού να ξεκινήσεις, ζήτησε μια υπόδειξη. Καλή επιτυχία!
Πώς λύνετε το πρόβλημα της συνθήκης αγώνα κατά την ταυτόχρονη προσθήκη προϊόντων σε ένα καλάθι από διαφορετικές goroutines;
Πώς θα φαίνεται η σχέση μεταξύ των πινάκων transfers και accounts (δύο ξένα κλειδιά σε έναν πίνακα);
Ποιος ασχολήθηκε με την αρχιτεκτονική στην ομάδα;
// GetUsersList επιστρέφει μια λίστα χρηστών. (στη βάση δεδομένων αποθηκεύουμε περίπου 1 εκατομμύριο χρήστες) // Χρησιμοποιείται για την εμφάνιση της λίστας χρηστών στον πίνακα διαχείρισης. Αν isActive = true, επιστρέφονται μόνο ενεργοί χρήστες. func (u *UsersRepo) GetUsersList(ctx context.Context, isActive bool) ([]User, error) { rows, err := u.DB.Query("SELECT id, name, phone FROM users WHERE is_active = ?", isActive) if err != nil { return nil, errors.New("σφάλμα κατά την λήψη της λίστας χρηστών") } var users []User // Συμπληρώστε πληροφορίες σχετικά με τους χρήστες. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Λάβετε τη λίστα email του χρήστη err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("σφάλμα κατά την λήψη της λίστας χρηστών") } var emails []string for er.Next() { var email string err := rows.Scan(&email) if err != nil { return nil, err } emails = append(emails, email) } if len(emails) != 0 { for i, e := range emails { e = strings.ToLower(e) emails[i] = e } } user.Emails = emails // Λάβετε πληροφορίες προφίλ από το API του VKontakte profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("σφάλμα κατά την λήψη της λίστας χρηστών") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("σφάλμα κατά την λήψη της λίστας χρηστών") } }
Έχετε διαβάσει την περιγραφή της θέσης;
Ποια είναι η διαφορά μεταξύ HTTP και HTTPS;
Ποια είναι η διαφορά μεταξύ GET και POST;
Έχετε εμπειρία με σύγχρονα frameworks frontend (Vue, React, Svelte); Τι είναι η αντιδραστικότητα και πώς υλοποιείται στο React;
Με τι ασχολούσασταν συχνότερα στις καθημερινές σας εργασίες; Διόρθωση σφαλμάτων, αναδιοργάνωση, υποστήριξη, ανάπτυξη νέων λειτουργιών;
Οι αναγνώσεις γίνονταν με τον δάσκαλο, με την αναπαραγωγή ή πώς διανέμονταν;
Τι περιμένεις από την ομάδα / τον ηγέτη; Τι πρέπει να κάνει, πώς μπορεί να βοηθήσει;
Τι είναι η καθαρή αρχιτεκτονική; Γιατί είναι απαραίτητη;
Πες μου για τα κανάλια με buffer και χωρίς buffer. Πότε χρησιμοποιούμε το καθένα; Πώς μπλοκάρουν και πότε μπαίνουν σε deadlock;
Πες μας για την εμπειρία σου στην [εταιρεία].
Γιατί κάνατε ακριβώς τόσες υπηρεσίες; Πώς έγινε η επιλογή — να κάνετε υπηρεσία ή όχι;
Έχετε ασχοληθεί με την μηχανική μάθηση;
Πες μου για τις συναλλαγές στο PostgreSQL. Τι είναι το ACID και τα επίπεδα απομόνωσης;
Προσφορά: 320k μικτά (~280k καθαρά) + τριμηνιαία μπόνους 20%. Πώς σου φαίνονται οι όροι;
Τι είναι σημαντικό για σένα όταν επιλέγεις ένα νέο μέρος εργασίας;