Sobes.tech

Τι να πείτε στον συνεντευξιαστή (αν σας ρωτήσουν) "Θα χρησιμοποιούσα ένα pool εργαζομένων με σταθερό αριθμό εργαζομένων, ένα κανάλι για εργασίες και sync.WaitGroup. Οι εργαζόμενοι θα εκτελούν τα αιτήματα, και το timeout και η ακύρωση θα ελέγχονται μέσω του context. Τα αποτελέσματα θα συγκεντρώνονται σε ένα buffer, προστατευμένο από ένα mutex (ή μέσω ενός ξεχωριστού καναλιού)." Τώρα είναι η σειρά σου Γράψε τον κώδικα σε αυτό το chat. Θα τον ελέγξω και θα σου δώσω ανατροφοδότηση. Αν δεν ξέρεις από πού να ξεκινήσεις, ζήτησε μια υπόδειξη. Καλή επιτυχία!

Senior
FREEDOM LIFESTYLE
35

Πώς λύνετε το πρόβλημα της συνθήκης αγώνα κατά την ταυτόχρονη προσθήκη προϊόντων σε ένα καλάθι από διαφορετικές goroutines;

Middle+
КуперКупер
35

Πώς θα φαίνεται η σχέση μεταξύ των πινάκων transfers και accounts (δύο ξένα κλειδιά σε έναν πίνακα);

Senior
Lamoda Tech
35

Ποιος ασχολήθηκε με την αρχιτεκτονική στην ομάδα;

Middle
X5 groupX5 group
35

// 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("σφάλμα κατά την λήψη της λίστας χρηστών") } }

Middle
СитиДрайвСитиДрайв
35

Έχετε διαβάσει την περιγραφή της θέσης;

Senior
HR
35

Ποια είναι η διαφορά μεταξύ HTTP και HTTPS;

Senior
AvitoAvito
35

Ποια είναι η διαφορά μεταξύ GET και POST;

Middle+
FanZino
35

Έχετε εμπειρία με σύγχρονα frameworks frontend (Vue, React, Svelte); Τι είναι η αντιδραστικότητα και πώς υλοποιείται στο React;

Middle
Graveling
35

Με τι ασχολούσασταν συχνότερα στις καθημερινές σας εργασίες; Διόρθωση σφαλμάτων, αναδιοργάνωση, υποστήριξη, ανάπτυξη νέων λειτουργιών;

Middle+
OZONOZON
35

Οι αναγνώσεις γίνονταν με τον δάσκαλο, με την αναπαραγωγή ή πώς διανέμονταν;

Senior
WildberriesWildberries
35

Τι περιμένεις από την ομάδα / τον ηγέτη; Τι πρέπει να κάνει, πώς μπορεί να βοηθήσει;

Senior
OZONOZON
35

Τι είναι η καθαρή αρχιτεκτονική; Γιατί είναι απαραίτητη;

Middle
СБЕРСБЕР
35

Πες μου για τα κανάλια με buffer και χωρίς buffer. Πότε χρησιμοποιούμε το καθένα; Πώς μπλοκάρουν και πότε μπαίνουν σε deadlock;

Middle
АО Медиа Эффект
35

Πες μας για την εμπειρία σου στην [εταιρεία].

Senior
AstraTech
35

Γιατί κάνατε ακριβώς τόσες υπηρεσίες; Πώς έγινε η επιλογή — να κάνετε υπηρεσία ή όχι;

Middle+
РамблерРамблер
35

Έχετε ασχοληθεί με την μηχανική μάθηση;

Senior
sber tech
35

Πες μου για τις συναλλαγές στο PostgreSQL. Τι είναι το ACID και τα επίπεδα απομόνωσης;

Middle
АО Медиа Эффект
35

Προσφορά: 320k μικτά (~280k καθαρά) + τριμηνιαία μπόνους 20%. Πώς σου φαίνονται οι όροι;

Senior
X5
35

Τι είναι σημαντικό για σένα όταν επιλέγεις ένα νέο μέρος εργασίας;

Senior
AltDev
35
/412