Sobes.tech

Golang

Parle-moi de ton expérience chez Tinkoff — comment as-tu été embauché et quelles étaient tes tâches?

Middle+
КуперКупер
83

func collectRTT(ctx context.Context, urls []string) (map[string]time.Duration, error) { pingMap := make(map[string]time.Duration, len(urls)) var mu sync.Mutex var wg sync.WaitGroup errCh := make(chan error, 1) for _, url := range urls { wg.Add(1) go func(u string) { defer wg.Done() dur, err := rtt(ctx, u) if err != nil { select { case errCh <- fmt.Errorf("échec de rtt %s, %w", u, err): default: } return } mu.Lock() pingMap[u] = dur mu.Unlock() }(url) } wg.Wait() close(errCh) if err := <-errCh; err != nil { return nil, err } return pingMap, nil }

Senior
СБК ПАРУС
83

Quel est le principal langage de programmation et quels autres langages connais-tu, y compris l'expérience non commerciale?

Middle+
Озон банк
83

func (p *Pool) Stop() { p.mu.Unlock() // Maintenant, il est sûr de fermer le canal close(p.tasks) // signal aux workers : pas de nouvelles tâches, lire le reste p.wg.Wait() // attendre que toutes les goroutines se terminent p.cancel() // annuler le contexte au cas où fmt.Println("Pool arrêté.") } // ForceStop arrête de force tous les workers sans attendre la fin des tâches. // Les workers seront interrompus immédiatement via le contexte. func (p *Pool) ForceStop(timeout time.Duration) { fmt.Printf("Arrêt forcé du pool (timeout : %v)...\n", timeout) // Bloquer l'ajout de nouvelles tâches p.mu.Lock() p.isOpen = false p.mu.Unlock() // Fermer le canal pour que les workers ne prennent pas de nouvelles tâches close(p.tasks) // Annuler le contexte – cela interrompra toutes les tâches en cours p.cancel() // Donner un temps limité pour finir done := make(chan struct{}) go func() { p.wg.Wait() close(done) }() select { case <-done: fmt.Println("Pool arrêté de force (tous les workers terminés)") case <-time.After(timeout): fmt.Println("Pool arrêté de force (timeout, des goroutines peuvent rester en suspens)") } }

Senior
Pasul LTD
83

À quoi sert HAVING et pourquoi pas WHERE?

Senior
OZONOZON
83

Parle-moi des types de données en Go.

Middle
RWB
83

Comment modifier le code pour que le résultat soit 456 au lieu de 123?

Middle
Ozon FreshOzon Fresh
83

Quels types de transactions connais-tu ? À quoi servent-ils ?

Senior
Small
83

Tu as mentionné qu'il y avait des problèmes avec les index — peux-tu en parler en détail?

Senior
OkkoOkko
83

Que se passe-t-il lors de la lecture d'un canal fermé en Go?

Senior
Магнит Тех
83

Quelle est la différence entre TCP et UDP ? Pourquoi TCP est-il utilisé pour HTTPS ?

Middle+
Ozon ФинтехOzon Финтех
83

As-tu déjà rencontré le concept de sharding?

Middle
VKVK
83

Connaissez-vous les modèles fan-in/fan-out et pipeline ? Qu'est-ce que c'est ?

Senior
техвил
83

Peut-on ajouter ou supprimer des éléments dans une carte pendant le processus d'évacuation?

Senior
VK CloudVK Cloud
83

Qu'est-ce qu'une goroutine ? En quoi diffère-t-elle d'un thread du système d'exploitation ? Qui gère les goroutines ?

Middle+
YadroYadro
83

Quelles sont vos attentes salariales et le format préféré de présentation?

Middle
Nau
83

Combien de goroutines peut-on créer sur une seule machine ? Comment compter ?

Senior
СБК ПАРУС
83

Quelle est la différence entre l'incrustation (embedding) et la composition en Go?

Senior
техвил
83

Combien de connexions TCP maximum peut-on maintenir sur un seul serveur?

Senior
ООО Макс
83

Quelle est la complexité de l'algorithme et où est l'arbre ici?

Senior
OkkoOkko
83
/412