Sobes.tech

Golang

Ce spune convenția Go despre utilizarea WaitGroup și tipurile de returnare (acceptarea interfețelor, returnarea tipurilor specifice)?

Senior
172

Ai decis să scrii WaitGroup pentru că a apărut un canal sau pentru că ai decis să scrii goroutines pentru ceva?

Senior
172

Aveți întrebări pentru mine?

Senior
171

Poți descrie ce folosești pentru a citi canalul în goroutine-ul lucrătorilor?

Senior
170

Poate o goroutine să scrie direct într-o altă goroutine pe un canal tamponat?

Senior
168

Vrei să scrii un pool de workeri clasic?

Senior
166

Ce tehnologie/unelte folosești?

Senior
166

Ce tipuri de indecși sunt în PostgreSQL în afară de B-tree?

Senior
165

// Clientul transmite un obiect (Task) cu date pentru executarea sarcinii, // în exemplul nostru vom folosi o structură goală. // // Scheduler-ul poate procesa nu mai mult de N sarcini simultan, // și nu mai mult de X sarcini pot fi puse în coadă pentru procesare. // Dacă nu există loc în coadă, se returnează imediat o eroare clientului. // // Sarcina este preluată pentru procesare dacă există procesatoare libere. // Simulăm durata procesării cu time.Sleep(5*time.Second). // De îndată ce o sarcină s-a terminat, luăm următoarea din coadă. // Dacă coada este goală, așteptăm sarcini noi de la clienți. // // Cu un asterisc: extindeți structura Task și obțineți starea sarcinilor printr-o solicitare separată. package scheduler type Scheduler interface { AddTask(t Task) error Close() } type scheduler struct { queue chan Task wg sync.WaitGroup } func New(workers, queue int) Scheduler { // implementare în așteptare } type Task interface { Do() }

Senior
164

Care a fost rolul tău în luarea deciziilor arhitecturale în timpul dezvoltării serviciului de căutare?

Senior
164

func New(workers, queue, int) Scheduler { s := &scheduler { queue := make(chan Task, queue) for i := 0; i < workers; i++ { wg.Add(1) go func() { defer wg.Done() for task := range s.queue { task.Do() } }() } } return s } func (s *scheduler) Close() { close(s.queue) s.wg.Wait() } type Task interface { Do() }

Senior
163

Ai folosit CTE? Spune-mi ce este.

Senior
162

Cum am putea gestiona extern erorile care apar în sarcini, dacă am dori să o facem?

Senior
161

Ai folosit contexte în practică? Spune-mi.

Senior
161

Este permisă munca doar pe teritoriul Federației Ruse?

Senior
160

Care este diferența dintre SELECT FOR UPDATE și SELECT FOR SHARE?

Senior
159

Se poate crea un index doar pe replică, dar nu pe master?

Senior
159

Mai există curse de date în implementare? În mod specific în metoda Keys, care returnează o felie de chei?

Senior
158

Tipuri de replicare în PostgreSQL

Senior
156

Aveți experiență în scrierea de operatori Kubernetes, administrarea operatorilor, Helm Chart?

Senior
155
/7