Processo Seletivo

Entenda as etapas do processo seletivo para vagas remotas em empresas estrangeiras.

Star
406

Quando você é chamado para uma entrevista, você pode esperar que o processo tenha pelo menos três fases. É importante se preparar adequadamente para cada uma delas.

Entrevista com recrutamento

Entrevista inicial com RH para entender suas experiências e objetivos

Entrevistas técnicas

Avaliação das suas habilidades técnicas através de testes e desafios

Entrevista cultural

Conversa com hiring manager e/ou fundadores para avaliar fit cultural

Reference check

Verificação de referências com ex-colegas e líderes (não tão comum)

Oferta

Proposta formal de contratação

Espere que as entrevistas sejam totalmente em inglês (mesmo com brasileiros te entrevistando), prepare-se para isso.

Etapa 1
Entrevista com recrutamento
Essa etapa (eliminatória) é basicamente uma entrevista de RH para entender suas experiências, objetivos de carreira e porquê você está buscando uma vaga nessa empresa.

Perguntas comuns nessa etapa

Por que você está buscando uma vaga nessa empresa?
Expectativa salarial (em dólares)
Por quê você quer sair da empresa atual?
Me conte sobre o projeto mais complexo que você participou:
Qual foi seu papel nele?
Quais foram os resultados?
Quais foram os desafios?
Quais foram as tecnologias envolvidas?

Dicas

Não minta, quem tem bastante experiência em entrevistas consegue saber quando a pessoa está mentindo.
Tenha alguns projetos em mente antes dessa conversa, recomendo utilizar o método STAR.
Faça o cálculo da sua pretensão salarial, calcule quanto ganha atualmente mais os benefícios (convênio, VA/VR, ações, etc.) coloque uma margem a mais que faça valer a pena a troca de emprego.
Pense nos motivos que faça você querer mudar de emprego, alguns exemplos mais comuns: trabalho 100% remoto, carreira internacional, maiores desafios técnicos, interesse pelo mercado, trabalhar com tecnologia X.
Etapa 2
Entrevistas e testes técnicos
Passando da entrevista com recrutamento, a próxima fase geralmente são as entrevistas técnicas (mas é possível que seja com o seu possível líder).

Possíveis desafios nessa etapa

Teste técnico com tempo limitado
Take home project (exercício para fazer async)
Live coding (desafio técnico de programação)
System design (desafio de arquitetura)
Conversa técnica (um pouco mais rara que as outras)
Perguntas sobre projetos anteriores
Perguntas sobre linguagens e frameworks
Perguntas sobre design patterns
Perguntas sobre arquitetura de software

Tipos de testes técnicos

Existem diferentes formatos de testes técnicos que as empresas podem utilizar para avaliar suas habilidades. É importante se preparar para cada um deles.

Se nunca fez um teste técnico cronometrado, recomendo treinar alguns desafios easy e medium no Leetcode antes de fazer o teste, com tempo cronometrado pra você se acostumar com a pressão do tempo.

Teste com tempo limitado

Geralmente as empresas utilizam alguma plataforma como o HackerRank. Antes de fazer o teste, teste a plataforma, veja as features disponíveis e depois de entender como ela funciona, já pode começar a fazer o teste.

Take home project

Leia bem os requisitos do desafio antes de começar a resolver, caso tenha alguma dúvida, mande mensagem pro recrutador pra entender melhor o que é esperado.

Conceitos fundamentais

Algoritmos e Estruturas de Dados

Entenda os principais algoritmos de ordenação, busca e manipulação de dados, além das estruturas como arrays, listas, árvores e grafos.

Complexidade de Tempo e Espaço

Saiba analisar a eficiência de algoritmos em termos de tempo de execução e uso de memória (notação Big O).

Manipulação de Dados

Conheça técnicas para processar, filtrar e transformar dados de forma eficiente.

Resolução de Problemas

Desenvolva a habilidade de decompor problemas complexos em partes menores e mais gerenciáveis.

Plano de estudos

Algoritmos Fundamentais
  • Busca binária e suas variações
  • Algoritmos de ordenação (QuickSort, MergeSort)
  • Programação dinâmica
  • Algoritmos gulosos (Greedy)
Estruturas de Dados
  • Hashmaps e Sets
  • Árvores (Binária, BST, AVL)
  • Heaps e Filas de Prioridade
  • Grafos e algoritmos de travessia
Técnicas de Otimização
  • Two pointers e sliding window
  • Divide and conquer
  • Backtracking
  • Memoização e tabulation
Para Frontend
  • Manipulação do DOM
  • Gerenciamento de estado
  • Renderização e performance
  • Acessibilidade e responsividade
  • SEO e HTML semântico
Além do código

1. Comunicação clara do seu raciocínio.

2. Validação de inputs e tratamento de edge cases.

3. Testes e verificação da solução.

4. Refatoração e melhoria de código.

Dicas para se preparar

Pratique regularmente em plataformas como LeetCode, HackerRank ou CodeSignal
Estude os padrões comuns de problemas (Two Pointers, Sliding Window, etc.)
Ao resolver problemas, verbalize seu pensamento e explique sua abordagem
Teste sua solução com casos de borda e exemplos variados
Dicas de estudo

Para vagas em startups mais consolidadas recomendo estudar algoritmos e estrutura de dados. Recomendo este livro de algoritmos, o canal do Neetcode e a própria plataforma do Leetcode.

Eu também tenho um site com conteúdos visuais pros algoritmos mais comuns em entrevistas, caso queira dar uma olhada, é o Standout Dev.

É possível que vagas de front cobrem também, mas recomendo focar em exercícios práticos envolvendo HTML, CSS, JS/TS puro e também treinar frameworks como React e TailwindCSS. Recomendo usar o Great Frontend pra treinar.

Dicas para Take Home Projects

Coloque-se no lugar da pessoa que vai revisar o seu teste, o que você gostaria que tivesse na solução de um candidato?

Muitas empresas, se você passar dessa fase, podem fazer o live coding com base no seu teste. Prepare-se para explicar detalhadamente as decisões que tomou no desenvolvimento.

Documentação clara

Inclua um README detalhado com instruções de instalação, execução e testes do projeto.

Qualidade de código

Mantenha o código limpo, bem organizado e seguindo boas práticas de desenvolvimento.

Arquitetura sólida

Implemente uma arquitetura bem estruturada com separação clara de responsabilidades.

Testes automatizados

Inclua testes unitários e de integração para demonstrar a qualidade do seu código.

O que incluir no seu projeto

README completo

Inclua arquitetura do projeto, tradeoffs, decisões de design, racional da escolha das tecnologias, como executar o projeto, como rodar os testes e link para um vídeo de demo.

Testes unitários

Demonstre que você se preocupa com a qualidade do código.

Dockerização

Facilite a execução do projeto para quem vai avaliar.

Separação de concerns

Mantenha o código organizado e bem estruturado.

Código simples e legível

Priorize código de fácil entendimento, com nomes auto-explicativos.

Dicas importantes

Busque fazer a sua solução a mais simples possível, evite over engineering.
Limite o uso de bibliotecas externas ao essencial (a menos que seja especificado nos requisitos).
Deixe o código extensível e reutilizável para facilitar futuras modificações.
Prepare-se para explicar as decisões de design e tradeoffs que você fez na sua solução.

Dicas para Live Coding

O live coding é uma das etapas mais desafiadoras do processo seletivo. É importante se preparar adequadamente e manter a calma durante a entrevista.

Mesmo que você já tenha se deparado com um problema parecido ou igual nos seus estudos, é essencial tirar todas as dúvidas sobre possíveis edge cases e tradeoffs antes de começar a implementar.

Comunicação clara

Explique seu raciocínio em voz alta enquanto resolve o problema, compartilhando sua linha de pensamento.

Abordagem estruturada

Divida o problema em partes menores e resolva cada uma delas de forma metódica e organizada.

Estruturas de dados adequadas

Escolha as estruturas de dados mais apropriadas para o problema, justificando sua escolha.

Análise de complexidade

Analise a complexidade de tempo e espaço da sua solução e proponha otimizações quando possível.

Passos importantes

Tire todas as suas dúvidas sobre o problema antes de começar a implementar.
Comunique seu plano de solução antes de começar a codificar.
Teste seu código com exemplos simples e casos de borda.
Considere otimizações após ter uma solução funcional.

Exemplos de comunicação

Estrutura de dados

"For this challenge I believe using hashmaps is the best way forward because it has O(1) lookup time and it's pretty straightforward to implement."

Lógica de implementação

"I'll use this hashmap to store the numbers and their indices. Then, I'll iterate through the array, and for each element, I'll check if the complement (target - current element) exists in the hashmap. If it does, I'll return the indices of the two numbers. If it doesn't, I'll add the current element and its index to the hashmap and continue until the pair is found."

Pontos a considerar

Pontos gerais
  • • Complexidade de tempo
  • • Complexidade de espaço
  • • Boas práticas de linguagem
  • • Legibilidade do código
  • • Extensibilidade
  • • Reusabilidade
  • • Testabilidade
Específico para Frontend
  • • Acessibilidade
  • • Performance
  • • Responsividade
  • • SEO
  • • Usabilidade
  • • Componentização
  • • Reusabilidade
  • • Extensibilidade

System Design

Para essa fase, recomendo estudar boas práticas de arquitetura de software e design patterns. Além disso, é importante se aprofundar em diversos conceitos fundamentais.

Não há respostas certas, o importante é demonstrar conhecimento e aprendizados de um bom desenvolvedor sênior.

Cloud Computing

Geralmente não é obrigatório saber tudo sobre AWS por exemplo, mas é bom saber os conceitos que são base de todas as soluções cloud.

Escalabilidade

Entenda como escalar sistemas horizontalmente e verticalmente, e quando usar cada abordagem.

Performance

Conheça técnicas para melhorar a performance de sistemas, como caching, otimização de consultas, etc.

Banco de dados

Entenda diferentes tipos de bancos de dados (SQL, NoSQL) e quando usar cada um.

Plano de estudos

Modelos de Consistência
  • Consistência forte, eventual e causal
  • Teorema CAP
Padrões Arquiteturais
  • Arquitetura baseada em eventos
  • CQRS (Command Query Responsibility Segregation)
  • Arquitetura serverless
  • Padrões de API gateway
Sistemas Distribuídos
  • Service discovery
  • Cache distribuído (Redis, Memcached)
  • Mensageria (Kafka, RabbitMQ)
Infraestrutura
  • Conteinerização (Docker) e orquestração (Kubernetes)
  • Infrastructure as Code (Terraform, CloudFormation)
  • Observabilidade (logs, monitoramento, tracing)
Além da parte técnica

1. Relação custo-benefício, seja em termos de tempo de desenvolvimento, custos, escalabilidade, performance, etc.

2. Considerações sobre time-to-market (quanto antes a solução estiver no ar com clientes testando, melhor, a iteração rápida é essencial)

3. Designs flexíveis que se adaptam às necessidades do negócio (é muito comum em startups criar MVPs com uma solução em mente mas ter que mudar completamente com o feedback do mercado)

4. Soluções simples que minimizam o trabalho de manutenção

Na hora da entrevista

Faça perguntas pra entender os requisitos funcionais e não-funcionais.
Inicie com um diagrama de arquitetura simplificado, e vai evoluindo conforme a solução vai sendo discutida.
Fale de forma proativa potenciais gargalos na sua solução e como você resolveria eles (se o entrevistador quiser mais detalhes, ele vai te perguntar, não vá muito a fundo para não perder tempo de entrevista).
Explique claramente os prós e contras das suas escolhas.
O mais importante dessa fase é o entrevistador entender como você pensa sobre o problema e como você aborda o problema, o que você aprendeu com suas experiências passadas e como você utiliza esses conhecimentos para resolver problemas de arquitetura.
Dicas de estudo

Recomendo estudar o Designing Data-Intensive Applications e o System Design Interview pra essa fase.

Esse site tem uma lista com os 10 casos mais comuns de system design e os racionais de cada uma dessas soluções.

Etapa 3
Entrevista cultural
Essa etapa é basicamente uma conversa com o seu possível líder e/ou fundadores para entender como você se encaixa na cultura da empresa. É possível que tenha algum componente técnico nessa entrevista, mas geralmente é mais uma conversa sobre como você se encaixaria na cultura da empresa e do time.

Perguntas comuns nessa etapa

Por que você quer trabalhar nessa empresa?
Qual foi o pior feedback que você já recebeu e como você reagiu a ele?
Você prefere ambientes mais dinâmicos ou mais calmos?
Como você lida com incertezas?
Me conte sobre um projeto que você se orgulha e por quê?
Como você geralmente aprende novas tecnologias?
Quais são suas expectativas com o cargo?

Dicas

Seja objetivo nas respostas, caso a pessoa queira saber mais detalhes, ela vai te perguntar.
Antes da entrevista, relembre os projetos mais relevantes da sua carreira e como foi sua participação neles (igual na entrevista com recrutamento, mas com um nível mais aprofundado de tecnologia e impacto).
De novo, não minta sobre suas experiências, o mundo de tecnologia é pequeno e não vale a pena se queimar.
Faça perguntas sobre a empresa, sobre o cargo, sobre a equipe, sobre o ambiente de trabalho, sobre a empresa em si, essa entrevista é uma oportunidade pra você conhecer mais sobre a empresa, a vaga e o time que você trabalharia.
Etapa 4
Reference check
Essa etapa é menos comum mas se fizer parte do processo, é uma etapa para a empresa validar suas experiências e também para entender como é trabalhar com você.

Geralmente te pedem para fornecer alguns contatos de ex-colegas e líderes diretos.

Antes de fornecer esses contatos, recomendo conversar com eles para saber se tudo bem mandar o contato deles.

Etapa 5
Oferta
Se tudo deu certo, a empresa vai marcar uma reunião com você para fazer a oferta ou já te enviar uma oferta por email.

1. Leia a oferta com calma, não se sinta pressionado a aceitar logo de cara, principalmente se tem outros processos em andamento que queira ir até o final.

2. Caso tenha outros processos em andamento, recomendo alinhar com o recrutador sobre o status de cada processo e o prazo de resposta que você tem para dar aceitar ou não a oferta.

Perguntas importantes nessa etapa

O salário vai ser pago em dólares?
Há possibilidade de promoções/aumentos?
O formato de contratação é CLT ou PJ (mais comum)?
Qual o fuso horário que você terá que trabalhar?
Usarei equipamento próprio ou a empresa fornecerá?
Há política de PTO (paid time off)? Feriados nacionais estão incluídos?
Há benefícios como VA/VR, plano de saúde, etc.?
Prazo para início do trabalho?