გქონდათ თუ არა გამოცდილება განაწილებული სისტემების მხარდაჭერაში ან განვითარებაში?
Golang
/* Берилген символдар жолы. i жана j көрсөткүчтөрүнүн жуптарын санын табыңыз (i <= j), алардын ортосунда кайталанган символдор жок. "aba" жолу үчүн жооп 5: ASCII болушу мүмкүн [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */
თქვენ გამოიყენეთ საჯარო ღრუბლები? თუ კი, რომელ მეწოდებლებს და სერვისებს?
როგორ მუშაობთ არქიტექტურაზე — გუნდში არქიტექტორი, პლატფორმა, კომიტეტი არსებობს?
რამდენად სწრაფად იმუშავებს ყველა backend-ის ხაზოვანი ძიება მაღალი RPS-ის დროს (მაგალითად, 30 000 RPS და 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("ბალანსის რაოდენობა სლაისში 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 ყველა ბალანსირებული ინსტანციის მისამართებს შეიცავს func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }
რამდენი ჰოსტზე მუშაობდა სერვისი და რამდენი ინстанცია იყო დაწყებული?
როგორ სწრაფად გადაამოწმოთ, რომ ფანჯარაში ყველა სიმბოლოა (ორი რუკის შედარება)?
რამდენი მონაცემი გქონდათ ბაზებში მუშაობის დროს?
რამდენად აქტიურია ძიებები? იქნებ უკვე არსებობს რამდენიმე შეთავაზება?
გთხოვთ, უფრო დეტალურად ისაუბრეთ თქვენს პირველ სამუშაო ადგილზე 2019-დან 2021-მდე.
/** :-))) :-(( "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) }
რამდენი ადამიანი იყო ჩართული თქვენს მუშაობაში ყველაზე დიდ პროექტზე? ნაკლები ათი, ათეულები, ასეულები?
როგორ გადავწყვიტოთ პარალელური მოთხოვნების შეზღუდვის პრობლემა განაწილებულ სისტემაში, თუ მომხმარებელმა უნდა ელოდოს შეცდომის მიღების ნაცვლად?
არის თუ არა უფრო მარტივი და სწრაფი გზები დატვირთვის ბალანსისთვის, ვიდრე ყველაზე ნაკლებად დატვირთული backend-ის არჩევა?
მოძებნეთ სინტაქსის შეცდომები გამოსწორებულ კოდში
რატომ მიდიან Message Service შეტყობინებები პირდაპირ gRPC-ით, არა 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 }
პროტო ფაილზე დაფუძნებული BulkCreateUsers მეთოდის განხორციელება: პროექტის სტრუქტურის, ბიზნეს ლოგიკის, რეპოზიტორიის და SQL-საკითხების შექმნა SOLID პრინციპების დაცვით
""" კინოში ადგილები ერთ რიგშია განლაგებული. ახალი მაყურებელი ადგენს ადგილს, მოსახერხებლად მაქსიმალურად მოშორებით სხვა მაყურებლებს. სხვაგვარად რომ ვთქვათ, იმ ადგილიდან, სადაც ის დაჯდება, ყველაზე ახლოს მყოფ მაყურებელთან მანძილი უნდა იყოს მაქსიმალური. გაინტერესებს, რომ რიგში ყოველთვის თავისუფალი ადგილები არსებობს და უკვე მინიმუმ ერთი მაყურებელი ზის. დაწერეთ ფუნქცია, რომელიც მოცემული ადგილების რიგის (ნოლებისა და ერთების მასივი) საფუძველზე დააბრუნებს მანძილს (საკალათო შორის სივრცეების რაოდენობას) ამ ადგილიდან ყველაზე ახლოს მყოფ მაყურებელთან. [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 { }