Sobes.tech

Golang

Tinkoffdagi tajribangiz haqida gapiring — qanday ishga qabul qilindingiz va nima bilan shug'ullandingiz?

Middle+
КуперКупер
83

func collectRTT(ctx context.Context, urls []string) (map[string]time.Duration, error) { pingMap := make(map[string]time.Duration, len(urls)) var mu sync.Mutex var wg sync.WaitGroup errCh := make(chan error, 1) for _, url := range urls { wg.Add(1) go func(u string) { defer wg.Done() dur, err := rtt(ctx, u) if err != nil { select { case errCh <- fmt.Errorf("RTT uchun xato %s, %w", u, err): default: } return } mu.Lock() pingMap[u] = dur mu.Unlock() }(url) } wg.Wait() close(errCh) if err := <-errCh; err != nil { return nil, err } return pingMap, nil }

Senior
СБК ПАРУС
83

Asosiy dasturlash tili nima va boshqa qaysi tillarni bilasiz, jumladan, no-kommerciyal tajriba?

Middle+
Озон банк
83

func (p *Pool) Stop() { p.mu.Unlock() // Endi mumkin xavfsiz tarzda kanalni yopish close(p.tasks) // signal ishchilarga: yangi vazifa bo'lmaydi, qolganini o'qing p.wg.Wait() // barcha goroutine'lar tugashini kutamiz p.cancel() // ehtiyot chorasi sifatida kontekstni bekor qilamiz fmt.Println("Pool to'xtatildi.") } // ForceStop majburan barcha ishchilarni vazifalar tugashini kutmasdan to'xtatadi. // Ishchilar darhol kontekst orqali to'xtatiladi. func (p *Pool) ForceStop(timeout time.Duration) { fmt.Printf("Majburan to'xtatish (timeout: %v)...\n", timeout) // Yangi vazifalarni qo'shishni bloklaydi p.mu.Lock() p.isOpen = false p.mu.Unlock() // Kanalni yopamiz, shunda ishchilar yangi vazifa olmaydi close(p.tasks) // Kontekstni bekor qilamiz – bu bajarilayotgan barcha vazifalarni to'xtatadi p.cancel() // Yakunlash uchun cheklangan vaqt beramiz done := make(chan struct{}) go func() { p.wg.Wait() close(done) }() select { case <-done: fmt.Println("Pool majburan to'xtatildi (barcha ishchilar tugadi)") case <-time.After(timeout): fmt.Println("Pool majburan to'xtatildi (timeout, qolgan goroutine'lar bo'lishi mumkin)") } }

Senior
Pasul LTD
83

HAVING nima uchun kerak va nima uchun WHERE emas?

Senior
OZONOZON
83

Go'dagi ma'lumot turlari haqida gapir.

Middle
RWB
83

Natija 123 o'rniga 456 bo'lishi uchun kodni qanday o'zgartirish mumkin?

Middle
Ozon FreshOzon Fresh
83

Qaysi turdagi tranzaktsiyalarni bilasiz? Ular nima uchun kerak?

Senior
Small
83

Indekslar bilan muammo bo'lganligini aytding — aniqroq ayta olasizmi?

Senior
OkkoOkko
83

Go'da yopiq kanalni o'qishda nima bo'ladi?

Senior
Магнит Тех
83

TCP va UDP o'rtasida nima farq bor? Nima uchun HTTPS uchun TCP ishlatiladi?

Middle+
Ozon ФинтехOzon Финтех
83

Shardlash tushunchasi bilan tanishdingizmi?

Middle
VKVK
83

Fan-in/fan-out va pipeline naqshlarini bilasizmi? Bu nima?

Senior
техвил
83

Evakuatsiya jarayonida xaritaga elementlar qo'shish yoki olib tashlash mumkinmi?

Senior
VK CloudVK Cloud
83

Gorutina nima? U OSning oqimidan qanday farq qiladi? Kim gorutinlarni boshqaradi?

Middle+
YadroYadro
83

Sizning maosh kutishlaringiz va taqdimot uchun afzal ko'rgan formatingiz qanday?

Middle
Nau
83

Bir mashinada nechta goroutin yaratish mumkin? Qanday hisoblash kerak?

Senior
СБК ПАРУС
83

Go'da embedding va kompozitsiya o'rtasidagi farq nima?

Senior
техвил
83

Bir serverda maksimal nechta TCP ulanishlarini saqlash mumkin?

Senior
ООО Макс
83

Algoritmning murakkabligi nima va bu yerda daraxt qayerda?

Senior
OkkoOkko
83
/412