Kaip dirbate su architektūra — ar komandoje yra architektas, platforma, komitetas?
Golang
Ar turite patirties palaikant ar kuriant paskirstytas sistemas?
Ar naudojote viešąsias debesų paslaugas? Jei taip, kokius tiekėjus ir paslaugas?
Kiek greitai veiks linijinis visų backend'ų paieška esant aukštam RPS (pavyzdžiui, 30 000 RPS ir 10 backendų)?
type Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex N int K time.Duration } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { if len(b.backends) == 0 { return nil, fmt.Errorf("Backends skaičius slice 0") } b.mu.Lock() index := b.index for b.backends[index].banned { b.index = (b.index + 1) % len(b.backends) index = b.index } b.index = (b.index + 1) % len(b.backends) b.mu.Unlock() backend := b.backends[index] resp, err := backend.Backend.Invoke(ctx, req) if err != nil && backend.countErrors < b.N { backend.mu.Lock() backend.countErrors += 1 if backend.countErrors == b.N { backend.banned = true go func() { time.Sleep(b.K) backend.mu.Lock() defer backend.mu.Unlock() backend.banned = false backend.countErrors = 0 }() } backend.mu.Unlock() } return resp, err } // addrs apima visų balansuotų instancijų adresus func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }
Kiek hostuose veikė paslauga ir kiek instancijų buvo paleista?
Koks didžiausias duomenų kiekis, su kuriuo dirbote duomenų bazėse?
Papasakok daugiau apie savo pirmąją darbo vietą nuo 2019 iki 2021 metų.
Kaip greitai patikrinti, ar lange yra visi simboliai (dviejų žemėlapių palyginimas)?
Kiek aktyvios paieškos? Galbūt jau yra keletas pasiūlymų?
Kokia buvo didžiausia užklausų skaičius per sekundę labiausiai apkrautoje paslaugoje?
Kiek žmonių dalyvavo didžiausiame projekte, kuriame dirbote? Mažiau nei dešimt, dešimtки, šimtai?
/** :-))) :-(( "ab :-)" = "ab " "ab :-)))" = "ab " "ab :-)))(" = "ab (" "ab ):-)" = "ab )" ":-)" = "" **/ func deleteP(str string) string { n := len(str) res := make([]byte, 0, n) i := 0 for i < n { if str[i] == ':' && str[i+1] == '-' && (str[i+2] == ')' || str[i+2] == '(') { ch := str[i+2] i += 2 for i < n && str[i] == ch { i++ } } else { res = append(res, str[i]) } } return string(res) }
Kaip išspręsti paralelinių užklausų apribojimo problemą paskirstytoje sistemoje su keliomis instancijomis, jei vartotojas turi laukti, o ne gauti klaidą?
Ar yra paprastesnių ir greitesnių būdų paskirstyti apkrovą, nei pasirinkti mažiausiai apkrautą backend'ą?
Raskite sintaksės klaidas pataisytame kode
func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) for right := 0; right < len(s); right++ { hm[s[right]]++ for hm[s[right]] > 1 { hm[s[left]]-- if hm[s[left]] == 0 { delete(hm, s[left]) } left++ } result += (right - left + 1) } return result }
Kodėl Message Service žinutės eina tiesiogiai per gRPC, o ne per Kafka?
Įgyvendinkite metodą BulkCreateUsers remiantis proto failu: sukurkite projekto struktūrą, verslo logiką, saugyklą ir SQL užklausas laikantis SOLID principų
""" Kino salės vietos išdėstytos vienoje eilėje. Naujas žiūrovas pasirenka vietą, kad sėdėtų kuo toliau nuo kitų žiūrovų eilėje. Kitaip tariant, atstumas nuo tos vietos, į kurią jis sės, iki artimiausio žiūrovo turi būti maksimalus. Yra garantija, kad eilėje visada yra laisvų vietų ir jau sėdi bent vienas žiūrovas. Parašykite funkciją, kuri pagal duotą vietų eilę (masyvą iš nulinių ir vienetinių reikšmių) grąžins atstumą (nuostatų tarp sėdynių skaičių) nuo pasirinktos vietos iki artimiausio žiūrovo. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] -> 3 [1, 0, 0, 0] -> 3 place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }