Golang
Туро дар бораи таҷрибаи худ дар Тинькофф — чӣ гуна ба кор қабул шудан ва чӣ кор мекардед?
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 }
Забони асосии барномасозӣ кадом аст ва дигар кадом забонҳоро медонӣ, аз ҷумла таҷрибаи ғайрииқтисодӣ?
func (p *Pool) Stop() { p.mu.Unlock() // Τώρα είναι ασφαλές να κλείσουμε το κανάλι close(p.tasks) // σήμα στους εργαζόμενους: δεν θα υπάρχουν νέες εργασίες, διαβάστε το υπόλοιπο p.wg.Wait() // περιμένουμε να ολοκληρωθούν όλα τα goroutine p.cancel() // ακυρώνουμε το πλαίσιο, αν χρειάζεται fmt.Println("Pool σταμάτησε.") } // ForceStop αναγκαστικά σταματά όλους τους εργαζόμενους χωρίς να περιμένει την ολοκλήρωση των εργασιών. // Οι εργαζόμενοι θα διακοπούν αμέσως μέσω του πλαισίου. func (p *Pool) ForceStop(timeout time.Duration) { fmt.Printf("Αναγκαστική διακοπή του pool (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("Pool αναγκαστικά σταμάτησε (όλοι οι εργαζόμενοι τερματίστηκαν)") case <-time.After(timeout): fmt.Println("Pool αναγκαστικά σταμάτησε (timeout, ενδέχεται να παραμείνουν goroutines σε αναμονή)") } }
HAVING барои чӣ аст ва чаро не WHERE?
Дар бораи намудҳои маълумоти дар Go гап зан.
Чӣ гуна кодро тағир додан мумкин аст, то натиҷа 456 ба ҷои 123 бошад?
Кадом намуд транзаксияҳоро мешиносӣ? Барои чӣ лозиманд?
Шумо гуфтед, ки бо индексҳо мушкилот буд — метавонед ба таври мушаххас нақл кунед?
Чӣ мешавад вақте ки аз канали баста дар Go мехонем?
Тамарқи TCP бо UDP чӣ фарқ дорад? Чаро барои HTTPS TCP истифода мешавад?
Оё шумо бо мафҳуми шардоринг ошностед?
Оё моделҳои fan-in/fan-out ва pipeline-ро мешиносед? Инҳо чистанд?
Оё имкон дорад, ки дар вақти рафтан ба эвакуация унсурҳоро дар харита илова ё хориҷ кунем?
Горутина чист? Чӣ тавр аз ҷараёни системаи оператсионӣ фарқ мекунад? Кӣ идора мекунад гурутинҳоро?
Умедворӣ дар бораи музди меҳнат ва формати пешкашии дӯстдоштаи шумо чист?
Чӣ қадар goroutine-ҳо метавонанд дар як мошин эҷод шаванд? Чӣ гуна ҳисоб кардан?
Фарқи байни ҷойгиркунӣ (embedding) ва таркиб дар Go чист?
Чӣ қадар пайвастшавии TCP метавон дар як сервер нигоҳ дошт?
Чӣ гуна мураккабии алгоритм ва дар куҷост дарахт?