Sobes.tech

Golang

Ի՞նչ էր եղել ձեր աշխատած տվյալների ամենամեծ ծավալը և քանի՞ հարցում էր ընթերցում/գրառման համար։

158

/* Միկրոսերվիսի ճարտարապետությամբ հավելված կա: Միկրոսերվիսը կարող է ամփոփվել Backend ինտերֆեյսի միջոցով: Միկրոսերվիսի օրինակին մուտք գործելու համար կարող եք օգտագործել տիպը BackendImpl, որը արդեն իրականացված է: Յուրաքանչյուր միկրոսերվիս ունի մի քանի տասնյակ գործարկված նմուշներ, որոնցից յուրաքանչյուրը հասանելի է իր սեփական հասցեով addr: Սակայն, միկրոսերվիսի առանձին օրինակները չեն վստահելի: նրանք կարող են ընկնել, լինել անհասանելի կամ ծանրաբեռնված: Աստիճանաբար, դուք պետք է իրականացնեք Balancer տիպը, որը նույնպես իրականացնում է Backend ինտերֆեյսը և իրականացնում է կլիենտ-կողմ բեռի հավասարակշռություն միկրոսերվիսի օրինակների միջև, ընտրելով ամեն անգամ **ամենափոքր բեռնված** օրինակ:

157

Կարող եք կարճ ներկայացնել ձեր փորձը: Ի՞նչ է ձեր հիմնական ծրագրավորման լեզուն: Քանի տարի է, ինչ աշխատում եք արդյունաբերական զարգացման ոլորտում:

157

Ինչու որոշեցիք օգտագործել LLM, ոչ թե պարզապես տրամաբանություն կոդում?

157

Ի՞նչն է առավելություն JWT-ի համեմատ սերվերում սեսիաների պահպանումին:

156

Ի՞նչ չափի հիշողություն է սկզբում հատկացվել բուֆերին:

153

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

Ի՞նչ է քո հիմնական ծրագրավորման լեզուն: Օգտագործում ես C++ կամ Python?

153

Ինչու է backend.Invoke զանգը կատարվել մյուտեքսից դուրս?

152

Ի՞նչ կլինի, եթե Consumer.Process-ը վերադարձնի սխալ — տվյալները բաքից չեն կորցվի:

150

Բալանսավորողը պետք է հասկանա, որ բեքենդը պատասխանում է սխալներով, և որոշ ժամանակ անց գերազանցելով սահմանը, այն դուրս հանի բալանսավորումից (Circuit Breaker)

150

Տրված է S տողը, անհրաժեշտ է հաշվել այդ տողում գտնվող բոլոր ենթատողերի քանակը, որոնք պարունակում են այդ տողի բոլոր նիշերը առնվազն մեկ անգամ: Օրինակներ: "abca" -> 3 // abc, bca, abca "aa" -> 3 // aa, a, a, "ffg" -> 2 // ffg, fg

149

Ի՞նչ է ձեր ներկայիս բարձր բեռի ժամանակ մեկ վայրկյանում առավելագույն հարցումների քանակը:

147

Ի՞նչ ծրագրավորման լեզուներ, բացի Go-ից, եք օգտագործում ինքներդ կամ առևտրային զարգացման մեջ:

147

Սա նիշերի շղթա է։ Գտեք i և j ցուցանիշների զույգերի քանակը (i <= j), որոնց միջև, ներառյալ, կրկնվող նշաններ չկան։ "aba" շղթայի համար պատասխանն է 5՝ [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") "acbb" շղթայի համար պատասխանն է ?:

145

Դուք որ ծրագրավորման լեզվով եք աշխատում: Ինչու՞ առաջացան սինտաքսի դժվարություններ:

143

Որ չափանիշներով եք ընտրելու գործատու? Ի՞նչն է ձեզ համար ամենակարևորնը:

143

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

142

Դուք պատրաստ եք անհրաժեշտության դեպքում կամ անձնական ցանկությամբ անցնել այլ ծրագրավորման լեզու?

142

Որտե՞ղ ես ապրում, որտե՞ղ ես գտնվում?

141
/11