Golang
Parlez-moi du motif Semaphore.
Surveillez-vous vous-même la surveillance ou avez-vous une équipe séparée?
Pourquoi l'approche de Go en matière de concurrence est-elle meilleure que dans d'autres langages?
Parlez de votre expérience avec des systèmes à haute charge. Avez-vous déjà dû résoudre des problèmes de distribution et d'équilibrage du trafic?
Si l'opération dure 10-12 minutes et qu'il y a une écriture active et que les données changent, il n'y a pas eu d'effets secondaires ?
Quelle est la complexité de l'algorithme en termes de temps et de mémoire?
Parlez des niveaux d'isolation des transactions : Read Uncommitted, Read Committed, Repeatable Read, Serializable.
Avez-vous déjà eu à traiter des tâches d'architecture ? Comment les décisions architecturales ont-elles été prises ?
[nom] a demandé : parlez-moi des primitives de synchronisation en GoLang.
Nous voulons maintenant aller sur HeadHunter et rechercher des candidats par filtres — comment l'architecturer ?
D'où provenaient les données ? Les logisticiens les envoyaient-ils ou comment ?
Que peut-on faire pour éviter l'évacuation de la carte dans un service à haute charge ?
Qu'est-ce que la charge moyenne, comment la vérifier et à quoi faire attention?
Les données du conteneur sont-elles supprimées après son arrêt?
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() }
Pour quelles tâches avez-vous utilisé des goroutines et des canaux?
Comment avez-vous influencé la modification du processus avec l'analyse ?
Comment la plateforme RH est-elle techniquement conçue dans l'ensemble?
Comment avez-vous géré la situation lorsque les comptes lors des transferts atterrissaient sur différents shards?
Comment convertir un nombre en système binaire?