Sobes.tech

Авито жобасы туралы толығырақ айтыңыз — бұл үш жыл бойы жалғыз жоба ма еді?

Senior
226

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
220

Горутинтегі msg қандай типте және оны неге аргумент ретінде беру керек?

Senior
213

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

Senior
194

Неліктен resultErr тікелей горутиннан қайтарылмайды?

Senior
192

resp.Body.Close()-ды қай жерде defer ету керек?

Senior
191

Басқа жұмыс берушілермен келісімдер бар ма немесе әлі де сұхбат кезеңінде ме?

Senior
190

Go-да дамыту бойынша жалпы коммерциялық тәжірибеңіз қандай?

Senior
181

Барлық құралдар туралы айтыңыз — неге қосылдыңыз және неге кеттіңіз?

Senior
177

Техникалық құжаттамамен ағылшын тілінде жұмыс істеу ыңғайлы бола ма?

Senior
177

SQL-мен қандай жұмыс тәжірибеңіз бар? Сұрауларды жаза аласыз ба және оңтайландыра аласыз ба?

Senior
171

Бұл кодта контексттер қайда аяқталады?

Senior
170

Жылдам ойындар дегеніміз не?

Senior
162

sentCount синхрондаусыз беріледі — оны қалай түзетуге болады?

Senior
157

Жаңа жобадан не іздейсіз? Қандай технологиялар қызықтырады? Жаңа жұмыс орнында көргіңіз келмейтін нәрсе қандай?

Senior
156

Дерекқор сұрауында контексті бермесеңіз, не болады?

Senior
154

Қашан индекс көмектеспейді немесе тіпті зиян келтіреді?

Senior
134

Go қызметі үшін CI/CD құбырында әдетте қандай кезеңдер бар?

Senior
129