Sobes.tech

გააზიარე შენი გამოცდილება Tinkoff-ში — როგორ მიიღე სამუშაო და რა საქმიანობა გქონდა?

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 შეცდომა %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

რა არის ძირითადი პროგრამირების ენა და რა სხვა ენებს იცით, მათ შორის არასამეწარმეო გამოცდილება?

Middle+
Озон банк
83

func (p *Pool) Stop() { p.mu.Unlock() // ახლა უსაფრთხოდ შეიძლება ჩაკეტოთ არხი close(p.tasks) // სიგნალი მუშაკებს: ახალი დავალებები აღარ იქნება, წაიკითხეთ დარჩენილი p.wg.Wait() // ველით ყველა გორუტინის დასრულებას p.cancel() // საჭიროების შემთხვევაში გაუქმეთ კონტექსტი fmt.Println("Pool შეჩერებულია.") } // ForceStop ძალით აჩერებს ყველა მუშაკს დავალებების დასრულების მოლოდინის გარეშე. // მუშაკები დაუყოვნებლივ გაწყდება კონტექსტის მეშვეობით. func (p *Pool) ForceStop(timeout time.Duration) { fmt.Printf("ძალადობრივი გაჩერება პულის (timeout: %v)...\n", timeout) // ბლოკავს ახალი დავალებების დამატებას p.mu.Lock() p.isOpen = false p.mu.Unlock() // არხის დახურვა, რათა მუშაკებმა ახალი დავალებები არ მიიღონ close(p.tasks) // კონტექსტის გაუქმება – ეს ყველა მიმდინარე დავალებას გაწყდება p.cancel() // შეზღუდული დრო მიცემულია დასრულებისთვის done := make(chan struct{}) go func() { p.wg.Wait() close(done) }() select { case <-done: fmt.Println("პული ძალით გაჩერებულია (ყველა მუშაკი დასრულდა)") case <-time.After(timeout): fmt.Println("პული ძალით გაჩერებულია (тайმ-აუტ, შეიძლება დარჩეს გაჩერებული goroutine-ები)") } }

Senior
Pasul LTD
83

რატომ არის HAVING საჭირო და რატომ არა WHERE?

Senior
OZONOZON
83

მითხარი Go-ში მონაცემთა ტიპების შესახებ.

Middle
RWB
83

როგორ შევცვალოთ კოდი, რომ შედეგი იყოს 456 ნაცვლად 123-ის?

Middle
Ozon FreshOzon Fresh
83

რომელი ტიპის ტრანზაქციებს იცნობ? რა მიზნით გამოიყენება?

Senior
Small
83

თქვი, რომ ინდექსებთან დაკავშირებული პრობლემები იყო — შეგიძლია დეტალურად მოყვე?

Senior
OkkoOkko
83

რა ხდება, როდესაც წერთ დახურულ არხიდან Go-ში?

Senior
Магнит Тех
83

რა განსხვავებაა TCP-სა და UDP-ს შორის? რატომ გამოიყენება TCP HTTPS-ისთვის?

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

შარდირების კონცეფციასთან შეხვედრილხარ?

Middle
VKVK
83

გეცოდინებათ fan-in/fan-out და pipeline ნიმუშები? რა არის ეს?

Senior
техвил
83

შესაძლებელია თუ არა ევაკუაციის პროცესში ელემენტების დამატება ან წაშლა რუკაზე?

Senior
VK CloudVK Cloud
83

გორუტინა რა არის? როგორ განსხვავდება ოპერაციული სისტემის ნაკადიდან? ვინ მართავს გორუტინებს?

Middle+
YadroYadro
83

რა არის თქვენი ანაზღაურების მოლოდინები და სასურველი ფორმატი?

Middle
Nau
83

რამდენი goroutine შეიძლება შექმნათ ერთ მანქანაზე? როგორ ითვლება?

Senior
СБК ПАРУС
83

რა არის embedding და composition შორის განსხვავება Go-ში?

Senior
техвил
83

რამდენი TCP კავშირი შეიძლება ერთ სერვერზე იყოს მაქსიმუმ?

Senior
ООО Макс
83

როგორ არის ალგორითმის სირთულე და სად არის ხე აქ?

Senior
OkkoOkko
83
/412