Sobes.tech

Решихте да напишете WaitGroup, защото се появи канал или защото решихте да напишете goroutines за нещо?

Senior
166

Какво казва конвенцията на Go за използването на WaitGroup и типовете за връщане (приемане на интерфейси, връщане на конкретни типове)?

Senior
164

// Клиентът предава входен обект (Task) с данни за изпълнение на задачата, // в нашия пример ще използваме празна структура. // // Мениджърът може да обработва не повече от N задачи едновременно, // и не повече от X задачи могат да бъдат поставени в опашката за обработка. // Ако няма място в опашката, веднага връщаме грешка на клиента. // // Задачата се взема за обработка, ако има свободни обработващи. // Имитираме продължителността на обработката чрез time.Sleep(5*time.Second). // Веднага след като една задача приключи, взимаме следващата от опашката. // Ако опашката е празна, чакаме нови задачи от клиентите. // // С звездичка: допълнете структурата Task и получавайте статусите на задачите чрез отделен заявка. package scheduler type Scheduler interface { AddTask(t Task) error Close() } type scheduler struct { queue chan Task wg sync.WaitGroup } func New(workers, queue int) Scheduler { // очаква се реализация } type Task interface { Do() }

Senior
164

Каква технология/инструмент използваш?

Senior
164

Какви типове индекси има в PostgreSQL освен B-Tree?

Senior
163

Как бихме могли да обработваме външно грешките, които се случват в задачите, ако искахме да го направим?

Senior
161

Каква беше вашата роля при вземането на архитектурни решения при разработването на търсачката?

Senior
161

Използвали ли сте CTE? Разкажете какво е.

Senior
160

Използвал ли си контексти на практика? Разкажи.

Senior
158

func New(workers, queue, int) Scheduler { s := &scheduler { queue := make(chan Task, queue) for i := 0; i < workers; i++ { wg.Add(1) go func() { defer wg.Done() for task := range s.queue { task.Do() } }() } } return s } func (s *scheduler) Close() { close(s.queue) s.wg.Wait() } type Task interface { Do() }

Senior
157

Може ли да създадем индекс само на репликата, а не на майстора?

Senior
156

Има ли още състезания с данни в реализацията? Конкретно в метода Keys, който връща слайс от ключове?

Senior
156

Искаш ли да напишеш класически worker pool?

Senior
154

Каква е разликата между SELECT FOR UPDATE и SELECT FOR SHARE?

Senior
153

Видове репликация в PostgreSQL

Senior
152

Използвали ли сте функции на прозорец?

Senior
150

Дали е разрешена работата само в територията на Руската федерация?

Senior
150

Имали ли сте опит с писане на Kubernetes оператори, администриране на оператори, Helm Chart?

Senior
149

Защо не използвахте Redis вместо съхранение в базата данни?

Senior
148

Какви документи се съхраняваха в ELK?

Senior
146
/7