Sobes.tech

Golang

Zašto Go? Odakle si počeo, kako si došao do ovog jezika?

Middle+
VKVK
59

Koje primitivne sinhronizacije gorutina postoje u Go?

Middle+
СБЕРСБЕР
59

Ispričaj o map u Go.

Middle
RWB
59

Ažuriranja dokumenata stižu u servis message Document { string Url = 1; // URL dokumenta, njegov jedinstveni identifikator uint64 PubDate = 2; // deklarisano vreme objavljivanja dokumenta uint64 FetchTime = 3; // vreme primanja ove ažuriranja dokumenta, može se smatrati identifikatorom verzije. Par (Url, FetchTime) je jedinstven. string Text = 4; // tekst dokumenta uint64 FirstFetchTime = 5; // inicijalno nedostaje, treba popuniti } Dokumenti mogu stizati u bilo kom redosledu (ne u redosledu u kojem su ažurirani), i mogu postojati duple poruke. Potrebno je na izlazu formirati iste poruke, ali sa ispravljenim poljima prema sledećim pravilima (sve niže važi za grupu dokumenata sa istim poljem Url): Polje Text i FetchTime treba da budu takvi kakvi su u dokumentu sa najvećim FetchTime koji je do sada primljen. Polje PubDate treba da bude takvo kakvo je u poruci sa najmanjim FetchTime. Polje FirstFetchTime treba biti jednako minimalnoj vrednosti FetchTime. Drugim rečima, u svakom trenutku uzimamo PubDate i FirstFetchTime od prve verzije primljene do sada (ako ih sortiramo po FetchTime), a Text od poslednje. Interfejs u kodu može biti implementiran ovako: type Processor interface { Process(doc *Document) (*Document, error) } Ovaj kod će raditi u servisu koji čita poruke iz reda (Kafka ili slično), i takođe zapisuje rezultat u red. Ako Process vrati Null, ništa se ne zapisuje u red.

Senior
VKVK
59

Kako ste uticali na promenu procesa sa analizom?

Senior
AvitoAvito
59

Чиме сте најчешће радили? Које технологије сте користили?

Middle+
OZONOZON
59

Можеш ли да обрадиш панику у једном од defer-ова?

Senior
МВидео/эльдорадо
59

Kako će se Redis i Postgres sinhronizovati? Uostalom, mogu se razlikovati.

Senior
МВидеоМВидео
59

Šta je tracing? Kako ga voditi?

Senior
I-teco
59

Koje je vaše ukupno iskustvo u komercijalnom razvoju u Go?

Senior
IBS
59

главни пакет увоз ( "io" "log" "net/http" ) функција handler(w http.ResponseWriter, r *http.Request) { го func() { resp, err := http.Get("[link]") ако err != nil { лог.Println("грешка у захтеву:", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) w.Write(body) }() } func main() { http.HandleFunc("/proxy", handler) log.Fatal(http.ListenAndServe(":8080", nil)) }

Middle+
MAX LTD Group
59

Koji stil Saga su koristili: koreografiju ili orkestraciju?

Senior
А7
59

Kako postavljate prioritete između novih funkcija, tehničkog duga i ispravki grešaka?

Senior
НООСФЕРА
59

Kada ne možemo uhvatiti paniku, da li će se aplikacija i dalje zatvoriti?

Middle+
МВидео/эльдорадо
59

Seti se situacije kada si zapao u ćošak i nisi znao kako da rešiš problem

Senior
I-teco
59

Šta je defer i zašto se koristi? U kom redosledu se izvršavaju defer pozivi ako ih ima više u istoj funkciji?

Middle
Effective Technologies
59

Koje metrike proizvoda prikupljate?

Middle+
КуперКупер
59

Šta će se desiti ako je defer van goroutine, a ne unutar nje?

Senior
X5 techX5 tech
59

Prema CV, trenutno radite u [organizacija], da ли је то тачно?

Middle
РедСофт
59

/* Postoji aplikacija s arhitekturom mikroservisa. Mikroservis se može apstrahirati pomoću sučelja Backend. Za pristup primjerku mikroservisa, možete koristiti tip BackendImpl, koji je već implementiran. Svaki mikroservis ima nekoliko desetaka pokrenutih primjeraka, od kojih je svaki dostupan putem svoje adrese addr. Međutim, pojedinačni primjerci mikroservisa nisu pouzdani: the mogu pasti, biti nedostupni ili preopterećeni. Stoga morate implementirati tip Balancer, koji također implementira sučelje Backend i vrši balansiranje opterećenja na strani klijenta između primjeraka mikroservisa, birajući svaki put **najmanje opterećen** primjerak. */ type Request interface{} type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr sadrži ip:port određenog primjerka func NewBackend(addr string) *BackendImpl type Balancer struct { // TODO } var _ Backend = &Balancer{} // addrs sadrže adrese svih uravnoteženih primjeraka func NewBalancer(addrs []string) *Balancer { // TODO }

Middle
Яндекс
59
/411