```go func main() { wg := sync.WaitGroup{} for i := 0; i < 10; i++ { wg.Add(1) go func(wg sync.WaitGroup) { defer wg.Done() fmt.Println(i) }(wg) } wg.Wait() fmt.Println("some text") time.Sleep(1 * time.Minute) fmt.Println("some text2") } ```
Golang
Разкажи по-подробно за историята с оптимизацията на скоростта на отчета: какво прави, с какво се сблъска, какви бяха трудностите, как ги реши?
Къде е по-добре да обявите интерфейса — на мястото на реализация или на мястото на потребление?
Разкажи за своя опит, интересни задачи, по които ти харесва да работиш, с гордост.
Дали последователността на изхода на 100 горутини ще бъде еднаква при всяко изпълнение? От какво зависи?
Разкажи за себе си накратко
Да предположим, че задачата е в Go версия 1.18. Какво ще се промени в поведението на програмата?
Знаеш ли архитектурата на Kubernetes, кои същности съществуват, какво е control plane?
Каква е разликата между двигателите MergeTree, ReplicatedMergeTree и Distributed в ClickHouse?
Как да оптимизираме тежък аналитичен SQL заявка в голяма производствена база данни?
Какво би направил, ако предложиш архитектурно решение, но техническият лидер не е съгласен с теб и ти си сигурен, че си прав?
Как работи системата за модериране за определяне на забранено съдържание, включително подобни изображения?
Как става възможно да се стартират няколко изолирани среди на един локален компютър (Docker/контейнеризация)?
Какво ще видим на екрана при стартиране на програмата, ако поправим бъга с wg (предаване на указател)?
Как да направя така, че на петия ред единицата, добавена чрез append, също да бъде видима? Без да променям подписа на функцията fill.
```go func main() { wg := sync.WaitGroup{} wg.Add(8) for i := 0; i < 10; i++ { go func(wg *sync.WaitGroup, i int) { defer wg.Done() fmt.Println(i) }(&wg,i) } wg.Wait() fmt.Println("some text") time.Sleep(1 * time.Minute) fmt.Println("some text2") } ```
Какво е довело до намаляване на времето за обработка на операциите от 120 до 5 секунди?