Golang
Ce te motivează acum să cauți un nou loc de muncă?
Ce este un slice în Go? În ce constă diferența dintre len și cap?
Normalizarea și denormalizarea tabelelor — vorbește-mi despre formele normale
Centrele de date erau copii complete între ele sau se completau? Pur și simplu rutai traficul între ele?
Ce volume de date au intrat în ClickHouse?
Aveți experiență cu Docker? Aveți experiență în scrierea Dockerfile-urilor de unul singur?
Este adevărat că indexul B-tree din PostgreSQL tinde să se extindă în lățime?
// 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") } }
Este normal să trecem direct de la serviciul de comandă la serviciul de plată?
Vorbește despre procesarea concurentă — ai un punct separat despre asta. Cum au limitat paralelismul? Câte conexiuni erau la PostgreSQL?
Serviciul nostru de webhook de plată este cu stare?
Explica diferența dintre LIFO și FIFO folosind un exemplu de stivă și coadă.
Cine realizează traducerea adreselor virtuale în adrese fizice?
De ce ai folosit mutex? Cum vezi condiția de cursă aici și de ce mapa nu este sigură pentru fire de execuție?
Cum au fost eliminate duplicatele? Nu se putea identifica un duplicat după ID? De ce să îmbogățești datele din Redis?
[nume] are experiență în operarea serviciilor — lucrul cu Kubernetes, Linux etc.?
Enumerați principalele tipuri de date în Go
Ce este un rune în Go?
Ce probleme apar apariția interacțiunii multi-thread și cum se rezolvă?
Ce altceva era în microserviciu în afară de procesarea asincronă?