Golang
// GetUsersList gibt eine Liste von Benutzern zurück. (In der Datenbank speichern wir etwa 1 Million Benutzer) // Wird verwendet, um die Benutzerliste im Admin-Panel anzuzeigen. Wenn isActive = true, werden nur aktive Benutzer zurückgegeben. 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("Fehler beim Abrufen der Benutzerliste") } var users []User // Informationen zu den Benutzern ausfüllen. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Liste der E-Mails des Benutzers abrufen err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("Fehler beim Abrufen der Benutzerliste") } 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 { emails[i] = strings.ToLower(e) } } user.Emails = emails // Informationen zum Profil aus der VKontakte API abrufen profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("Fehler beim Abrufen der Benutzerliste") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("Fehler beim Abrufen der Benutzerliste") } }
Was war deine schwierigste und interessanteste Aufgabe?
Wozu dient der Kontext in Go?
Wie löst man das Problem des Data Race, über das wir gesprochen haben?
Kannst du einen denkwürdigen Fall hervorheben, auf den du stolz bist?
Was wird beim Ausführen des Programms ausgegeben: 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) // Arbeitssimulation }() } wg.Wait() fmt.Println(len(counter)) }
Warum haben Sie genau so viele Dienste gemacht? Wie lief die Entscheidung ab — einen Dienst zu machen oder nicht?
Kennst du die Linux-Konsole?
Was ist optimistic locking?
Erzählen Sie mir von sich und Ihrem aktuellen Arbeitsplatz
Welche Isolationsstufen gibt es in PostgreSQL und vor welchen Anomalien schützen sie?
Erzähle mir von deiner Erfahrung
Was wissen Sie über das Paket sync/atomic?
Welche Praktiken gibt es, um die Größe des Docker-Images zu verringern?
Haben Sie jemals ein komplexes Projekt von Grund auf neu umgesetzt?
Haben Sie die Kubernetes YAML-Manifeste für CI/CD selbst geschrieben oder bearbeitet?
Warum wird in Serversystemen eine Aufgabenwarteschlange zwischen dem Empfang der Anfrage und deren Verarbeitung verwendet? - Um den Speicherverbrauch zu reduzieren - Um die Ausführung jeder einzelnen Aufgabe zu beschleunigen - Um Lastspitzen auszugleichen und die Handler nicht zu überlasten - Um Netzwerkfehler zu vermeiden
Was ist ein Slice? Wie ist er im Inneren aufgebaut?
Haben Sie mit agilen Methoden wie Scrum oder Kanban gearbeitet?
Erzähle mir, warum du dich entschieden hast, nach neuen Projekten zu suchen und welche Art von Entwicklung du dir wünschst.