Pular para conteúdo

Quiz 08 - Concorrência em Go ⚡

1. O que é uma "Goroutine"?
Uma rotina de exercícios físicos para programadores
Uma thread extremamente leve gerenciada pelo runtime do Go
Uma função que só roda no navegador
Uma ferramenta para comprimir imagens
2. Qual palavra-chave é usada para disparar uma função em segundo plano de forma concorrente?
thread
async
go
parallel
3. Segundo a filosofia do Go, como devemos gerenciar o estado entre tarefas concorrentes?
Usando variáveis globais e locks pesados
Não comunique compartilhando memória; compartilhe memória comunicando (através de Canais)
Usando arquivos de texto temporários
O Go não permite compartilhar dados
4. O que acontece se você tentar ler de um canal vazio em que ninguém está enviando nada?
Ele retorna um erro imediatamente
Ele retorna zero
A goroutine fica bloqueada (em espera) até que algo seja enviado
O computador reinicia
5. Para que serve o comando `select`?
Para escolher qual banco de dados usar
Para aguardar por múltiplas operações em canais simultâneos
Para selecionar texto no terminal
Para deletar goroutines travadas
6. Qual a diferença entre um Canal comum e um "Buffered Channel" (Canal com Buffer)?
O Buffered Channel é azul
O Buffered Channel permite enviar uma quantidade limitada de dados sem precisar de um recebedor imediato
O Buffered Channel é mais lento
Não há diferença
7. O que é um "Deadlock"?
Um filme de ação famoso
Uma situação onde todas as goroutines estão bloqueadas esperando umas pelas outras
Quando o código é apagado acidentalmente
Quando a internet cai durante a compilação
8. Qual o tamanho médio inicial de memória que uma Goroutine consome?
2 MB (como uma thread comum de SO)
1 GB
Cerca de 2 KB
0 bytes
9. Para que serve o pacote `sync.WaitGroup`?
Para fazer o programa esperar o usuário apertar uma tecla
Para sincronizar a conclusão de um grupo de goroutines antes de encerrar o programa
Para limpar o cache do computador
Para organizar arquivos por data
10. Go utiliza paralelismo real?
Não, apenas simulação
Sim, o runtime distribui as goroutines entre os diversos núcleos (cores) da CPU
Somente se o programador escrever código em Assembly
Somente em servidores Linux