Sobes.tech

Авито долбоору жөнүндө көбүрөөк айтып бериңиз — ал үч жылда жалгыз долбоор беле?

Senior
237

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
226

Goroutine-деги msgтин түрү кандай жана аны аргумент катары өткөрүү керекпи?

Senior
224

Неге resultErr түздөн-түз goroutine'ден кайтарылбайт?

Senior
204

Башка иш берүүчүлөр менен келишимдериңиз барбы же сиз дагы интервью этаптарындасызбы?

Senior
201

Кайда defer resp.Body.Close() кылуу керек?

Senior
195

/* Бағдарламашыға хабарламаларды жіберу қызметін жазу тапсырмасы берілді. Талаптар: - Send әдісі хабарламаларды параллель түрде жіберуі керек. - Бір уақытта maxworkers HTTP сұрауларынан артық болмауы керек. - Егер кемінде бір жіберу сәтсіз болса, қалғандары тоқтатылуы керек және қате қайтарылуы керек. - Әдіс контексттің тоқтатылуын дұрыс өңдеуі керек. - Барлық ресурстар дұрыс босатылуы керек. - Әдіс әртүрлі goroutine-лардан бәсекелес түрде шақырылуы мүмкін. - Клиент сәтті жіберілген хабарламалар санын сақтау керек. Кодты қарап шығу керек, мәселелерді табу және кодты түзету керек.

Senior
194

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

Senior
190

Англис тилиндеги техникалык документтер менен иштөө ыңгайлуу болобу?

Senior
183

SQL менен кандай тажрыйбаң бар? Суроолорду жазып жана оптималдаштыра аласызбы?

Senior
178

Бул коддо контексттер кай аякталат?

Senior
178

БардыкАспаптар жөнүндө мага айтып бер — эмне үчүн келдиң жана эмне үчүн кеттиң?

Senior
177

sentCount синхрондоштуусуз өткөрүлүп жатат — муну кантип оңдоого болот?

Senior
171

Тез оюндар эмнелер?

Senior
162

Жаңы долбоордо эмне издейсиң? Канча технологиялар кызыктырса керек? Жаңы жумуш ордунда эмне көргүң келбейт?

Senior
160

Маалыматтар базасына суроо берүүдө контекстти өткөрбөсөңүз эмне болот?

Senior
159

Индекс жардам бербегенде же зыян келтиргенде качан?

Senior
158

Go кызматы үчүн CI/CD pipeline'инде адатта кандай этаптар (stages) болот?

Senior
137