Entrevistas no exterior (ou como eu me preparo para elas)
(baseado em um post meu no instagram)
As entrevistas para as grandes empresas de tecnologia no exterior tem uma forma de entrevista similar. A parte que mais varia é a de soft-skills, que geralmente vai perguntar sobre o seu passado para saber se você é um bom cultural fit para a empresa.
Por causa disso, quando estou pensando em mudar de empresa, eu geralmente reviso os mesmos materiais, independentemente das empresas que irei entrevistar. A única exceção foi a Amazon, que eu ainda não conhecia essas dicas e acabei passando para Software Engineer L4 somente com o que tinha aprendido no Mestrado1. Esse conteúdo me ajudou a passar nas empresas: MongoDB, Stripe e Huawei.
Normalmente alguma pessoa recrutadora vai fazer a primeira “entrevista”, que é basicamente para te falar da vaga, da empresa e ver se faz sentido mesmo continuar. Após essa conversa inicial, você terá que resolver algum exercício de programação. Geralmente é algo de nível médio, você provavelmente vai ter que usar alguma estrutura de dados específica ou Programação Dinâmica. Você também terá que discutir a complexidade do algoritmo (em Big O). Algumas empresas aqui podem pedir um projetinho básico (e.g. um app de TODO) ou para você comentar sobre algum design de sistemas.
A segunda parte é normalmente uma ligação com alguém do time que é focada na parte de programação, você terá novamente que programar algo de nível médio de dificuldade na frente de alguém. O segredo aqui é fazer várias perguntas para ver se você realmente entendeu o problema. Caso você esteja travado, tente conversar com a pessoa que está te entrevistando. Muito provavelmente ela irá te dar dicas.
A terceira parte é uma tarde de entrevistas com 4 ou 5 pessoas do time. Aqui você normalmente tem: uma entrevista com o gerente (soft skills), uma sobre programação, uma sobre design de sistemas. As outras entrevistas do dia variam de empresa para empresa, você pode ter que conversar com alguém do RH, pode ter que debuggar um problema ou pode ser só mais uma entrevista de programação.
Para estudar para esses temas eu uso:
- donnemartin/system-design-primer: Eu geralmente reviso todo o conteúdo do repositório, é deverás util para as perguntas de design de sistemas
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems: Eu gosto desse livro para me aprofundar em temas de design the sistemas. Eu já li o livro algumas vezes, então eu leio capitulos especificos que eu sinto que nao lembro o suficiente dos detalhes
- leetcode: Leetcode é um site onde você pode praticar resolver problemas bem parecidos com os das entrevistas. Eu fico resolvendo somente os médio e fáceis. Eu não vejo muita utilidade nos mais difíceis.
Digo no mestrado porque tive que usar muita estrutura de dados e algoritmos na entrevista e isso eu aprendi de maneira aprofundada na Unicamp. ↩︎