თქვენ შეგიძლიათ მოკლედ ისაუბროთ თქვენს გამოცდილებაზე? რა არის თქვენი ძირითადი პროგრამირების ენა? რამდენი წლის გამოცდილება გაქვთ ინდუსტრიულ განვითარებაში?
Golang
რა სარგებლობა აქვს JWT-ს სერვერზე სესიის შენახვასთან შედარებით?
სათვარი 60-ზე buf = buf[:0] — რა ხდება აქ?
რა არის შენი ძირითადი პროგრამირების ენა? იყენებ C++ ან Python?
რამდენი მეხსიერება გამოყოფილია თავდაპირველად ბუფერზე?
func Pipe(p Producer, c Consumer) error { // TODO buf := make([]any, 0, MaxItems) cookies := make([]int, 0) flush := func() error { if len(buf) == 0 { return nil } if err := c.Process(buf); err != nil { return err } for _, cookie := range cookies { if err := p.Commit(cookie); err != nil { return err } } buf = buf[:0] cookies = cookies[:0] return nil } for { items, cookie, err := p.Next() if err != nil { flush() return err }
გამოყენებიხართ რაიმე ღრუბლოვან სერვისებს? Yandex, Google, AWS ან სხვა ღრუბლოვანი სერვისები?
რა მოხდება თუ Consumer.Process შეცდომას გამოიწვევს — მონაცემები ბუფერიდან არ დაიკარგება?
რატომ არის backend.Invoke-ის გამოძახება მუტექსის გარეთ?
შესაძლებელია თუ არა maxSegment ალგორითმის გაუმჯობესება?
გარდა Go-ს, რა პროგრამირების ენებს იყენებთ საკუთარ ან კომერციულ განვითარებაში?
მიცემულია S სტრიქონი, საჭიროა ამ სტრიქონში არსებული ყველა სიმბოლოს მინიმუმ ერთხელ შემავალი ქვესაწერიების რაოდენობის გამოთვლა. მაგალითები: "abca" -> 3 // abc, bca, abca "aa" -> 3 // aa, a, a, "ffg" -> 2 // ffg, fg
რა რაოდენობის მოთხოვნები გაქვთ ამჟამად მაღალი დატვირთვის დროს ერთ წამში?
ეს არის სიმბოლოების სერია. იპოვეთ ინდექსების i და j წყვილების რაოდენობა (i <= j), რომელთა შორისაც, ჩათვლით, არ არის განმეორებადი სიმბოლოები. "аба" სერიისთვის პასუხია 5: [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") "acbb" სერიისთვის პასუხია ?:
რა კრიტერიუმებს გამოიყენებთ დამსაქმებლის არჩევისას? რა არის თქვენთვის ყველაზე მნიშვნელოვანი?
სად ცხოვრობ, სად ხარ?
გსურთ თუ არა საჭიროების შემთხვევაში ან პირადი სურვილით სხვა პროგრამირების ენაზე გადასვლა?
რომელ პროგრამირების ენაზე მუშაობთ? რატომ წარმოიქმნა სინტაქსის სირთულეები?
// TODO backends []*BackendImpl index int mu sync.Mutex func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { b.mu.Lock() index := b.index if b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) b.mu.Lock() defer b.mu.Unlock() b.index += 1 return resp, err } // addr содержит ip:port конкретного экземпляра func NewBackend(addr string) *BackendImpl // addrs содержат адреса всех балансируемых экземпляров func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs)) for _, addr := range addrs { backends = append(backends, NewBackend(addr)) } return &Balancer{ backends: backends, } }
მოდით ვისაუბროთ მიკროწესვიან არქიტექტურაზე. რა იყო ბოლო დროს მეტი: მხარდაჭერა თუ განვითარება?