Sobes.tech

Golang

Como são processadas as mensagens enviadas aos utilizadores offline?

139

Já utilizou nuvens públicas? Se sim, quais provedores e serviços?

139

/* Precisamos transferir dados de uma fonte para um consumidor. A fonte fornece os dados em pequenos lotes (~dez registos), enquanto que o consumidor funciona melhor com lotes maiores (~mil registos). Um exemplo real é a transferência de dados de filas tipo Kafka para uma base de dados Clickhouse. Fonte: - Praticamente infinita. - A fonte nunca devolve mais de MaxItems registos numa única chamada a Next. - Dentro de uma "sessão" (uma chamada à função Pipe), a fonte devolve novos dados em cada chamada a Next. - No entanto, após reiniciar, a fonte começa a partir da posição "confirmada" anterior, definida por cookie. Portanto, *cada* valor de cookie devolvido por Next, após guardar os dados no receptor, deve ser confirmado com uma chamada a Commit, na mesma ordem em que foram devolvidos por Next. Receptor: - Não pode processar mais de MaxItems de cada vez. É necessário implementar a função func Pipe(p Producer, c Consumer) error que lê dados da fonte, os agrupa num buffer de tamanho não superior a MaxItems e os guarda no receptor, depois de o fazer, confirma o progresso na fonte. */ const MaxItems = 9999 type Producer interface { // Next devolve: // - um lote de itens para processar // - cookie a 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 { // TODO }

139

Como verificar se a janela contém todos os caracteres necessários?

139

Fale-nos sobre seus projetos recentes e a pilha tecnológica utilizada.

138

4 - aceitar rapidamente as tarefas de entrada, 5 - devolver o resultado da tarefa mediante solicitação 6 - se não houver resultado, devolver o estado correspondente /* Processador - um serviço que realiza uma operação longa e intensiva em recursos. Já está implementado Os erros que devolve estão exclusivamente relacionados com dados de entrada incorretos, são estáveis e re-solicitá-los é inútil */ type Processor interface { Process([]byte) ([]byte, error) } /* Assumimos que temos um gerador de identificadores únicos (por exemplo, UUID). O gerador garante que não haverá colisões */ type ID string // func NewID() ID /* O agendador aceita tarefas dos clientes, enfileira-as e inicia o processamento. Garante que não mais do que 'threads' métodos de processamento estão a ser executados simultaneamente Permite verificar o estado da tarefa e obter o resultado não bloqueia os métodos públicos de processamento */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // lógica de inicialização return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // implementar return "" }

136

Descreva o algoritmo para resolver o problema maxSegment

136

Conta-me, o que acontece no final — como acumulamos o buffer?

135

Quais são as suas expectativas salariais?

131

Está correto que atualmente reside em [cidade] e que seria conveniente para si trabalhar num formato híbrido com visitas ao escritório?

131

Tem experiência na escrita de programas com multithreading ou operações assíncronas?

128

Quais anti-padrões na arquitetura de microsserviços você conhece?

127

[nome] perguntou: ao manter a posição de um elemento menor que X, qual será a posição?

126

Se lhe oferecerem uma oferta e a aceitar, quanto tempo levaria para estar pronto para começar a trabalhar?

125

Vamos considerar um exemplo: first=[1,1,2], second=[1,2]. O que o seu algoritmo deve retornar e funciona corretamente com duplicados?

125

O balanceador deve entender que o backend responde com erros, e ao ultrapassar um limite durante um determinado tempo, excluí-lo do balanceamento (Circuit Breaker)

124

Tem experiência no desenvolvimento e suporte de sistemas distribuídos?

122

Com que bases de dados ou outros armazenamentos de dados você trabalhou? Quantas solicitações por segundo (RPS) para escrita e leitura?

122

Você desempenhou tarefas de liderança durante todo o seu tempo de trabalho?

122

Qual foi o maior volume de dados armazenados?

119
/11