Golang
Quem preenche as tabelas de roteamento?
Qual é a complexidade de busca em um map em Go (Big-O)? Como determinar a complexidade de um algoritmo?
pacote principal importar "fmt" func main() { nums := make([]int, 1, 2) fmt.Println(nums) // appendSlice(nums, 1024) fmt.Println(nums) // mutateSlice(nums, 1, 512) fmt.Println(nums) // } func appendSlice(sl []int, val int) { sl = append(sl, val) } func mutateSlice(sl []int, idx, val int) { sl[idx] = val }
Como determinar onde uma variável estará localizada — no heap ou na stack? O que é análise de escape e como ela funciona?
Quando começaste a procurar um novo emprego e por que razão?
Tarefa prática em Go: implementar uma função (linhas 15-17) para processar um conjunto de tarefas (jobs) com execução sequencial e monitoramento da porcentagem de conclusão através de um canal de progresso.
Que primitivas de sincronização existem em Go? Fala-me sobre WaitGroup e Mutex.
package main import ( "io" "net/http" "strconv" "time" ) // getData devolve dados quase estáticos, no entanto, às vezes, eles mudam. func getData() int { time.Sleep(time.Millisecond * 100) return 1 } func main() { mux := http.NewServeMux() mux.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) { _, _ = io.WriteString(writer, strconv.Itoa(getData())) }) if err := http.ListenAndServe(":8080", mux); err != nil { panic(err) } }
Dê um exemplo de sistema que seja resistente à partição e tenha consistência (sistema CP).
// 2 func merge(chans ...chan int) <-chan int { panic("not implemented") } func main() { a,b,c := make(chan int), make(chan int), make(chan int) out := merge(a,b,c) go func(){ for v := range out { println(v) } }() a <- 1 a <- 2 a <- 3 b <- 4 c <- 5 close(c) a <- 6 } Implemente a função merge que aceita múltiplos canais de inteiros e retorna um único canal que mescla os valores de todos os canais de entrada. O canal mesclado deve fechar quando todos os canais de entrada estiverem fechados.
Pode uma chave primária ser composta?
Que tipos de índices existem em bancos de dados, quais são as suas diferenças e como decide quando usá-los?
Se o chat estiver quebrado, a memória e o processador estiverem normais, mas as mensagens não chegarem, como você resolveria o problema?
Qual comando no Git pode obter atualizações do repositório remoto sem mesclá-las com o branch atual?
Como ocorre a transmissão de dados através de um canal não bufferizado? Ele tem um buffer?
Conte-nos sobre a tarefa mais difícil e interessante que você resolveu, especialmente na experiência arquitetônica.
Se olharmos para a linha 18 (saída do time), que hora de execução será exibida lá?
Se a base de dados estiver indisponível e fizer tentativas, você não processará infinitamente as mesmas mensagens? Todos os 500 irão para DLQ?
Fala-me sobre a replicação mestre-escravo — quando se acede ao mestre, quando ao escravo?
Quem e como troca goroutines entre si? Fale sobre o agendador (M:G:P).