Use asyncio para I/O de alto volume, quando você quer milhares de esperas concorrentes numa thread só, threads para trabalho de I/O em que só existem bibliotecas bloqueantes, e processos para trabalho CPU bound que precisa de cores de verdade. As perguntas decisivas são se o trabalho espera ou calcula, e se as bibliotecas das quais você depende oferecem interface async.
Por que os entrevistadores perguntam isso
Escolhas de concorrência são onde engenheiros juniores queimam semanas. O entrevistador quer uma regra de decisão, não uma preferência, além de consciência dos custos de cada modelo: memória e overhead de serialização dos processos, thread safety e troca de contexto, e o fato de que uma chamada bloqueante descuidada trava um event loop inteiro. Mencionar que eles se combinam, como um thread pool executor dentro do asyncio, mostra experiência prática.
Como estruturar sua resposta
- Primeiro separe o problema entre esperar e calcular.
- Case cada categoria com um modelo de concorrência.
- Cite um custo de cada escolha.
- Dê um exemplo concreto do seu próprio trabalho.
Exemplo de resposta
Minha primeira pergunta é sempre se o trabalho espera ou se ele calcula, porque essa resposta escolhe a ferramenta. Esperar por rede ou disco significa asyncio, se as bibliotecas cliente derem suporte, já que um event loop segura tranquilamente dez mil sockets abertos num core e a memória por task é minúscula. Se o único driver disponível é bloqueante, eu uso um thread pool, porque uma thread parada num read de socket libera o lock e custa quase nada. Calcular significa processos, ou descer para uma biblioteca nativa que solta o lock sozinha. Num serviço em que trabalhei tínhamos os dois no mesmo caminho de request: um handler async abrindo leque para seis APIs internas com gather, e uma chamada run_in_executor embrulhando um SDK bloqueante antigo que não dava para substituir. Vale citar essa combinação numa entrevista porque a maioria dos sistemas reais é mista. O erro que eu fico de olho é alguém colocar uma transformação pesada de pandas dentro de uma corrotina, porque aí o loop para de atender todo o resto enquanto aquilo roda.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- O que quebra primeiro quando você escala um thread pool?
- Como você compartilha estado entre processos?
- Onde um task group entra nesse quadro?
Mais perguntas para Desenvolvedor Python
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas