Sobes.tech

გთხოვთ, უფრო დეტალურად ისაუბროთ ავიტოს პროექტზე — იყო ეს ერთადერთი პროექტი სამ წელიწადში?

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

Goroutine-ში 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
კითხვები Golang მომზადება - sobes.tech