/* Verilən simvol sətiri. i və j indeksləri cütlüyünün sayını tapın (i <= j), bunlar arasında təkrarlanan simvollar yoxdur. "aba" sətiri üçün cavab 5: ASCII ola bilər [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */
Golang
İctimai buludlardan istifadə etmisinizmi? Əgər bəli, hansı təminatçılar və xidmətlər?
Paylanmış sistemlərin dəstəyi və ya inkişafı sahəsində təcrübəniz varmı?
Memarlıq üzərində necə işləyirsiniz — komandada memar, platforma, komitə var mı?
Yüksək RPS (məsələn, 30.000 RPS və 10 backend) zamanı bütün backend-lərin xətti axtarışının işləmə sürəti nə qədər olacaq?
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 sayısında 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 conțin adresele tuturor instanțelor echilibrate func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }
Xidmət neçə hostda işləyirdi və neçə instansiya işə salınmışdı?
/** :-))) :-(( "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) }
Axtarışlar nə qədər aktivdir? Bəlkə artıq bəzi təkliflər var?
Pəncərədə bütün simvolların olduğunu necə sürətli yoxlamaq olar (iki xəritəni müqayisə etmək)?
Verilənlər bazaları ilə işləyərkən ən böyük məlumat həcmi nə idi?
2019-dan 2021-ə qədər ilk iş yeriniz haqqında daha ətraflı danışın.
Yükü ən az yüklü backend-i seçmək əvəzinə daha sadə və daha sürətli yük balanslaşdırma üsulları varmı?
İşləmiş olduğunuz ən böyük layihədə neçə nəfər iştirak edib? Onlardan az, onlarca, yüzlərlə?
Çox sayda instansiyaya malik olan paylanmış sistemdə paralel sorğuların məhdudiyyət problemini necə həll etmək olar, istifadəçi səhv almaq yerinə gözləməlidirsə?
Düzəldilmiş kodda sintaksis səhvlərini tapın
Niyə Message Service mesajları birbaşa gRPC vasitəsilə göndərilir, Kafka vasitəsilə deyil?
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 }
Proto fayla əsaslanaraq BulkCreateUsers metodunu həyata keçirin: layihə strukturunu, biznes məntiqini, repository və SQL sorğularını SOLID prinsiplərinə uyğun yaradın
Xərtəni çıxarmadan sabit yaddaş etmək mümkündürmü?