-
-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Entrevistas Backend — por @samsantosb
“Quase todas as respostas eram muito distantes do esperado.”
— Sam, após acompanhar entrevistas técnicas de backend como ouvinte.
Tweet original – 15/05/2025
Part. 1 – Perguntas frequentes nas entrevistas
1. Como evitar que duas transações idênticas aconteçam em sequência?
- Estratégias:
- Locks (pessimistas ou otimistas)
- Idempotência com tokens
- Hash das entradas + tempo
- Deduplicação com filas
2. Como trabalhar com multi-câmbio em uma aplicação?
- Estratégias:
- API de câmbio (ex: Fixer.io, OpenExchange)
- Tabelas de câmbio com cache
- Normalização de moedas
- Taxas dinâmicas por contexto
3. Quais tecnologias usar para monitoramento de uma aplicação?
- Ferramentas comuns:
- Prometheus + Grafana
- ELK Stack
- Datadog, New Relic, Sentry
- OpenTelemetry para tracing
Part. 2 – Perguntas que já foram feitas ao Sam
1. Como lidar com operações concorrentes em uma aplicação financeira?
- Soluções possíveis:
- Transações ACID
- Versionamento de registros (ETag, RowVersion)
- Filas de mensagens
- Locking (optimistic/pessimistic)
2. Quais opções nativas do Node.js para jobs/processamento assíncrono?
-
Nativas:
setImmediateprocess.nextTickworker_threads
-
Com bibliotecas:
- Bull / BullMQ
- Agenda
- Kue
- Bree
- Temporal (orquestração)
- Redis Streams
Part. 3 – Como aumentar a resiliência da API Node.js sem escalar
Pergunta:
Como tornar sua API Node.js mais resiliente sem escalar horizontalmente?
Técnicas e Ferramentas mágicas:
Node Cluster: múltiplos processos com balanceamento de carga internoGraceful Shutdown: finalização segura de processosRate Limiting: limita requisições abusivasCircuit Breaker: isola falhas externas (ex: libopossum)
Part. 4 –
Contexto:
Código publicado pelo Sam é parte de uma issue real no GitHub.
Objetivo:
Melhorar a resiliência e controle de execuções em aplicações Node.js com lógica baseada em verificação de flags e controle de concorrência.