Sobes.tech

Golang

Ասացեք ավելին Ավիտոյում նախագծի մասին — դա միակ նախագիծն էր երեք տարվա ընթացքում?

Senior
232

func (c *Client) Send(ctx context.Context, messages []Message, maxWorkers int) error { sem := make(chan struct{}, maxWorkers) var wg sync.WaitGroup var resultErr error var once sync.Once for _, msg := range messages { wg.Add(1) go func(msg Message) { defer wg.Done() sem <- struct{}{} defer func() { <-sem }() body, err := json.Marshal(msg) if err != nil { once.Do(func() { resultErr = err; cancel() }) return } req, _ := http.NewRequestWithContext( ctx, http.MethodPost, c.url, bytes.NewReader(body), ) req.Header.Set("Content-Type", "application/json") resp, err := c.httpClient.Do(req) if err != nil { once.Do(func() { resultErr = err; cancel()}) return } defer resp.Body.Close() if resp.StatusCode >= 500 { once.Do(func() { resultErr = fmt.Errorf("server error") cancel()}) return } c.sentCount.Add(1) time.Sleep(time.Second) }(msg) } wg.Wait() }

Senior
222

Ի՞նչ տեսակ է msg-ը գորուտինում և ինչու է անհրաժեշտ փոխանցել այն որպես արգումենտ։

Senior
219

Ինչու resultErr-ը ուղղակիորեն չի վերադարձվում goroutine-ից?

Senior
198

Կա՞ն համաձայնություններ այլ գործատուների հետ կամ դեռ անցնում եք հարցազրույցի փուլերը։

Senior
195

/* Ծրագրավորողին տրված է գործառույթ գրել ծանուցումների ուղարկման ծառայություն: Պահանջներ: - Send մեթոդը պետք է ուղարկի հաղորդագրությունները միաժամանակ: - Միաժամանակ չպետք է կատարվեն ավելի քան maxworkers HTTP հարցումներ: - Եթե առնվազն մեկ ուղարկում ձախողվի, մնացածները պետք է կանգնեցվեն և վերադարձվի սխալ: - Մեթոդը պետք է ճիշտ կերպով կառավարի կոնտեքստի չեղարկումը: - Բոլոր ռեսուրսները պետք է ճիշտ կերպով ազատվեն: - Մեթոդը կարող է համաժամանակորեն կանչվել տարբեր goroutines-ներից: - Client-ը պետք է պահի հաջողությամբ ուղարկված հաղորդագրությունների քանակը: Կոդը պետք է վերանայվի, խնդիրները հայտնաբերվեն և կոդը ուղղվի:

Senior
194

Որտե՞ղ պետք է կատարել defer resp.Body.Close()։

Senior
193

Ի՞նչ է ձեր ընդհանուր առևտրային փորձը Go-ով զարգացման ոլորտում։

Senior
183

Կարող կլինի արդյոք հարմարավետ աշխատել տեխնիկական փաստաթղթերի հետ անգլերեն լեզվով?

Senior
181

Պատմիր ինձ Ամենաշարժականների մասին — ինչու եկար և ինչու գնացիր?

Senior
177

Ինչ փորձառություն ունես SQL-ով? Կարողանում ես գրել և օպտիմալացնել հարցումները?

Senior
174

Որտե՞ղ են ավարտվում կոնտեքստները այս կոդում։

Senior
172

Ի՞նչ են արագ խաղերը։

Senior
162

Ի՞նչ ես փնտրում նոր նախագծում: Ի՞նչ տեխնոլոգիաներ են հետաքրքիր քեզ: Ի՞նչ չես ուզում տեսնել նոր աշխատանքային վայրում:

Senior
158

sentCount փոխանցվում է սինխրոնիզացիայի առանց — ինչպես դա ուղղել?

Senior
157

Ի՞նչ կլինի, եթե տվյալների բազայի հարցում կոնտեքստը չփոխանցեք։

Senior
157

Երբ ցուցիչը օգուտ չի բերում կամ նույնիսկ վնաս է հասցնում?

Senior
140

Ի՞նչ փուլեր (stages) սովորաբար կան CI/CD պիպլայնում Go-ծառայության համար։

Senior
131