Sobes.tech

Golang

Erzähle mehr über das Projekt bei Avito — war es das einzige Projekt in drei Jahren?

Senior
218

Welchen Typ hat msg in der Goroutine und warum muss es als Argument übergeben werden?

Senior
181

An welcher Stelle sollte defer resp.Body.Close() gemacht werden?

Senior
178

/* Dem Entwickler wurde die Aufgabe übertragen, einen Benachrichtigungsversanddienst zu schreiben. Anforderungen: - Die Methode Send soll Nachrichten parallel versenden. - Es dürfen nicht mehr als maxworkers HTTP-Anfragen gleichzeitig ausgeführt werden. - Wenn mindestens ein Versand fehlschlägt, sollen die anderen gestoppt und ein Fehler zurückgegeben werden. - Die Methode soll die Abbruchbedingung korrekt behandeln. - Alle Ressourcen sollen ordnungsgemäß freigegeben werden. - Die Methode kann gleichzeitig aus verschiedenen Goroutines aufgerufen werden. - Client soll die Anzahl der erfolgreich gesendeten Nachrichten speichern. Es ist eine Code-Review durchzuführen, Probleme zu finden und den Code zu korrigieren.

Senior
178

func (c *Client) Send(ctx context.Context, messages []Message, maxWorkers int) error { sem := make(chan struct{}, maxWorkers) var wg sync.WaitGroup var resultErr error var once sync.Once for _, msg := range messages { wg.Add(1) go func(msg Message) { defer wg.Done() sem <- struct{}{} defer func() { <-sem }() body, err := json.Marshal(msg) if err != nil { once.Do(func() { resultErr = err; cancel() }) return } req, _ := http.NewRequestWithContext( ctx, http.MethodPost, c.url, bytes.NewReader(body), ) req.Header.Set("Content-Type", "application/json") resp, err := c.httpClient.Do(req) if err != nil { once.Do(func() { resultErr = err; cancel()}) return } defer resp.Body.Close() if resp.StatusCode >= 500 { once.Do(func() { resultErr = fmt.Errorf("server error") cancel()}) return } c.sentCount.Add(1) time.Sleep(time.Second) }(msg) } wg.Wait() }

Senior
177

Gibt es Absprachen mit anderen Arbeitgebern oder befindest du dich noch im Interviewprozess?

Senior
158

Welche Erfahrung haben Sie mit SQL? Können Sie Abfragen schreiben und optimieren?

Senior
157

Was sind schnelle Spiele?

Senior
155

Wie ist Ihre allgemeine kommerzielle Erfahrung in der Entwicklung mit Go?

Senior
154

Erzähl mir von AlleWerkzeuge — warum bist du gekommen und warum bist du gegangen?

Senior
153

sentCount wird ohne Synchronisation übertragen — wie kann man das beheben?

Senior
145

Wird es angenehm sein, mit technischer Dokumentation auf Englisch zu arbeiten?

Senior
140

Warum wird resultErr nicht direkt aus der Goroutine zurückgegeben?

Senior
139

Was suchst du in einem neuen Projekt? Welche Technologien interessieren dich? Was möchtest du an einem neuen Arbeitsplatz nicht sehen?

Senior
139

Wo enden die Kontexte in diesem Code?

Senior
131

Was passiert, wenn man den Kontext bei einer Datenbankabfrage nicht übergibt?

Senior
130

Wann hilft der Index nicht oder schadet sogar?

Senior
124

Welche Phasen (Stages) gibt es typischerweise in einer CI/CD-Pipeline für einen Go-Service?

Senior
90