Pular para o conteúdo
Aprenda Jogando

Inglês para programadores

Inglês para programadores — Entrevista

O inglês usado no trabalho em tecnologia: da entrevista à daily, do code review ao Slack. Cada item traz tradução, exemplo e uma nota sobre quando usar. Toque no alto-falante para ouvir a pronúncia.

Crie uma conta para treinar com repetição espaçada e acompanhar o que já domina.

Tópicos

System design 8

Termos

trade-off

escolha em que se ganha de um lado e se perde de outro

Every design decision is a trade-off between cost and latency.

Toda decisão de arquitetura pesa o que se ganha de um lado contra o que se perde do outro, entre custo e tempo de resposta.

Palavra central desta etapa. O avaliador quer ouvir você comparar opções, não defender a tecnologia da qual você gosta.

rate limiting

limite de pedidos que um cliente pode enviar ao sistema

We added rate limiting per API key so one client could not exhaust the whole quota.

Limitamos os pedidos por chave de API para impedir que um cliente usasse toda a cota.

Diga sempre o escopo — por usuário, por IP ou por chave — senão a resposta soa decorada. O verbo correspondente é 'to throttle'.

caching layer

camada de memória intermediária que acelera leituras

Adding a caching layer cut database reads by seventy percent.

Adicionar uma camada de memória intermediária reduziu em setenta por cento as leituras no banco.

Sempre diga como os dados saem dessa camada quando mudam. Quem propõe acelerar leitura e não fala de invalidação perde ponto.

single point of failure

componente único cuja queda derruba o sistema inteiro

That gateway is a single point of failure in the current design.

Esse ponto de entrada é o elo único cuja queda derruba tudo no desenho atual.

Abreviado como SPOF na conversa entre engenheiros. Apontar um no seu próprio desenho e propor redundância soa muito bem.

idempotency

propriedade da operação que pode ser repetida sem mudar o resultado

Payments need idempotency, otherwise a retry charges the customer twice.

Pagamentos precisam poder ser repetidos sem efeito colateral, senão uma nova tentativa cobra o cliente duas vezes.

O adjetivo é 'idempotent' e a implementação usual é uma 'idempotency key'. Sempre que a pergunta envolver 'retry', o entrevistador espera ouvir isso.

circuit breaker

mecanismo que corta as chamadas a um serviço que está falhando

A circuit breaker stops us from hammering a service that is already down.

Um disjuntor de chamadas evita que a gente insista em um serviço que já está fora do ar.

Os três estados são closed, open e half-open. Cite junto com 'retry with backoff': insistir sem cortar transforma uma falha pequena em queda geral. Em JavaScript, bibliotecas como opossum já implementam o padrão pronto.

write-heavy

sistema em que as gravações dominam a carga

If the workload is write-heavy, a single primary database becomes the limit very quickly.

Se a carga for dominada por gravações, um único banco primário vira o limite muito rápido.

Par natural com 'read-heavy'. Pergunte a proporção antes de desenhar qualquer coisa: o desenho muda por completo de um caso para o outro.

sharding

divisão dos dados em partições independentes

I would consider sharding by customer id if the table keeps growing.

Eu consideraria particionar os dados por identificador de cliente se a tabela continuar crescendo.

Proponha só depois de esgotar índices, réplicas de leitura e memória intermediária. Partir dados cedo demais é visto como excesso de engenharia.

back-of-the-envelope estimate

cálculo aproximado feito na hora, com números redondos

Let me do a back-of-the-envelope estimate: ten million users posting once a day at about one kilobyte each is roughly ten gigabytes of new data daily.

Deixa eu fazer um cálculo aproximado: dez milhões de usuários publicando uma vez por dia, com cerca de um kilobyte cada, dá uns dez gigabytes de dados novos por dia.

Esperado em quase toda entrevista de arquitetura. Arredonde os números e diga as premissas em voz alta enquanto calcula.

graceful degradation

continuar servindo uma versão reduzida quando parte do sistema cai

With graceful degradation the feed still loads, just without personalized ranking.

Com degradação controlada o feed continua carregando, só que sem a ordenação personalizada.

O contraste é com parar tudo. Diga o que você sacrifica primeiro — isso mostra que você prioriza em vez de prometer disponibilidade total.

Frases prontas

Before I draw anything, can I confirm the scale we're designing for?

Antes de desenhar qualquer coisa, posso confirmar a escala que estamos considerando?

Primeira fala de qualquer entrevista de arquitetura. Sair desenhando sem perguntar volume e usuários é falha eliminatória.

Let's start with the simplest design that works and then scale it up.

Vamos começar com o desenho mais simples que funciona e evoluir a partir dele.

Sequência esperada: versão simples, gargalos, evolução. Abrir pela arquitetura mais complexa confunde quem avalia.

Let me point out where this design breaks first, and then we can decide what to fix.

Deixa eu apontar primeiro onde este desenho quebra, e depois decidimos o que corrigir.

Antecipar as falhas do próprio desenho conta pontos, porque o entrevistador vai procurá-las de qualquer jeito. Só use depois de ter o desenho inteiro no quadro.

There are two options here, and the trade-off is cost versus complexity.

Há duas opções aqui, e a escolha é entre custo e complexidade.

Sempre nomeie a alternativa que você descartou e o motivo. É exatamente isso que está sendo avaliado.

I'm assuming ten million daily active users. Is that reasonable?

Estou assumindo dez milhões de usuários ativos por dia. Faz sentido?

Explicite as premissas e peça confirmação. Se o número estiver errado, você corrige antes de desenhar tudo em cima dele.

How many users are we designing for, and what's the read-write ratio?

Para quantos usuários estamos projetando, e qual é a proporção entre leitura e escrita?

Duas perguntas de escopo que quem entrevista espera ouvir. A proporção entre leitura e escrita define metade da arquitetura.

If we had more time, I'd add monitoring and a rollback strategy.

Se tivéssemos mais tempo, eu acrescentaria monitoramento e uma estratégia de reversão.

Bom fechamento quando o tempo acaba. Mostra que você sabe o que ficou faltando sem tentar cobrir tudo às pressas.

17 itens neste tópico.