Sobes.tech

/* Микросервис архитектурасы менен колдонмо бар. Микросервис, Backend интерфейси аркылуу абстракцияланат. Микросервистин бир үлгүсүнө кирүү үчүн BackendImpl түрүн колдонсо болот, ал алдын ала ишке ашырылган. Ар бир микросервиске ондон ашык иштеп жаткан үлгүлөр бар, алардын ар бири өзүнүн дареги addr аркылуу жеткиликтүү. Бирок, микросервистин жеке үлгүлөрү ишенимдүү эмес: алар кулап, жеткиликтүү болбой же жүктөлүп кетиши мүмкүн. Ошондуктан, сиз Balancer түрүн ишке ашырышыңыз керек, ал да Backend интерфейсин ишке ашырып, кардар тараптан жүктү теңдөө иштерин жүргүзөт микросервис үлгүлөрүнүн ортосунда, ар бир жолу **аз жүктөлгөн** үлгүнү тандоого аракет кылат.

159

Эмне эң чоң маалымат көлөмү менен иштедиңиз жана окулуш/жазуу суроолорунун саны канча болду?

158

Өз тажрыйбаңыз жөнүндө кыскача айтып бере аласызбы? Эң негизги программалоо тилиңиз кайсы? Өнөр жай иштеп чыгууда канча жылдык тажрыйбаңыз бар?

157

Неге кодтогу жөнөкөй логика ордуна LLM колдонууга чечим кылдыңыз?

157

JWT серверде сессияларды сактоодон кандай артыкчылыкка ээ?

156

Колдонуучуларга офлайн режиминде жөнөтүлгөн билдирүүлөр кандай иштелип чыгат?

155

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 }

153

Баштапкы буфер үчүн канча жаддык бөлүнгөн?

153

Кайсы негизги программалоо тилин колдонуп жатасың? C++ же Python колдонуп жатасыңбы?

153

Эмне үчүн backend.Invoke чакыруусу муфтектен тышкары жасалды?

152

maxSegment маселесин чечүү алгоритмин сүрөттөп бериңиз

152

Эгерде Consumer.Process ката кайтарса — буфердеги маалыматтар жоголбойт беле?

150

Балансёр түшүнүшү керек, бекенд каталар менен жооп берип жатканы жана белгиленген убакыт ичинде чекке жеткенде аны балансировкадан чыгарышы керек (Circuit Breaker)

150

// ең жақсы() функциясы үшін код үзіндісі // эгер артқы жүйе болмаса, қате өңдеу

149

Берилген S саптары, бул сапта бардык белгилер кеминде бир жолу камтылган субсаптардын санын эсептөө керек. Мисалдар: "abca" -> 3 // abc, bca, abca "aa" -> 3 // aa, a, a, "ffg" -> 2 // ffg, fg

149

Бул символдордун саптары. i жана j көрсөткүчтөрүнүн жуптарынын санын табыңыз (i <= j), алардын ортосунда, киргизилген, кайталанган белгилер жок. "аба" сапы үчүн жооп 5: [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") "acbb" сапы үчүн жооп ?:

147

Азыр жогорку жүктөөдө бир секундта эң көп суроо-талабтар канча?

147

Go-дан башка кандай программалоо тилдерин өзүңүз үчүн же коммерциялык өнүктүрүүдө колдонуп жатасыз?

147

Кайда жашайсың, кайдасың?

145

// 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, } }

144
/11