Golang
Cum să declanșezi panica atunci când lucrezi cu un canal? Ce se întâmplă în timpul operațiilor cu un canal nil și un canal închis?
Cum se face la nivel de Go — ideologic, pentru a trimite răspunsul utilizatorului și în același timp pentru a trimite datele în analiză?
func (p *Pool) Stop() { p.mu.Unlock() // Acum este sigur să închidem canalul close(p.tasks) // semnal către lucrători: nu vor mai fi sarcini noi, citiți restul p.wg.Wait() // așteptăm finalizarea tuturor goroutine-urilor p.cancel() // anulăm contextul, dacă e cazul fmt.Println("Pool oprit.") } // ForceStop oprește forțat toți lucrătorii fără a aștepta finalizarea sarcinilor. // Lucrătorii vor fi întrerupți imediat prin intermediul contextului. func (p *Pool) ForceStop(timeout time.Duration) { fmt.Printf("Oprire forțată a pool-ului (timeout: %v)...\n", timeout) // Blochează adăugarea de sarcini noi p.mu.Lock() p.isOpen = false p.mu.Unlock() // Închide canalul pentru ca lucrătorii să nu mai ia sarcini noi close(p.tasks) // Anulează contextul – acest lucru va întrerupe toate sarcinile în curs p.cancel() // Oferă un timp limitat pentru finalizare done := make(chan struct{}) go func() { p.wg.Wait() close(done) }() select { case <-done: fmt.Println("Pool oprit forțat (toți lucrătorii au fost terminați)") case <-time.After(timeout): fmt.Println("Pool oprit forțat (timeout, pot rămâne goroutine suspendate)") } }
Ce protocoale de nivel aplicație funcționează peste TCP și UDP?
Ce sunt replicarea, sharding-ul și partiționarea?
tip Sem interfață { Lock() error //returnează o eroare dacă canalul este plin TryLock() bool // încercăm doar să blocăm, dacă reușim, returnează true Release() //eliberarea canalului Cap() int // numărul de goroutines FreeSpace() int //arată cât spațiu liber este în canal } //structură //channel - gândește-te la un buffer //capacity int //mutex
Câtă experiență comercială ai în Go?
Spune-mi despre tine, experiența ta, cum ai ales direcția IT și dezvoltarea, de ce exact Go, cum ai avansat în carieră?
Ce sunt procesele zombie și cum să le combatem?
Ce este ACID? Explică fiecare proprietate.
De ce nu s-a putut construi totul pe ClickHouse și pur și simplu să se afișeze metricile pe front printr-un serviciu?
Povestiți despre echipă și metodologia de lucru.
Descrieți cerințele pentru o aplicație Python + OpenGL pentru morfarea obiectelor cu un glisor.
Ai lucrat cu arbori AST în Go? Ce dezavantaje vezi în implementarea actuală?
Povesti despre ultimul eșec (incident în producție) — cum au găsit, cum au rezolvat, cine a rezolvat
Cum vei lucra cu două modele în Blender dacă nu le-ai folosit niciodată?
Ce probleme pot apărea la utilizarea triggerelor?
Cum sunt structurate podurile în Kubernetes? Pe ce tehnologii se bazează izolarea? Ce tipuri de namespace cunoști?
Agregatul funcționează întotdeauna la nivelul unei singure tranzacții. Ce altceva este important de știut despre agregate în DDD?
Cum găsești o interogare lentă în PostgreSQL și cum o optimizezi?