Recentemente, estive em uma discussão com um colega sobre questões técnicas em entrevistas. Quando me formei, passei por muitas empresas e notei que elas usavam as mesmas perguntas. Um exemplo é "Você pode escrever uma função que determine se um número é primo ou não?", 4 anos depois, acho que essa pergunta em particular é bastante comum, mesmo para um desenvolvedor júnior. Talvez eu não esteja olhando para isso da maneira correta, mas as casas de software não deveriam ser inteligentes o suficiente para pensar em suas próprias perguntas da entrevista? Estive em cerca de 16 entrevistas como graduado e as mesmas perguntas surgiram em cerca de 75% delas. Isso me leva a acreditar que muitas empresas são preguiçosas e simplesmente o Google: 'Perguntas de modelo para entrevistar desenvolvedores de software' e sinto que elas estão prestando um desserviço ao adotar essa abordagem.
Pergunta: É melhor usar um conjunto de perguntas de algum modelo ou as empresas de software devem se esforçar para ser mais originais e criar seu próprio material de entrevista?
Do meu ponto de vista, se eu falhasse em uma entrevista e saísse e procurasse boas respostas para as perguntas que eu errei, eu poderia passar pela próxima entrevista se as perguntas fossem as mesmas.
Respostas:
Muitos desses tipos de perguntas permanecem precisamente porque é difícil elaborar perguntas claras, exigem o mínimo de conhecimento de domínio possível, exigem a capacidade de criar um algoritmo sem ser uma pergunta complicada que alguém quer " obter "ou" não receber "e que as pessoas têm um histórico de respostas para comparar o candidato. E as melhores perguntas têm vários níveis de respostas corretas que permitem ao entrevistador avaliar as habilidades de resolução de problemas do candidato. Se alguém sugerir um algoritmo trivial de localização privilegiada, por exemplo, podemos conversar sobre como você pode otimizar a implementação ou o entrevistador para levar o candidato a um dos algoritmos mais sofisticados.
Estive em grupos em que vários desenvolvedores diferentes avaliaram o quão difícil seria um problema específico para um conjunto de entrevistados e as estimativas estavam por todo o mapa. Muitas pessoas olham para o FizzBuzz inicialmente e o descartam como patentemente fácil demais. Se você for à entrevista sem entender bem o quão difícil são as perguntas, a quinta pessoa que entrevistar terá uma enorme vantagem sobre a primeira pessoa, porque você aprendeu que as pessoas lutam com o FizzBuzz enquanto você teve uma impressão negativa da primeira pessoa. você entrevistou porque eles tiveram lutas idênticas.
Se os desenvolvedores estão apresentando novas perguntas, eles também tendem a ter um conhecimento cultural ou de domínio não intencional incorporado. Eles farão perguntas sobre um esporte, por exemplo, que tende a dar vantagem a pessoas que conhecem as regras desse esporte que podem rapidamente identificar uma ambiguidade ou fazer uma suposição "óbvia". Alguém totalmente familiarizado com o esporte precisa descobrir as regras do jogo em tempo real e é muito mais provável que cometa um erro ou tenha uma resposta menos sofisticada. Ou eles farão uma pergunta que, sem querer, pressupõe que os candidatos conhecerão / se lembrarão de algo relativamente pequeno. Alguém que trabalha em sistemas contábeis há anos, por exemplo, pode supor que todos saibam o que é um sistema contábil de entrada dupla ou que uma pergunta que assuma uma definição simples de esquema do sistema contábil de entrada dupla seria clara para um desenvolvedor competente. Mas isso poderia facilmente levar um bom desenvolvedor a pensar na idéia de um débito para aumentar o saldo de caixa e um crédito diminuindo o saldo de caixa. Alguém que assumiu a Contabilidade 101, no entanto, rapidamente entenderia. Se sua intenção era testar a familiaridade do candidato com a contabilidade, essa poderia ser uma pergunta perfeitamente razoável. Mas se você não estiver procurando por um especialista no assunto, seria problemático. Mas isso poderia facilmente levar um bom desenvolvedor a pensar na idéia de um débito para aumentar o saldo de caixa e um crédito diminuindo o saldo de caixa. Alguém que assumiu a Contabilidade 101, no entanto, rapidamente entenderia. Se sua intenção era testar a familiaridade do candidato com a contabilidade, essa poderia ser uma pergunta perfeitamente razoável. Mas se você não estiver procurando por um especialista no assunto, seria problemático. Mas isso poderia facilmente levar um bom desenvolvedor a pensar na idéia de um débito para aumentar o saldo de caixa e um crédito diminuindo o saldo de caixa. Alguém que assumiu a Contabilidade 101, no entanto, rapidamente entenderia. Se sua intenção era testar a familiaridade do candidato com a contabilidade, essa poderia ser uma pergunta perfeitamente razoável. Mas se você não estiver procurando por um especialista no assunto, seria problemático.
Embora eu suponha que seja possível que alguém possa memorizar as respostas para as poucas centenas de perguntas "comuns" que as pessoas usam, isso não me incomoda muito como entrevistador. Em primeiro lugar, seria algo impressionante se o fizessem e refletisse um pouco de diligência e solução de problemas. Em segundo lugar, geralmente seria um treinamento muito bom - se o desenvolvedor souber reverter uma string, conhecer alguns algoritmos para encontrar números primos, saber como escrever loops e implementar construções de controle para o FizzBuzz, conhecer os vários algoritmos gráficos que vêm regularmente, etc. - eles provavelmente são um desenvolvedor bastante completo. Se o desenvolvedor conseguisse memorizar as respostas sem aprender nada, eles seriam pegos quando o entrevistador quisesse detalhar um pouco ou eles '
fonte
Eu acho que existem perguntas fáceis que fracassam, reverter uma string etc., e existem algumas perguntas. Se você ainda não as viu antes, é difícil obter a solução ideal pretendida com a pressão adicional da entrevista e o curto período de tempo. restrições. A pior parte é que, às vezes, os recrutadores sem conhecimento técnico fazem algumas dessas perguntas e procuram uma resposta muito específica ... Se você não der a resposta ideal, eles pensam que você é um idiota absoluto. Mesmo que sua resposta funcione, resolva o problema e, embora possa não ser o ideal, não é muito ineficiente ....
Alguns exemplos:
Como você baralha um baralho de cartas? Eles estão procurando o método Fisher-Yates http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffleoutras respostas estão "erradas" ..... Isso não é algo que você provavelmente saberá, a menos que queira embaralhar as cartas antes e procurá-las especificamente. Você pode se deparar com isso durante a resposta, mas, pelo que vi, eles esperam que você conheça esse frio, por isso é duvidoso que haverá muito tempo para permitir encontrar a solução. Outra maneira menos eficiente (mas talvez mais óbvia) é criar uma nova matriz com um ponteiro para a matriz original e um número que seja um número aleatório e depois classificar a matriz pelo número aleatório. Em seguida, use a matriz classificada para construir uma nova matriz de cartões. De qualquer forma, recebi 0 crédito por apresentá-lo a um recrutador.
Outro exemplo é a pergunta sobre como você detectaria um número duplicado em uma lista de n números, todos de 1 a n-1. A resposta óbvia (que é relativamente eficiente em uma perspectiva de tempo) é usar uma tabela de hash para inserir cada elemento e, se você encontrar um já inserido, encontrou a duplicata. A resposta ideal é que os números estão entre 1 e n, se não houver duplicatas, você pode obter a soma esperada como n (n + 1) / n. Então, se você soma a matriz, obtém a soma real que é nd menor que a soma esperada. Então, basicamente n - (soma esperada - soma real) = número duplicado ... É um caso muito especial ... Na verdade, vi algo antes em algum post on-line sobre problemas de entrevistas há muito tempo, sobre um relacionado com o mesmo truque, então Eu estava bem ....
Outro, inverta todas as palavras em uma string sem usar espaço adicional. Eu tive que pensar sobre isso e o recrutador ficou bastante impaciente nos 5 minutos que pensei (dividir e reencontrar a string no sentido inverso, ou passar palavra por palavra em uma nova matriz é muito fácil). Eu descobri a borda da última palavra, o final da primeira palavra e, constantemente, diminuindo a lista inteira em 1 e inserindo a letra apropriada. Em seguida, repita até chegar ao final da lista. Esse método funcionou e o entrevistador concordou (ele era um pouco técnico), mas é bastante ineficiente. Quando cheguei em casa, procurei a resposta ideal, e é apenas para inverter a lista e, em seguida, inverter cada palavra individualmente. Algumas pessoas podem pensar nisso,
Agora é verdade, depois de ver alguns desses problemas, você pode resolvê-los mais facilmente. Porque existem algumas perguntas semelhantes com alguns dos mesmos truques. Eu sei especialmente que a fórmula n (n-1) / 2 e a lista de números têm várias variações. Mas ainda não sei o que essas perguntas testam. Um FizzBuzz é algo que todos deveriam ser capazes de fazer (embora eu tenha visto variações que não são tão simples. Nesse caso, começo a questionar se isso é realista para uma situação de entrevista sem poder digitar / depurar o código). Algumas dessas perguntas são óbvias quando você as vê, mas se você não as viu, elas não são óbvias. Afinal, alguém mencionou que levou anos para a primeira implementação correta da pesquisa binária aparecer ... No momento, a pesquisa binária é tão óbvia, porque todos podem ler sobre isso.
No entanto, acho que a pior parte é quando pessoas não técnicas estão fazendo as perguntas, porque não podem apreciar que sua solução está correta, embora não seja ideal. Eles apenas sabem que sua solução não é a apresentada e, portanto, está tudo errado, você não recebe nenhum crédito pela tentativa. Mesmo soluções não ideais geralmente mostram um conhecimento de construções de programação. A menos que eu esteja programando jogos de pôquer, não me importo com a capacidade de alguém baralhar um baralho de cartas. E mesmo que eu estivesse, depois de mostrar a eles o algoritmo eficiente, tenho certeza de que qualquer pessoa decente poderia segui-lo.
As perguntas do modelo parecem apenas dar uma vantagem aos candidatos que estão entrevistando há mais tempo, pois é mais provável que tenham visto mais perguntas do modelo. Até o FizzBuzz, na primeira vez em que você o vê, pode se assustar, mas, ao vê-lo repetidamente, você se acostuma. A melhor coisa que você pode fazer é desafiar a codificação que requer lógica comercial personalizada. Por exemplo, crie um conjunto de dados (matriz de objetos / registros) e, em seguida, crie algumas regras de negócios a serem aplicadas a cada objeto e retorne uma resposta. Por exemplo, algum tipo de classificação, etc., mas regras muito personalizadas. Enquanto eles provavelmente viram loop através dos registros e aplicaram a lógica um zilhão de vezes, suas regras serão únicas, portanto, pelo menos, elas teriam que entender e implementar com êxito as regras que você criou.
Digamos que Salário projetado e uma lista de candidatos e seus três principais videogames favoritos e talvez um salário inicial. Candidatos que gostam de Zelda recebem uma penalidade de 300, candidatos que gostam da pequena sereia recebem um bônus de 200. Candidatos que gostam de Donkey Kong e Super Mario Brothers, mas não o Dr. Mario, recebem um bônus de 300. Os candidatos que gostam de Metroid ou Kid Icarus recebem um bônus de 200, etc .... Parece um pouco insano, mas mostraria a capacidade deles de traduzir regras de negócios em construções lógicas de programas e testar também sua compreensão da lógica booleana. No geral, não é muito diferente do que o fizzbuzz, exceto o uso de módulos e loops. Obviamente, você pode fornecer a lista a eles e fazer com que eles passem por ela e imprima os resultados na tela usando também critérios de saída específicos.
fonte
Na minha última procura de emprego, eu estava em uma situação muito semelhante. Acho que tive a mesma pergunta da lista vinculada em todas as empresas, exceto uma (a que estou atualmente empregada).
Uma coisa que notei foi que essas perguntas foram feitas na primeira entrevista.
Do ponto de vista dos entrevistadores, se uma pessoa não consegue acertar essas perguntas, então não se preparou para a entrevista, então por que perder mais tempo com elas? Eu não acho que essa seja a ideia certa. A empresa receberá um monte de pessoas que podem recitar respostas do Google para a próxima rodada, mas não necessariamente um grupo de pessoas que são desenvolvedores competentes.
Achei as perguntas do FizzBuzz irritantes pessoalmente, mas facilitou a entrevista. Eu gosto de uma entrevista desafiadora. Quando entrevisto funcionários em potencial, gosto de garantir que eles consigam pensar e resolver problemas. Espero que eles possam usar o Google.
Uma empresa deve ter um modelo de pergunta? Sim. Ajuda a avaliar os candidatos para as primeiras rodadas. O modelo deve ser composto de problemas genéricos que podem ser facilmente encontrados no Google? Não. Isso apenas muda rapidamente todos os envolvidos.
fonte
"As empresas de software devem se esforçar para ser mais originais e criar seu próprio material de entrevista?"
Sim, eles deveriam, mas praticamente o que acontece é que você entra no trabalho e encontra um e-mail do RH dizendo que está no ciclo de entrevistas de dois candidatos amanhã. Você já está decidido em jacarés, e seu gerente não agradecerá por demorar meio dia para apresentar novas e boas perguntas para entrevistas. Sendo pressionado pelo tempo, você recorre a perguntas que foram feitas ou que podem ser encontradas rapidamente no Google.
fonte
Perguntas como você menciona são normalmente perguntas efervescentes e não são usadas para contratação; elas são uma pergunta negadora (ou seja, respostas corretas não lhe darão um emprego, mas respostas erradas o deixarão jogado no lixo). Então eles não são muito valiosos.
São as perguntas que surgem mais tarde que precisam de reflexão e, mais frequentemente do que não, têm uma forte relação com o tipo de trabalho que a empresa faz e com o que é a dinâmica da equipe.
Então a resposta é: ambos.
fonte
Se a maioria ou todas as perguntas são as mesmas, é de fato uma coisa ruim (para elas, é isso). Provavelmente isso mostra que o entrevistador não está bem preparado para a tarefa.
Observe que o uso de perguntas de nível de entrada "modelo", como o teste FizzBuzz, pode ser aceitável para eliminar os totalmente ineptos rapidamente, sem investir muito tempo e esforço. Embora, mesmo assim, variações sobre o tema sejam úteis para evitar respostas diretas do Google. Por outro lado, é fácil perguntar ao candidato o que o código que acabou de escrever realmente faz e por que funciona (ou não). Acredito que um entrevistador tecnicamente competente possa detectar rapidamente se alguém apenas finge saber a resposta.
E, mais importante, se alguém passar no teste de nível básico, as perguntas mais difíceis devem surgir, onde não basta mais recitar respostas em lata. Pessoalmente, estou mais interessado nos processos de pensamento do entrevistado e na capacidade de resolver problemas em geral, do que na solução específica de um enigma. O outro tópico importante seria processos e abordagens de desenvolvimento - inicio uma discussão aberta em vez de perguntas concretas sobre esses tópicos. Não há resposta certa ou errada sobre esses assuntos, portanto, não há possibilidade de se preparar com antecedência. Mas com uma discussão, aprendo muito se eu e a equipe ficaria à vontade para trabalhar com esse candidato.
Portanto, uma quantidade limitada de perguntas "modelo" é aceitável, mas uma boa entrevista é um processo de fluxo, em que o entrevistador deve se adaptar à situação, incluindo o nível de habilidade (anunciado e real) do candidato, estado mental (nervosismo / cansaço) etc.
fonte
Meu modelo de entrevista em pseudo-código:
se a pergunta (FizzBuzz_type_question) == estiver correta,
para cada (pergunta q em array_of_more_interesting_questions) pergunta (q) mais
entrevista final.
fonte
Eu acho que a entrevista deve ser dividida em:
Aspecto social (além do material de RH) - Essa pessoa se encaixa bem em nossa organização? Ele tem a atitude certa? Ele está disposto a seguir nosso estilo de gestão? Isso precisa ser original, já que empresas e equipes são diferentes.
Adequação geral para a função - Novamente, isso deve diferir de um lugar para outro
Núcleo: Questões sobre o assunto que se concentram na área principal do trabalho - Isso é científico e não precisa ser original, pois é científico.
Adequação profissional no dia-a-dia: são perguntas sobre assuntos que você espera que o candidato faça diariamente. Pode ser científico, mas é melhor que seja do trabalho real que ele deve fazer. Esta parte varia de um lugar para outro.
fonte