Golang
func main() { c := make(chan int, 1000) for i := 0; i < 100; i++ { go foo(c) } sum := 0 for r := range c { sum += r } fmt.Println(sum) } func foo(c chan int) { r := rand.Int() for i := 0; i < r; i++ { c <- r } } --- func main() { c := make(chan int, 1000) var wg sync.WaitGroup wg.Add(100) for i := 0; i < 100; i++ { go func() { defer wg.Done() foo(c) }() } go func() { wg.Wait() close(c) }() sum := 0 for r := range c { sum += r } // // fmt.Println(sum) } func foo(c chan int) { r := rand.Int() for i := 0; i < r; i++ { c <- r } }
Какво правиш след като деплойнеш услугата в продукция? Какъв анализ извършваш?
Как се променя капацитетът на филийката при разширяване?
Колко различни варианта съществуват при хвърляне на две неразличими зарчета?
Какво е довело до намаляване на времето за обработка на операциите от 120 до 5 секунди?
Колко от 10 идеи ти подхожда продуктът?
Обучил ли някой?
Как се отнасяш към извънредните часове? Понякога трябва да пуснем версия късно вечерта.
Какво е CQRS?
Кой се занимава с декомпозицията на задачите?
За какво е необходим kubelet?
В какъв ред ще се изпълняват горутините и защо?
Може ли веднага да отхвърлите обявата, ако бързият сервиз вече е върнал отхвърляне, без да чакате бавния ML-сервиз за антифрауд?
Разкажете за вашия опит в работата. Защо напуснахте компанията? Защо искате да смените текущото си място на работа? Каква беше вашата роля в последния проект?
Ако в AddTask използвате RLock, как ще се държат двата паралелни извиквания на AddTask? Ще блокират ли се взаимно?
Как се извърши разгръщането? С какво го разгръщахте в Kubernetes?
Къде на практика са полезни интерфейсите? Дай реален пример.
Разкажи какво се случва в крайна сметка — как натрупваме буфера?
Как работят горутините под капака (модел GMP)?
Колко е удобно работното време от 10 до 19 часа?