Artigo original: Cracking the front-end interview
As entrevistas técnicas na área de front-end são difíceis. Isso é um fato. Você não precisa apenas de um conhecimento sólido em fundamentos ciência da computação, mas também precisa de um entendimento relacionado ao desempenho da web, construção de sistemas e engines de layout com o CSS.
Apesar de existirem recursos por ai, eu encontrei apenas algumas guias para ajudar você a se preparar para uma entrevista na área de front-end. Então, eu decidi escrever um artigo em tópicos que espero poder ajudar você a se sair bem em sua próxima entrevista.
Antes da entrevista
Antes de sua entrevista, pergunte ao seu recrutador qual o formato da entrevista. Em algumas entrevistas é usado o quadro branco, enquanto em outras é usado um editor de texto on-line como o CoderPad. É importante você saber para que possa praticar no ambiente que ocorrerá na entrevista.
Pergunte para seu recrutador quais tópicos você deve focar quando estiver se preparando. A razão por trás disso é porque além de perguntas especificas de front-end, algumas empresas farão perguntas tradicionais de ciência da computação, sobre tópicos como algoritmos de busca e classificação.
Conceitos de front-end
HTML, CSS, JavaScript e padrões de design em JavaScript são as chaves do que você deverá encontrar durante uma entrevista. Examine a lista e certifique-se de que está confortável com cada tópico.
HTML e CSS são o básico do desenvolvimento para front-end. Durante as entrevistas, você deve está preparado para as perguntas sobre nuances do HTML e CSS. Desde já, esteja preparado para programar um layout baseado em um mockup.
Se você precisar relembrar alguma coisa de HTML e CSS, aqui estão alguns conceitos básicos para praticar (em inglês):
Além desses conceitos, estude sobre pré-processadores de CSS, como SASS ou LESS e seus benefícios. Também procure entender as convenções de nomenclaturas do CSS como BEM e OOCSS.
Outro ponto importante é que os entrevistadores buscam candidatos que defendam boas praticas de CSS. Como uma boa referência, esse guia escrito por um desenvolvedor de front-end do Medium proporciona informações sobre como o Medium chegou até sua arquitetura de CSS atual.
Eu mencionei inicialmente que alguns entrevistadores pedirão para você recriar layouts em HTML e CSS. Faça isso em um playground como o CodePen. Pesquise no Dribbble, pois ele tem muitos designs simples que podem ser divertidos de recriar.
Finalmente, como desenvolvedores para front-end, estamos acostumados a fazer mudanças em nosso editor e depois verificar as mudanças em nosso navegador. Porém, na maioria das vezes durante as entrevistas, você não terá esse luxo. Quando você estiver se preparando para a entrevista, tente programar a maior parte de seu layout sem ficar olhando o resultado até o fim.
Se o HTML e o CSS são o básico do desenvolvimento para front-end, o JavaScript é o que faz as coisas acontecerem. As empresas durante a entrevista, gastarão um bom tempo testando seu conhecimento em JavaScript. Muitas questões girarão em torno dos seguintes conceitos (alguns dos textos em inglês):
- Herança e cadeia de protótipos
- Escopo
- Closures
- Event loop
- Bolhas de eventos
- Apply, call e bind
- Callbacks e promises
- Hoisting de variáveis e funções
- Currying
Quando receber uma pergunta de JavaScript, descubra em qual desses conceitos você esta sendo testado e será muito mais fácil descobrir a resposta certa. Se você se sente confiante em suas habilidades, teste seus conhecimentos aqui, aqui e aqui.
Os padrões de design em JavaScript fornecem soluções repetíveis de problemas comuns. Esses são alguns padrões de design que são importantes conhecer:
Além dos padrões de design do JavaScript, é bom esta familiarizado com os frameworks do JavaScript. Isso não significa que você tem que aprender outro framework antes da sua entrevista. Em vez disso, aprenda quando e por que as equipes de front-end usam frameworks. Além disso, se você está participando de uma entrevista que envolve algo como React + Flux ou Angular, revise um pouco da documentação de arquitetura do framework antes.
Conceitos da ciência da computação
Algumas empresas contratam engenheiros de software antes de desenvolvedores para front-end. Isso significa que as empresas esperam que você tenha um bom conhecimento em alguns tópicos, como princípios de design de software, arquitetura de código escalável e testes.
Se seu recrutador sugerir que você revise seus conhecimentos em estruturas de dados e algoritmos, esta sessão é pra você. Caso contrário, sinta-se a vontade para pular a seção. Se você não tem formação em ciência da computação, sem problemas. A maior parte desses conceitos são fáceis de aprender.
Essas são as estruturas básicas que eu gostaria de sugerir. Não se prenda apenas na leitura, reserve um tempo para implementá-las em JavaScript. Se você não está familiarizado com testes unitários, teste sua estrutura de dados com uma biblioteca como o Mocha para aprender.
- Listas vinculadas
- Tabelas hash
- Pilhas e filas
- Árvores (árvores binárias e heaps)
- Grafos
Nota: para grafos, procure saber como implementar travessias de busca em profundidade e em largura.
Para as implementações dessas estruturas de dados, você pode consultar a SanFoundry. Todos os exemplos estão em Java, mas reimplementá-los em JavaScript é fácil.
Uma vez que você estiver confiante sobre estruturas de dados, você pode passar para a ordenação. Implemente os algoritmos em JavaScript, faça anotações sobre suas complexidades de tempo e espaço.
- Busca binária
- Ordenação de bolha (Bubble sort)
- Ordenação de inserção (Insertion sort)
- Ordenação de mescla (Merge sort)
- Ordenação rápida (Quick sort)
- Ordenação de seleção (Selection sort)
Depois de revisar estruturas de dados e algoritmos, teste seus conhecimentos com o Leetcode e com perguntas técnicas sobre JavaScript (links em inglês).
Para encerrar
Eu sei que é muita coisa para absorver, especialmente se você é novo na área de desenvolvimento para front-end. Comece se preparando para suas entrevistas com antecedência, então você se sentirá mais confortável quando chegar a hora.
Além do mais, lembre-se de que, independentemente do resultado, as entrevistas não medem o seu valor como programador. Algumas pessoas são boas nas entrevistas; outras, não. Às vezes você conquista o entrevistador; às vezes, não.
Se você tiver alguma dúvida, deixe uma nota no Twitter para o autor. Ele gostaria saber como foi sua entrevista. Boa sorte!
Se quiser saber mais, siga o autor no Twitter. Lá, ele publica informações sobre design, desenvolvimento para front-end, bots e aprendizagem de máquina.