Golang
Mai mulți consumatori din același grup de consumatori pot citi aceeași partiție în același timp?
Ce microservicii ai dezvoltat?
Ai lucrat întotdeauna ca outsourcing/outstaff?
Ce sunt goroutine-urile în Go și în ce diferă de firele de sistem?
De ce ai alege un canal în loc de WaitGroup/errgroup? Cu ce este mai rău errgroup?
// Scrieți un handler asincron de sarcini ca bibliotecă // Clientul transmite un obiect (Task) cu date pentru executarea sarcinii, // în exemplul nostru vom folosi o structură goală. // Handler-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ă în procesare dacă există procesatoare libere. // Simulăm durata procesării cu time.Sleep(5*time.Second). // De îndată ce o sarcină s-a finalizat, luăm următoarea din coadă. // Dacă coada este goală, așteptăm sarcini noi de la clienți. // Cu un asterisc: completați structura Task și obțineți starea sarcinilor printr-o solicitare separată package scheduler type Scheduler interface { AddTask(t Task) error Close() } type Task interface { Do() }
De ce a apărut necesitatea de a reduce alocările: a fost o solicitare a afacerii sau o inițiativă proprie a echipei?
Poți rescrie construcția de trimitere a sarcinilor folosind range?
Povestește despre experiența ta profesională într-o formă liberă, fără detalii tehnice aprofundate.
Câtă experiență comercială ai în Go?
Doriți muncă de la distanță full-time sau sunteți, de asemenea, dispus să luați în considerare opțiuni cu birou?
De ce cauți un nou loc de muncă, ce vrei să schimbi?
Luați în considerare activ ofertele? Există etape finale?
Redis era în toate cele trei centre de date?
Explică ce este câmpul inventory_code (cod) din tabelul de cărți, ce reprezintă?
În limbajul Go, există goroutines — fire ușoare. Poți explica cum înțelegi când trebuie să folosești o goroutine și când nu?
Spune-mi despre ultimul tău proiect.
Ce faci dacă termenul limită a trecut și apoi apare o bug critic în producție?
De ce ai folosit sync.Map în loc de o hartă normală cu Mutex?
func main() { c := make(chan int, 1000) for i := 0; i < 100; i++ { go foo(c) } sum := 0 for r := range c { sum += r } fmt.Println(sum) } func foo(c chan int) { r := rand.Int() for i := 0; i < r; i++ { c <- r } } --- func main() { c := make(chan int, 1000) var wg sync.WaitGroup wg.Add(100) for i := 0; i < 100; i++ { go func() { defer wg.Done() foo(c) }() } go func() { wg.Wait() close(c) }() sum := 0 for r := range c { sum += r } // // fmt.Println(sum) } func foo(c chan int) { r := rand.Int() for i := 0; i < r; i++ { c <- r } }