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.

kSrkqRoD-JwPE5pcgrSLh5iafT5rmv9sIsAf
HTML e CSS

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.

sQoNHfiwR2EPih7QE2yoE3uaq-XLBPUVwaUI
Conceitos de JavaScript

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):

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.

HgMt84IgJJ25UCc04UOAq-Eyf9bMJTcGOiyz
Padrões de design

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.

76cnKEq5zyOttGxS4niXFV3uomvDUu4VHBbB
Estruturas de dados

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.

5kzjHR2GSeHicNrakjPogvJbR63hTxfALqim
Ordenação

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.