Qual é a complexidade do algoritmo em tempo e memória?
Golang
Está a trabalhar agora ou não, e em que formato: escritório, híbrido, remoto?
/* 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 }
Que indicadores de desempenho utilizou na avaliação do seu trabalho no último projeto?
Qual é a sua experiência na implementação e configuração de sistemas de autenticação e autorização?
func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) n := len(s) for right := 0; right < n; right++ { hm[s[right]]++ for hm[s[right]] > 1 { hm[s[left]]-- if hm[s[left]] == 0 { delete(hm, s[left]) } left++ } result += (right - left + 1) } return result }
Qual é a diferença entre um balanceador L4 e um balanceador L7?
""" Os lugares no cinema estão dispostos numa única fila. Um espectador que acaba de chegar escolhe um lugar, para sentar-se o mais longe possível dos outros espectadores na fila. Ou seja, a distância desde esse lugar, que o espectador ocupará, até ao espectador mais próximo deve ser máxima. É garantido que há sempre lugares livres na fila e que já há pelo menos um espectador sentado. Escreva uma função que, dada uma fila de lugares (uma matriz de zeros e uns), devolva a distância (número de espaços entre os assentos) desde o lugar escolhido até ao espectador mais próximo. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }
""" Os lugares no cinema estão dispostos numa fila. Um espectador que acaba de chegar escolhe um lugar, para sentar-se o mais longe possível dos outros espectadores na fila. Ou seja, a distância desde esse lugar, até ao espectador mais próximo, deve ser máxima. Garante-se que há sempre lugares livres e que já há pelo menos um espectador sentado. Escreva uma função que, dada uma fila de lugares (uma matriz de zeros e uns), retorne a distância (número de espaços entre os assentos) desde o lugar escolhido até ao espectador mais próximo. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """
/* * Dado um array de números inteiros e um número X, * é necessário encontrar o subarray não vazio mais longo cujo mínimo seja X. * Retorne o comprimento desse subarray ou -1 se não houver. */
Qual projeto escolher para uma entrevista técnica e como descrevê-lo?
Como é que o tempo de execução da operação de adicionar um elemento por chave na estrutura de dados Map é determinado?
Por que são necessárias duas verificações if (na linha 79 e na linha com len(buf)==MaxItems), em vez de uma?
Como determinar visualmente ou algoritmicamente que um elemento é único na estrutura de dados Map?
Qual foi o indicador de solicitações por segundo atingido durante a gravação de dados?
// Para dois arrays de números inteiros de comprimento N, // para todos K de 1 a N, contar a quantidade de números comuns nos prefixos de comprimento K. // Os números no array podem repetir-se, a interseção é considerada sem contar as multiplicidades. // Um prefixo de comprimento K do array A é os primeiros K elementos do array A // A [1, 1] => [1], [1, 1] // B [1, 1] => [1], [1, 1] // R [1, 1] // [1, 2, 5] => [1], [1, 2], [1, 2, 5] // [1, 5, 4] => [1], [1, 5], [1, 5, 4] // [1, 1, 2]
[nome] indicou: na linha 20, uniq não contém a quantidade de caracteres únicos, mas algo mais. O que exatamente?
Como mover a janela no algoritmo de janela deslizante?
// Dadas duas sequências ordenadas em ordem não decrescente de números inteiros. // É necessário devolver todos os elementos da primeira sequência que não estão na segunda. // 0 <= N <= 10^6 // -10^9 <= a[i] <= 10^9 // [1] // [2, 3, 4, 5, 6] // [1] // [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...] // [1] // [2, 3, 4, 5, 6, 7, 8] func filter(first []int, second []int) []int { res := make([]int, 0, len(first)) i, j := 0, 0 for i < len(first) && j < len(second) { if first[i] < second[j] { result = append(result, first[i]) i++ } else if first[i] > second[j] { j++ } else { i++ j++ } } for i < len(first) { result = append(result, first[i]) i++ } return result }
Conte-nos sobre a tarefa mais difícil e interessante que você resolveu, especialmente na experiência arquitetônica.