Se você está programando desde que o seu pijama tinha pés ou se está enfrentando o cano de sua primeira caçada pós-escola, a entrevista técnica pode ser um obstáculo terrível entre você e seu emprego dos sonhos.
Mas não tenha medo, apenas prepare-se para mostrar suas habilidades. Abaixo você encontrará algumas dicas úteis para qualquer entrevista técnica.
Antes da Entrevista
Compre um livro
O mais cedo possível antes da entrevista (embora eu tenha conseguido apenas duas semanas), comece a se preparar. Trabalhar com um livro de preparação não apenas atualizará seu conhecimento de algoritmos e estruturas de dados, mas também o colocará na mentalidade correta de solução de problemas.
Mais importante ainda, escolha o livro de preparação certo para o seu nível e interesses. Quebrar a entrevista de codificação é um ótimo recurso, mas se você ainda não é um programador razoavelmente experiente, não vai compensar a experiência. Se você está apenas começando, há outros livros dos quais você obterá mais milhagem, como Entrevistas de programação expostas: Segredos para o pouso de seu próximo emprego . E há muitos livros mais especializados e avançados para aqueles com mais experiência.
A prática leva à perfeição
Poucas coisas batem em pânico como a prática, então comece com o quadro sempre que puder, mesmo com problemas muito pequenos. A codificação de livros de entrevistas oferece problemas de amostra quase infinitos, mas você também pode usar problemas nos quais já está trabalhando. Coloque o problema em você mesmo (ou peça a um amigo tecnicamente inclinado para posar para você, para uma configuração mais realista), mapeie sua estratégia e coloque marcador no quadro branco. Quanto mais confortável você estiver ao marcar o quadro em branco em casa, menos hesitante ficará na entrevista.
Se você está com pouco tempo e quer superar os abalos rapidamente, você pode adicionar pressão que não estará lá na entrevista real. Se você se der um limite de tempo ou tiver alguém que respeite desempenhando o papel de seu entrevistador, o negócio real parecerá um pedaço de bolo.
Não se sobrecarregue
Quando você está agendando entrevistas, não se esqueça de deixar pelo menos algumas horas entre cada uma delas. Isso soa como um problema de primeiro mundo, mas sempre que eu tinha várias entrevistas em um dia, eu não tinha um desempenho tão bom quanto eu poderia ter. Eu ou me preocupava em chegar ao próximo na hora ou eu já havia estourado minha lógica horas antes.
Ah, e durma um pouco. Isso soa como algo que sua mãe diria a você, mas há poucas coisas que vão tirar você do seu jogo como a privação do sono. É comparável a aparecer bêbado.
Na entrevista
Esteja preparado para qualquer coisa
Uma vez que você chegou à sua entrevista, você deve estar preparado para alguns tipos diferentes de solução de problemas. Seus entrevistadores podem pedir-lhe para falar sobre como você resolveria um problema, eles podem abrir um computador e pedir-lhe para orientá-los através da criação de código, ou eles podem fazer você escrever o código em um quadro branco. Esteja preparado para a variação e não se deixe enganar pelos detalhes! Não importa o método que seus entrevistadores estejam usando, são suas habilidades de resolução de problemas que eles realmente estão testando.
Pergunte
Quando você se deparar com um problema, pense bem e certifique-se de entender completamente o que está sendo solicitado a devolver. Não tenha medo de fazer perguntas com antecedência se algo não estiver claro. Se houver casos extremos, por exemplo, pergunte como seus entrevistadores querem que eles sejam tratados. Você deveria jogar uma exceção? Quebrar?
Também certifique-se de fazer perguntas de procedimento para entender o que os entrevistadores estão procurando e quais são as suas restrições - por exemplo, “existe uma linguagem específica na qual você gostaria que eu lhe entregasse minha solução?” Ou “Posso assumir que tenho acesso? para qualquer biblioteca Python?
E não faça suposições. Mesmo se você tiver certeza de que é seguro, mencione em voz alta o que você está pensando para que os entrevistadores lhe digam se você está perdendo alguma coisa.
Não tenha pressa
Depois de entender a pergunta que você está fazendo, não tenha medo de pensar e processar antes de começar a resolver o problema. Contanto que você não esteja sendo bombardeado com perguntas rápidas baseadas no conhecimento, pausar depois de fazer a pergunta é uma coisa boa. É claro - certifique-se de não levar 10 minutos para resolvê-lo em sua cabeça sem dizer uma palavra! O ponto é usar seu tempo na frente para estruturar sua abordagem, para não tentar escrever todo o código na sua cabeça antes de tocar o marcador no quadro branco.
Pense grande foto
Pense na grande figura do problema primeiro. É bom pseudo-codificar a estrutura geral, contanto que você diga aos entrevistadores o que você está fazendo e que você pretende voltar e codificá-lo mais tarde. É uma boa maneira de descarregar a organização do problema, para que seu cérebro tenha mais espaço para processamento. Isso também ajudará se você ficar sem tempo no final; os entrevistadores pelo menos saberão como você planejou terminar a tarefa, mesmo que você não tenha chegado aos detalhes.
Além disso, não se preocupe em primeiro lugar em encontrar a maneira mais eficiente de resolver o problema, a menos que isso surja naturalmente em sua cabeça. Pregue uma solução menos eficiente e, em seguida, discuta por que ela é menos que ideal. Então, se você tiver tempo ou ver uma maneira melhor de resolvê-lo, passe para um algoritmo mais amigável ao tempo ou ao espaço. Mesmo que tudo que você tenha tempo para fazer seja terminar sua versão menos eficiente e depois explicar como você faria melhor, essa não é uma resposta ruim.
Conversar sobre isso
Mais importante: fale. Traga seus entrevistadores junto com você na sua resolução de problemas. Isso pode ser tão simples quanto delinear o que você está prestes a fazer quando estiver fazendo (“Então, vou precisar de um loop para iterar todos os itens desta lista”) ou apresentar problemas para você mesmo go (“Isso significa que vou precisar de uma maneira melhor de acessar as informações; hmm, voltarei a isso mais tarde”).
Falar através do seu processo de pensamento dá aos entrevistadores uma janela sobre como você pensa, e esse é o ponto final da entrevista. Mesmo se você acha que a sua solução é incrível, é melhor que eles saibam como você abordou o problema e chegaram à sua resposta do que para ver a resposta completa e não ter a menor idéia sobre o que o levou até lá. Também dá aos entrevistadores a chance de ajudá-lo se você estiver preso ou em um caminho que é um beco sem saída.
Traga suas habilidades pessoais também
Só porque você está indo para um trabalho de engenharia não significa que você pode deixar de ser gentil e responsável. Eu ouvi histórias de terror de programadores fantásticos que não foram contratados porque não eram adequados à cultura ou tinham uma atitude ruim. Tenho certeza que você também tem. Não seja essa pessoa.
Curiosidade e entusiasmo são valorizados em qualquer funcionário - e os desenvolvedores não são diferentes. Pergunte sobre a equipe de engenharia da empresa, sua pilha e os problemas mais difíceis que ela enfrenta para o produto. Claro, há uma linha tênue entre ser entusiasta e ser bajuladora, então mantenha-a genuína, mas todo mundo adora um candidato que esteja interessado no produto em que ele ou ela estará trabalhando.
Aprenda algo novo
Finalmente, uma das coisas que os entrevistados mais sentem falta é a oportunidade de aprendizado. Com sorte, você aprenderá algo novo em cada entrevista - você adquirirá uma nova ideia ou uma nova ferramenta, ou obterá alguns insights sobre produtos e tecnologias interessantes. Quanto mais você pensar sobre suas entrevistas dessa maneira, mais valioso esse tempo será para você a longo prazo.