Golang
// GetUsersList returnează o listă de utilizatori. (în baza de date stocăm aproximativ 1 milion de utilizatori) // Este folosit pentru afișarea listei de utilizatori în panoul de administrare. Dacă isActive = true, se returnează doar utilizatorii activi. 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("eroare la obținerea listei de utilizatori") } var users []User // Completați informațiile despre utilizatori. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Obțineți lista de e-mailuri ale utilizatorului err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("eroare la obținerea listei de utilizatori") } 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 // Obțineți informațiile despre profil din API-ul VKontakte profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("eroare la obținerea listei de utilizatori") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("eroare la obținerea listei de utilizatori") } }
Te rog, spune-mi unde lucrezi acum și ce faci.
Cum întrerupe planificatorul o goroutine care intră într-un ciclu infinit?
De ce ești mândru ca dezvoltator? Care proiect sau sarcină consideri cea mai semnificativă?
Este normal să trecem direct de la serviciul de comandă la serviciul de plată?
Lecturile se făceau cu maestrul, cu replica sau cum erau distribuite?
Ce sunt TCP și UDP, care este diferența?
Ce este arhitectura curată? De ce este necesară?
Vorbește despre experiența ta în [companie].
La ce folosește Select în Go?
Serviciul nostru de webhook de plată este cu stare?
Vorbește despre sarcini și cazuri interesante legate de optimizarea sub sarcină.
Ofertă: 320k brut (~280k net) + bonus trimestrial de 20%. Ce părere ai despre condiții?
[nume] a întrebat: păstrând poziția unui element mai mic decât X, care va fi poziția?
De unde provine memoria pentru variabile? Ce este un alocator de memorie?
Cu ce baze de date ați lucrat și la ce nivel? Mai multe detalii despre PostgreSQL, Redis, ClickHouse.
Cunoști consola Linux?
Ce listă de comenzi folosești în fiecare zi?
Vorbește-mi despre struct{} structură goală. Cazuri de utilizare, cât spațiu de memorie ocupă?
Ce niveluri de izolare a tranzacțiilor PostgreSQL cunoști?