/* Dotā rakstzīmju virkne. Atrodiet indeksu i un j pāru skaitu (i <= j), starp kuriem nav atkārtotu rakstzīmju. Vērtība "aba" ir 5: var būt ASCII [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */
Golang
Vai esat izmantojis publiskās mākoņpakalpojumus? Ja jā, ar kuriem pakalpojumu sniedzējiem un pakalpojumiem?
Vai jums ir pieredze izplatītu sistēmu atbalstē vai izstrādē?
Kā jūs strādājat pie arhitektūras — vai komandā ir arhitekts, platforma, komiteja?
Cik ātri darbosies lineārā meklēšana visiem backendiem ar augstu RPS (piemēram, 30 000 RPS un 10 backendiem)?
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 skaits 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 satur visus balansētos instanču adreses func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }
Cik daudz hostos darbojās pakalpojums un cik instances tika palaistas?
/** :-))) :-(( "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) }
Cik aktīvas ir meklēšana? Varbūt jau ir kādas piedāvājumi?
Kā ātri pārbaudīt, vai logā ir visi simboli (divu kartes salīdzinājums)?
Kāds bija lielākais datu apjoms, ar kuru strādājāt datu bāzēs?
Pastāsti vairāk par savu pirmo darba vietu no 2019. līdz 2021. gadam.
Vai ir vienkāršākas un ātrāks veids, kā līdzsvarot slodzi, nevis izvēlēties mazāk noslogoto backend?
Cik cilvēku bija iesaistīti lielākajā projektā, kurā esi strādājis? Mazāk nekā desmit, desmiti, simti?
Kā risināt paralēlo pieprasījumu ierobežošanas problēmu izplatītā sistēmā ar vairākām instancēm, ja lietotājam jāgaida, nevis jāsaņem kļūda?
Atrodiet sintakses kļūdas labotajā kodā
Kāpēc Message Service ziņas iet tieši caur gRPC, nevis caur Kafka?
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 }
Īstenojiet metodi BulkCreateUsers, balstoties uz proto failu: izveidojiet projekta struktūru, biznesa loģiku, krātuvi un SQL vaicājumus, ievērojot SOLID principus
Vai ir iespējams izveidot pastāvīgu atmiņu, neizņemot karti?