Sobes.tech

Golang

// Escrever um gestor de tarefas assíncrono como uma biblioteca // O cliente passa um objeto (Task) com dados para executar a tarefa, // no nosso exemplo, usaremos uma estrutura vazia. // O gestor pode processar no máximo N tarefas simultaneamente, // e no máximo X tarefas podem estar na fila de processamento. // Se não houver espaço na fila, retorna imediatamente um erro ao cliente. // A tarefa é processada se houver processadores livres. // Simulamos a duração do processamento com time.Sleep(5*time.Second). // Assim que uma tarefa termina, pegamos a próxima na fila. // Se a fila estiver vazia, aguardamos novas tarefas dos clientes. // Com um asterisco: completar a estrutura Task e obter os estados das tarefas através de uma requisição separada package scheduler type Scheduler interface { AddTask(t Task) error Close() } type Task interface { Do() }

Senior
Cloud.ru
35

O que queres melhorar? Onde sentes que tens lacunas agora?

Senior
AvitoAvito
35

Fala sobre a tua experiência de trabalho de forma livre, sem detalhes técnicos aprofundados.

Senior
FaceApp
35

Tem um bilhete militar na mão?

Middle+
WildberriesWildberries
35

O que acontece se nada for encontrado na fila local P?

Middle
RWB
35

Como funciona o LEFT JOIN? De qual tabela é que se obtém o quê?

Middle
RWB
35

Quantos anos de experiência comercial tem em Go?

Middle+
Штрафов нет
35

Como trabalhavam com bugs em produção? Serviços no Kubernetes — se algo não funcionasse, como resolviam?

Middle+
МВидеоМВидео
35

Quer trabalho remoto a tempo inteiro ou também está disposto a considerar opções com escritório?

Senior
АЙ-ТЕКОАЙ-ТЕКО
35

Está familiarizado com a Arquitetura Hexagonal? Fale sobre a sua estrutura.

Senior
ИП Ганус Александр Андреевич
35

Fala-me do teu último projeto.

Senior
FREEDOM LIFESTYLE
35

Por que usou sync.Map em vez de um mapa normal com Mutex?

Senior
РамблерРамблер
35

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 } }

Senior
plata
35

O que faz após o deploy do serviço em produção? Que análise realiza?

Senior
X5
35

Como é que a capacidade da fatia muda ao expandir-se?

Middle
VKVK
35

Por que motivo foi possível reduzir o tempo de processamento de operações de 120 para 5 segundos?

Middle+
Базис
35

Para que servem as goroutines? Qual é a sua vantagem em relação aos processos e threads do sistema operativo?

Middle+
VK CloudVK Cloud
35

Em que medida, de 10, o produto se encaixa na tua ideologia?

Senior
OZONOZON
35

Alguém foi treinado?

Middle+
МВидео/эльдорадо
35

O que fazer se o endpoint estiver lento? Descreva os passos de diagnóstico.

Middle+
plata
35
/412