Sobes.tech

Golang

O que estavam a fazer cache? Alguns diretórios?

Senior
МВидео/эльдорадо
166

/* Precisamos transferir dados de uma fonte para um consumidor. A fonte fornece os dados em pequenos lotes (~dez registros), enquanto o consumidor funciona de forma mais eficiente com lotes maiores. Um exemplo real é a transferência de dados de filas do tipo Kafka para o banco de dados Clickhouse. Fonte: - Praticamente infinita. - A fonte nunca retorna mais de MaxItems registros em uma única chamada a Next. - Dentro de uma "sessão" (uma chamada à função Pipe), a fonte retorna novos dados a cada chamada a Next. - No entanto, após reiniciar, a fonte começará da posição "confirmada" anterior, indicada por cookie. Portanto, *cada* valor de cookie retornado por Next, após salvar os dados no receptor, deve ser confirmado com uma chamada a Commit, na mesma ordem em que foram retornados por Next. Receptor: - Não pode processar mais de MaxItems de uma vez. Nível básico: É necessário implementar a função func Pipe(p Producer, c Consumer) error que lê dados da fonte, os agrupa em um buffer de tamanho não maior que MaxItems e os salva no receptor, e depois confirma o progresso na fonte. */ const MaxItems = 9999 type Producer interface { // Next retorna: // - lote de itens a serem processados // - cookie para ser confirmado quando o processamento estiver concluído // - erro Next() (items []any, cookie int, err error) // Commit é usado para marcar o lote de dados como processado Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }

Middle
Яндекс
166

Pode listar as empresas ou fornecedores com os quais lidou?

Junior — Middle
166

Fale-me sobre o seu último emprego: em que trabalhou, qual foi a sua stack, quais foram os desafios difíceis?

Middle
OZONOZON
166

O que é um slice em Go?

Middle
Бюро 1440Бюро 1440
166

Pode listar os principais tipos de chamadas utilizados no gRPC?

Junior — Middle
СБЕР дейвайсыСБЕР дейвайсы
166

É permitido obter informações de um canal com modo fechado ativado?

Junior — Middle
ГазпромГазпром
X5 groupX5 group
AvitoAvito
+1
166

É possível gravar diretamente numa partição específica do Kafka, ignorando a chave para hashing?

Junior — Middle
Самокат Тех
166

Pode explicar o mecanismo de adição de um elemento ao final de uma estrutura de dados, como uma lista ou um array?

Junior — Middle
Lamoda Tech
Startribe
Самокат Тех
+2
166

Que dados e de que forma são colocados na pilha durante a execução do programa?

Junior — Middle
166

Quais métodos de cache você prefere usar em seus projetos e por quê?

Junior — Middle
166

Qual é a diferença entre uma view materializada e uma view normal?

Middle
RWB
165

Quais componentes fazem parte da estrutura de uma lista ligada?

Junior — Middle
165

Como é que o tempo de execução da operação de adicionar um elemento por chave na estrutura de dados Map é determinado?

Junior — Middle
ЯндексЯндекс
165

Por que geralmente o tamanho inicial da pilha dos threads é definido como 2 MB?

Junior — Middle
165

Alguma vez utilizou a estrutura ErrGroup nos seus projetos para gerir tarefas paralelas?

Junior — Middle
165

Que pacotes incomuns ou não convencionais você usou na sua prática?

Junior — Middle
165

Por que o crescimento da fatia desacelera e por que não se pode continuar a duplicar constantemente?

Middle
RWB
165

Em que lugar são executados os comandos durante o processo de trabalho do GitLab CI/CD?

Junior — Middle
165

Quais as consequências podem surgir da não observância dos princípios SOLID no projeto de software?

Junior — Middle
Zonatelecom
165
/413