Ao tentar conseguir um emprego de engenharia de software, você provavelmente terá que passar por várias entrevistas, incluindo design comportamental e de sistema. Mas no final das contas, tudo se resume a uma coisa: suas habilidades de codificação. Sua proficiência em codificação é o fator chave que determinará se você é a pessoa perfeita para a função. Independentemente do seu nível de experiência - seja você um desenvolvedor experiente ou recém-saído da universidade - acertar uma entrevista de codificação pode ser difícil, mas a persistência e o trabalho duro compensam. Como alguém que recebeu uma oferta do Facebook após um ano inteiro de preparação, sei disso em primeira mão. Neste artigo, gostaria de compartilhar com você algumas dicas e estratégias que aprendi ao longo do caminho. Vamos mergulhar.
Dica nº 1 — Pratique a codificação
Em seu trabalho diário como engenheiro de software, você pode não estar usando muito algoritmos e dados. Ainda assim, eles são princípios básicos essenciais que você precisa saber. Então, como você fica bom nisso? Aprender algoritmos e estruturas de dados pode ser desafiador, mas não é ciência de foguetes ou arte secreta. A questão principal é a quantidade de tempo que leva para aprendê-los, então planejamento e prática são fundamentais. Pense em melhorar suas habilidades de codificação, como fortalecer seus músculos. Você não pode esperar ficar todo definido e tonificado em apenas algumas semanas de exercícios intensivos. Da mesma forma, você não dominará os algoritmos em questão de dias. A chave é fazer um esforço consistente e constante durante um longo período para obter os resultados desejados. Em 2019, quando comecei a me preparar para entrevistas de codificação, não sabia como escrever até mesmo os algoritmos mais básicos, como a Pesquisa Binária. Levei cerca de seis meses de prática consistente para conseguir minha primeira entrevista no local com o Google. Como foi? Eu falhei. Mas eu desisti? Não. Continuei praticando por mais um ano até que finalmente recebi uma oferta do Facebook (que agora conhecemos como Meta). Portanto, o resultado final é que aprender essas habilidades leva tempo e esforço, mas a recompensa pode mudar a vida! Quando você começa a trabalhar em problemas de codificação, é perfeitamente normal sentir-se um pouco sobrecarregado. Você pode até se pegar pensando: "O que há de errado comigo? Por que não consigo resolver nem mesmo o problema mais simples?" Isso é apenas uma parte natural do processo de aprendizagem. Você vai melhorar com o tempo. Uma estratégia útil e testada pelo tempo para lidar com a sensação de sobrecarga é dividir uma grande tarefa em partes gerenciáveis e definir metas alcançáveis. Eu recomendo começar com 1-2 problemas de nível fácil ou médio todos os dias e gastar cerca de 15 a 30 minutos em cada um. Isso ajudará você a desenvolver suas habilidades de resolução de problemas gradualmente e a evitar ficar sobrecarregado. Depois de começar a se sentir mais confiante, você pode aumentar a intensidade resolvendo até 3-4 problemas por dia. Para lhe dar uma ideia do que é possível com a prática consistente, resolvi pessoalmente cerca de 200 problemas (50% Médio, 40% Fácil, 10% Difícil) mais de um ano antes de receber minha primeira oferta de uma grande empresa de tecnologia. Lembre-se de que todos aprendem em seu próprio ritmo, portanto, certifique-se de determinar a quantidade de prática que funciona melhor para você. O importante é manter o foco e seguir em frente.
Se você deseja encontrar recursos excelentes para praticar a codificação e aprimorar suas habilidades de entrevista, há várias opções que você pode considerar. Alguns dos melhores são Leetcode , e Codeforces — essas plataformas oferecem uma variedade de problemas desafiadores que podem ajudá-lo a aprimorar suas habilidades de codificação.
Mas se você precisar de mais estrutura ou orientação, também existem recursos como o Interviews.school ou cursos pagos como o Algoexpert.io. Isso pode ser especialmente útil se você estiver apenas começando ou se não tiver certeza de por onde começar. Usei todos esses recursos durante minha própria jornada de preparação para entrevistas e posso garantir sua qualidade.
Dica #2 — Conheça sua linguagem de programação
É importante ter um domínio sólido do idioma que você usará para mostrar ao máximo suas habilidades técnicas e capacidade de resolução de problemas. Normalmente, você pode escolher o idioma para sua codificação algorítmica, mas às vezes o entrevistador pode ter requisitos de idioma específicos. Certifique-se de verificar isso antes. Use o idioma com o qual você se sente mais confortável, mesmo que não seja o seu idioma principal. Certifique-se de conhecer suas estruturas de dados comuns, atalhos e gerenciamento de memória. Minha escolha para entrevistas de codificação é Python, embora eu trabalhe com PHP diariamente. A sintaxe fácil do Python me ajuda a prototipar soluções rapidamente e não preciso me preocupar com coisas como sinais de $, colchetes ou ponto-e-vírgula. Para melhorar suas habilidades em sua linguagem de programação, gaste tempo aprendendo seus fundamentos, praticando codificação e estudando as soluções de outros programadores. Eu recomendo verificar o Leetcode — em sua seção de comentários e discussões, você pode encontrar ótimos exemplos e técnicas para aprender.
Dica #3 — Faça perguntas esclarecedoras
Não se apresse em resolver um problema sem antes fazer perguntas. Este é um erro comum que pode ser uma bandeira vermelha para os entrevistadores. Faça algumas perguntas esclarecedoras, mesmo que se sinta confiante de que entendeu o problema corretamente. Os problemas de codificação são intencionalmente ambíguos e os entrevistadores não fornecem todos os detalhes necessários antecipadamente.
Em vez disso, os entrevistadores esperam que você esclareça os detalhes, então faça algumas perguntas para ter certeza absoluta de que você e o entrevistador estão na mesma página.
Além disso, você poderá identificar e esclarecer casos extremos. Por exemplo, você pode querer perguntar sobre o formato da entrada, os tipos de dados envolvidos ou se o problema tem alguma restrição. Conhecer detalhes específicos pode economizar tempo e permitir que você se concentre na tarefa em questão.
Dica #4 — Fale sobre sua solução antes de codificar
Quando estiver resolvendo um problema em uma entrevista, não se apresse em começar a codificar. Reserve um momento para falar sobre sua solução primeiro. Isso o ajudará a esclarecer o problema e garantir que você tenha um plano sólido antes de mergulhar. Conversar também pode economizar tempo e evitar que você cometa erros desnecessários. Eu quase caí nessa armadilha. Em uma entrevista, fui solicitado a implementar correspondência de prefixo de string. Imediatamente pensei em uma solução bastante complexa que envolvia um Trie. Mas assim que comecei a descrever minha ideia em voz alta, o entrevistador me interrompeu e pediu uma maneira mais simples que envolvia apenas iterar duas strings.
Se eu tivesse começado a codificar imediatamente, teria perdido tempo com uma solução supercomplicada que o entrevistador nem estava pedindo.
Depois de falar sobre a solução e o entrevistador ficar satisfeito com ela, só então você poderá começar a implementá-la.
Dica #5 — Comunique-se
Durante uma entrevista de codificação, o entrevistador não está tão interessado em saber se você realmente chegou à solução.
Eles querem ver como você aborda o processo de solução de problemas.
Certifique-se de soletrar seu pensamento e explicar seu raciocínio à medida que avança. Lembre-se de que o entrevistador está do seu lado e está lá para ajudá-lo a ter sucesso. Pense na entrevista como um esforço de equipe, onde você e o entrevistador estão trabalhando juntos para encontrar uma solução. Você deve falar a maior parte do tempo (cerca de 70-80% do tempo). O entrevistador pode ocasionalmente fornecer feedback ou corrigi-lo. Tenha a mente aberta e esteja disposto a aprender com o feedback do entrevistador, usando-o a seu favor. Seja amigável e receptivo durante toda a entrevista. Se você precisar de um momento para se concentrar, avise o entrevistador. Faça uma breve pausa para organizar seus pensamentos, mas não deixe que isso se arraste por muito tempo.
Dica #6 — Teste sua solução
Não se esqueça de testar rigorosamente seu código depois de terminar. O teste é importante para ajudar a detectar quaisquer erros ou problemas que você possa ter perdido. Para garantir que seu código produza a saída esperada, use as entradas de exemplo fornecidas pelo entrevistador. Considere testar casos extremos, incluindo limites de entrada, formatação ou tipo de entradas, valores vazios, nulos ou negativos e entradas muito pequenas ou muito grandes. Quando estiver testando, analise seu código linha por linha e verifique os valores de variáveis e expressões. Dessa forma, você detectará erros difíceis de detectar apenas dando uma olhada no código. Depois de testar tudo, dê um passo para trás e pense em como você pode tornar seu código ainda melhor. Talvez haja uma maneira mais eficiente de resolver o problema ou você pode tornar o código mais fácil de ler e entender.
Conclusão
As entrevistas de codificação são um desafio, mas você pode melhorar muito suas chances de sucesso com uma preparação e prática completas.
Vamos recapitular as principais conclusões:
- Estude os fundamentos;
- Conheça o seu idioma;
- Faça perguntas esclarecedoras;
- Fale sobre suas soluções antes de codificar;
- Teste sua solução completamente;
Fique calmo e aborde a entrevista como um processo colaborativo de resolução de problemas. Boa sorte em suas futuras entrevistas de codificação!
A imagem principal foi gerada usando o recurso Stable DiffusionAI Image Generator do HackerNoon, por meio do prompt "uma entrevista de codificação no facebook".