Como reagir a perguntas erradas / não respondidas durante a entrevista? [fechadas]


31

Hoje realizei minha primeira entrevista com possíveis estagiários. Embora isso tenha sido principalmente perguntas abertas, tive algumas tarefas de programação triviais para eles:

  • Escreva uma função que retorne true se os lados do triângulo (todos os números inteiros) a, bec forem representativos de um triângulo retângulo .
  • FizzBuzz.
  • Calcule o N-ésimo elemento de Fibonacci usando recursão (se eles não soubessem o que era Fibonacci , eu escreveria para eles a definição F (n) = F (n-1) + F (n-2); F (1) = 1; F (0) = 1).
  • Implementar lista de estruturas para funções inteiras e de gravação para revertê-las.

Obviamente, essas são tarefas muito fáceis e eu não estava preparado para alguém que não as resolvesse.

Como devo agir quando eles lutam com essas perguntas? Devo desistir da resposta? Dar dica por dica (eu fiz isso e acabei resolvendo o problema sozinho)? Ou apenas seguir em frente (ou talvez apenas parar) com a entrevista?

ps. Por ter problemas com perguntas, não quero ter um bug, quero dizer, se eles nem conseguem começar. Este foi um caso com as perguntas de Fibonacci e List.


6
Consulte este artigo para obter um ponto de vista alternativo sobre esse tipo de perguntas.
Matthieu

2
eles estão no último ano. mas eu teria resolvido os problemas antes mesmo de ingressar na universidade, então para mim foi um choque.
Mykolas Simutis

2
Eu vou ter que ser forte aqui; Se alguém não pode implementar uma estrutura de lista, eles não têm motivos para programar ou, pelo menos, não há motivos para contratá-los. E então eu li que é o último ano deles na universidade? Isso implica uma educação plurianual e, nesse ponto, eles devem definitivamente saber algo tão básico quanto isso. Dito isto, acho justo mostrar cortesia e continuar a entrevista. Pode ser apenas um acaso, e eles realmente são brilhantes programadores.
Max

2
Todo o empurrão contra esse tipo de pergunta me faz coçar a cabeça. Acho isso agradável e acho que quem não achou esse tipo de brincadeira agradável provavelmente não tem a mentalidade de ser engenheiro. Eu já vi essa série de artigos reclamando contra questionários e estou bastante confuso com a coisa toda.
Bill K

3
Espere, por que você fez as perguntas se "não estava preparado para alguém não resolvê-las"? Em geral, eu pensaria que o motivo pelo qual você fez a pergunta era discriminar entre programadores "bons" e "não tão bons" !! Também como leitor deste site, estou duplamente surpreso que você tenha achado que todos seriam capazes de resolvê-los! De qualquer forma, lembre-se de que os alunos provavelmente ficarão realmente nervosos e podem ter origens diferentes. Também que tipo de trabalho eles vão fazer? Eu tenho sentimentos contraditórios sobre esse tipo de pergunta.
precisa saber é o seguinte

Respostas:


36

Você disse que está entrevistando para cargos de estagiário na pergunta, portanto é desse ponto de vista; para desenvolvedores em período integral, o nível será um pouco maior.

Ao entrevistar estagiários, você deve se lembrar de que eles podem não ter concluído seus estudos e que também podem ter ingressado na faculdade sem nenhum conhecimento prévio em programação e ciência da computação. Dessa forma, você precisa dimensionar as expectativas para o que você razoavelmente espera que alguém conheça e para o grau de prestígio da posição (por exemplo, o Google pode se safar das expectativas que uma empresa que as pessoas nunca ouviram falar).

Examinando as perguntas que você apresentou, provavelmente as veria da seguinte maneira em uma entrevista:

1) Escreva uma função que retorne true se os lados do triângulo (todos os números inteiros) a, bec forem representados por um triângulo retângulo.

Aplicação básica da geometria com codificação simples, a maioria dos estudantes deve ser capaz de fazer isso sem muita dificuldade. No máximo, um lembrete do teorema de Pitágoras pode ser necessário se eles estiverem mostrando um pouco de estresse por estarem em uma entrevista. Isso quase pode ser visto como um problema de "aumento do ego", pois pode ajudar a acalmar algumas pessoas se elas estiverem muito nervosas na entrevista.

2) FizzBuzz

Novamente, outra aplicação de algumas instruções básicas de controle. Os alunos que não foram expostos ao operador do módulo, ou que não o usaram muito, podem precisar ser lembrados, mas não devem encontrar problemas reais para solucionar o problema.

3) Calcule o N-ésimo elemento de Fibonacci usando recursão (se eles não soubessem o que era Fibonacci, eu escreveria para eles a definição F (n) = F (n-1) + F (n-2); F (1 ) = 1; F (0) = 1).

Como esse é um problema bastante comum, a maioria dos alunos (se não todos) o verá em algum momento antes da formatura. O problema é que geralmente aparece quando a recursão é apresentada aos alunos, uma vez que se presta bem ou uma solução recursiva ou baseada em loop que pode ser comparada para que alunos de escolas diferentes possam vê-lo em momentos diferentes, dependendo da sequência dos cursos. Na prática, se alguém não pudesse inventar a recursiva, eu pediria uma alternativa usando loops e, se não conseguisse, eu ficaria mais preocupado com sua capacidade potencial.

4) Implementar a lista de estruturas para funções inteiras e de gravação para revertê-las.

Essa questão pode ser um pouco aberta demais, pois está escrita, portanto, também pode ser uma boa pergunta ver como o candidato procura informações adicionais (por exemplo, se as funções de exclusão devem ser incluídas, a conversão em matrizes etc.), mas com um bom resultado. declaração de problema definida ("Implemente uma estrutura básica de lista para números inteiros que permita que números sejam adicionados ao final ou em um índice arbitrário, excluídos e incluam uma função para retornar uma cópia invertida da lista") os alunos devem ser capazes de resolver o problema desde que as listas sejam uma estrutura comum apresentada em um curso inicial de estruturas de dados ou em um curso básico de ciência da computação.

Em termos de lidar com os candidatos, se eles estiverem lutando, verifique se eles estão relaxados e permita um pouco de clemência, pois eles podem estar apenas com ansiedade no desempenho, pois essa pode ser sua primeira entrevista real. Dicas para solucionar os problemas podem ser necessárias, principalmente no terceiro e quarto problemas, em oposição aos dois primeiros.

Além disso, estruture o processo geral da entrevista para que haja pontos de "saída normal" incorporados. Por exemplo, você pode ter a seguinte agenda:

  • Conheça e cumprimente, procedimentos de entrevista.
  • Entrevista curta com programadores da equipe, perguntas básicas sobre o histórico.
  • Apresentação de questionário de programação.
  • Quebrar
  • Retorno do intervalo, demissão de alguns candidatos que não se encaixam bem.
  • Entrevista prolongada com programadores da equipe.
  • Entrevista com recursos humanos (se necessário).
  • Embrulhar.

Esse fluxo de entrevistas tende a funcionar bem se você quiser demitir candidatos cedo, pois eles sabem desde o início que eles podem ser demitidos após o intervalo. A breve entrevista antes do questionário também significa que eles não estão apenas aparecendo para fazer o teste, o que lhes dá algumas práticas de entrevista e também pode permitir que eles decidam que não se encaixam bem. Se houver outros programadores observando o questionário ou auxiliando o candidato durante o processo, isso também lhes dará a chance de passar / reprovar no candidato enquanto eles estão fazendo uma pequena pausa.

Em todos os momentos em que você está entrevistando para um estágio e os candidatos são estudantes, lembre-se de que eles ainda são estudantes e podem não ter muita prática com entrevistas (levando a uma possível ansiedade no desempenho) e também podem não ter atingido o ponto em seus estudos. até ser capaz de responder às perguntas, o que significa que pode ser uma boa ideia enviá-las a caminho com uma cópia da "solução (s) ideal (is)" para os problemas que eles também apresentam.


3
+1 resposta muito boa. Penso que o resultado do desempenho em tais testes deve ser apenas "um fator" para decidir se deve contratar. Você pode estar perdendo alguns bons candidatos a estágio se usar isso como um filtro estrito de ir / não-ir. Os estagiários estão, por definição, tentando algo novo. Eles não são apenas novos em sua profissão, mas também podem ser inexperientes ao lidar com o fato de serem colocados "no local". Existe um componente emocional nisso e as pessoas lidam com isso de maneiras diferentes.
Angelo

@Angelo - É por isso que sou sempre fã de ter uma entrevista curta e de quizzes assistidos / assistidos, pois isso dá às pessoas tempo suficiente para ver se elas querem avançar com a entrevista ou não. O intervalo e a demissão antecipada são mais para candidatos em que você sabe que não deseja avançar, em oposição aos que simplesmente não estão indo tão bem quanto gostaria no teste.
rjzii

Curto e grosso. Perguntas enlatadas obtêm respostas enlatadas. Por que não fazer uma pergunta que determina algumas características mais importantes como, dinâmica equipe / colaboração, capacidade de improvisar, motivações individuais ...
Evan Solha

82

Meu objetivo em qualquer entrevista de emprego, não importa de que lado eu esteja, é acabar me sentindo como se estivesse conversando com um colega. Os colegas entram no meu escritório o tempo todo quando estão presos a um problema. Peço ajuda aos meus colegas quando eu mesmo fico preso. Então, em uma entrevista, tento recriar essa dinâmica.

Em outras palavras, o que você diria se um colega precisasse implementar uma sequência de fibonacci e não soubesse o que era? Você explicaria a eles até que eles compreendessem o suficiente para continuar por conta própria. Não há vergonha na ignorância, desde que não seja permanente.

Se você realizar esse exercício e ainda não conseguir se imaginar trabalhando com essa pessoa, ela não será uma boa opção para o trabalho.


32
+1: você deseja recriar uma dinâmica de trabalho durante a entrevista, não uma dinâmica de sala de aula.
Matthieu

3
+1: exatamente certo. Contrate em equipe, pague experiência e habilidades.
pdr 11/01

1
Bom ponto. Nas minhas entrevistas mais bem-sucedidas, as pessoas fizeram perguntas que envolviam problemas que estavam enfrentando e eu fui capaz de ajudá-las a encontrar uma solução. Seria bom se você pudesse tratar uma entrevista como dias de consultoria.
Bill K

11
+1 em "Não há vergonha na ignorância, desde que não seja permanente".
mskfisher

9

O objetivo de fazer perguntas como essa em uma entrevista é determinar se alguém pode descobrir como resolver problemas. O trabalho de ser programador geralmente consiste em duas coisas: "Aceite esses requisitos e implemente-os no código" e "descubra por que a implementação não está correspondendo aos requisitos e corrija-os". Portanto, o que você realmente procura não é uma solução para essas perguntas específicas, mas a capacidade de descobrir as coisas.

Entendendo isso, eu daria uma dica ou duas para começar alguém, e talvez mais ainda, se estiver claro que eles estão fazendo um progresso real, mas faltam detalhes em algum lugar. Mas se ficar claro que eles simplesmente não conseguem descobrir como resolver o problema, você tem sua resposta e não há necessidade de continuar com o exercício.

Para dar um exemplo, quando entrevistei meu trabalho atual, recebi uma pergunta sobre como encontrar o caminho mais curto de um nó para outro em um gráfico. Respondi que provavelmente usaria algo como o algoritmo de Dijkstra, que me lembrava vagamente de ter aprendido um dia na faculdade e que nunca havia usado desde então, e dei uma explicação rápida (e incorreta) dele que satisfazia as condições específicas dadas pelo questão. O entrevistador apontou que minha solução terminaria em um loop infinito se o gráfico fosse modificado levemente e isso movimentasse minha memória, então expliquei o caminho certo para evitar esse problema. E acabei conseguindo o emprego.


6

para posições internas, você pode estar perguntando um pouco demais.

Eu não tenho idéia do que você quer dizer com a quarta pergunta. quanto a fazer uma pergunta de recursão, é um pouco impraticável, analise sua própria base de código e determine o número de áreas em que a recursão é usada. Estou disposto a apostar que é pouco. As situações da entrevista são estressantes, e esperar que os candidatos implementem estratégias raramente usadas, que são inversas, em comparação com a maioria das coisas que você programará é injusto com elas, especialmente no início de uma entrevista. Pessoalmente, eu faria perguntas onde eles têm que explicar o que significam conceitos importantes / como são usados, fornecendo exemplos em lata. Eu ficaria muito mais interessado em candidatos que podem dizer a você o livro X ou a pesquisa no Google Y fornecerá tudo o que é necessário para implementar algo em sua base de código.


Obrigado, mas deixe-me adicionar algumas coisas. Eu tenho o mesmo corpo docente e eles cobrimos essas tarefas no primeiro semestre. Enquanto elas estão no último ano, ainda acho que é uma boa avaliação ver como eles são capazes de pensar e resolver problemas ( vamos lá, o Fibonacci é praticamente dado por eles). Sobre a questão da lista, sim, eu não expliquei bem aqui, mas para eles eu peguei mais de uma linha. E também tivemos discussões abertas sobre outras coisas de desenvolvimento de software, sua motivação, etc!
Mykolas Simutis

4

IMHO, suas duas primeiras perguntas devem ser resolvidas por qualquer pessoa que se autodefina como programadora, seja júnior ou sênior, diretamente da escola ou autodidata.

Se eu vir que o entrevistador está tendo problemas com um deles, tentarei reformular o problema e verificar se ele o entendeu completamente. Em seguida, incentive-a a usar caneta e papel, quadro branco, desenhar figuras ou qualquer outra abordagem que prefira para resolver o problema. Também peço a ela para pensar em voz alta, para ter uma visão de seu processo de pensamento e, se necessário, dar pequenas dicas se ela estiver no caminho certo, apenas não se atreve a avançar ou tem algum obstáculo. Mas se várias dicas não ajudarem, ou - como você mencionou acima - eu acabar resolvendo o problema para ela, provavelmente terminaria a entrevista para impedir mais desperdício de tempo. Em uma entrevista, estou sempre tentando ver e focar no que a candidata sabe, e não no que ela não sabe, mas se não consigo encontrar nenhum conhecimento significativo, desisto depois de um tempo.

O 3º e o 4º são um pouco mais difíceis, então eu poderia aceitar se um júnior não os conseguisse, se ele demonstrasse uma boa abordagem e entusiasmo na solução de problemas. Mas para os idosos, eles ainda são obrigatórios.


4

Eu tive que procurar o que você quis dizer com "FizzBuzz"; Acontece que eu tinha ouvido falar do jogo e de suas regras, mas não com esse nome e em pouco tempo. Portanto, não pense que você não precisa fornecer QUALQUER informação aos entrevistados.

Dito isto, são todos os problemas básicos de codificação que eu esperaria que alguém entrevistando mesmo para uma posição de codificação de nível básico pudesse pensar em seu caminho, se não conseguisse codificar uma resposta por inspeção. Então, nós estamos na mesma página lá. A resposta para o seu problema depende de como eles estão errando:

  • Problemas menores de sintaxe: se você está esperando um código em um determinado idioma, não conte muito se perder um ponto-e-vírgula ou um erro de ortografia no uso de algum identificador. A maioria dos IDEs entende isso imediatamente, e todo mundo faz erros de digitação de tempos em tempos. Em quase todas as entrevistas nas quais eu esperava codificar alguma coisa, "pseudo-C-ish" era aceitável desde que o algoritmo fosse comunicado adequadamente ao entrevistador e a lógica fosse correta.

  • Falha na lógica secundária: se o algoritmo se comportar como esperado na maioria dos cenários esperados (mas não em todos) (digamos, ao codificar o FizzBuzz, 15 resultaria apenas em "Fizz" ou "Buzz", mas não em ambos, como deveria). seja o "testador de unidade" e indique que o algoritmo falharia nessa instância e veja se eles podem corrigi-lo. Eles podem ter esquecido esse caso específico ou podem não ter entendido os requisitos completamente o suficiente. Ambas são novamente ocorrências diárias de codificação completamente compreensíveis, que devem ser facilmente superadas com o simples fornecimento de informações ou comentários adicionais.

  • Principais falhas lógicas: se o algoritmo não passasse na maioria ou em todos os cenários de teste dados, aponte-o também e verifique se eles podem consertá-lo. Isso é mais um problema; ou eles entenderam mal algum requisito básico do sistema ou ignoraram algum buraco lógico. Mas, se eles puderem corrigi-lo, com mais detalhes do problema, sem que sejam informados exatamente onde seu código está falhando, atribua-o a requisitos pouco claros e prossiga.

  • Não sei por onde começar / resposta codificada para casos específicos / não consigo entender seu pseudocódigo: estas são as bandeiras vermelhas. Se você pedir a alguém para codificar um algoritmo que siga as regras do FizzBuzz, explicando essas regras para eles e você receber um olhar vazio, a entrevista acabou. Da mesma forma, se eles puderem colocar ALGUMA COISA no quadro, mas ele falhar em grande parte do espaço do problema, e você precisar segurar a mão deles para ilustrar a falha e como corrigi-la, eu não faria uma segunda entrevista .


Usando aplicação prática para testar um entrevistador sobre perguntas enlatadas que eles receberam na escola? Que ideia inovadora. +1
Evan Plaice

3

Se você realmente tem um estagiário em potencial que age como um cervo no farol porque ele nunca foi entrevistado, tem problemas de ansiedade, nunca esteve em uma situação da vida real como essa (você geralmente percebe pela linguagem corporal deles), basta começar perguntando a eles em que eles trabalharam por último.

Então será o território dele, para que ele não fique loucamente nervoso. Quando você encontrar um local apropriado, pergunte: "Ei, como você implementou isso?". Se ele puder explicar, pode lhe dar uma ideia do modo de pensar dele.

Coloque seus próprios testes na agenda depois disso.


2

Fizzbuzz é um requisito absoluto. Se eles não podem codificar o Fizzbuzz, você não deve contratá-los.

Normalmente, solicito ao candidato uma sessão de código pré-entrevista, na qual usamos o Google Docs para solucionar um problema de programação (normalmente o Fizzbuzz + um problema de nível superior, se é possível concluir o Fizzbuzz com facilidade).

Normalmente, eu estou no telefone ou no skype com eles durante isso, e como estou assistindo eles resolverem o problema (e conversando com eles sobre o que eles estão pensando em determinados momentos), posso estar razoavelmente confiante de que eles não o fizeram ' basta pesquisar no google a resposta.

Desde que seus outros problemas sejam bem especificados (ou seja, você forneça a fórmula para cada um), suas perguntas serão excelentes.

Quando entrevisto candidatos, tento manter os problemas de programação que eles provavelmente encontrarão. Adoro problemas de manipulação de cordas porque, quando você está na Web, praticamente tudo o que o usuário enfrenta tem a ver com algum tipo de manipulação de cordas. Como eles lidam com isso é importante.


1

Depende do calibre da posição que você está tentando preencher.

Se você estiver procurando por um desenvolvedor sênior, esperaria que eles soubessem tudo isso. Se eles entendessem errado e eu estivesse me sentindo mal, eu simplesmente pararia a entrevista, obrigado e adeus. Se eu estivesse com um humor mais educado, agradeceria e correria pelo resto da entrevista.

Se eu estivesse indo para um desenvolvedor júnior, essas perguntas poderiam ser consideradas bastante difíceis. Eu estaria mais interessado em explorar sua capacidade e vontade de aprender. Então, eu tentava dar dicas e orientá-los e ver como eles respondem.


Estes eram estagiários em seu último ano na universidade, então eu era muito gentil com eles, mas não esperava que houvesse problemas e agora sinto que sou muito
gentil

Não há nada de errado em interromper a entrevista mais cedo e desculpá-los se eles não tiverem a chance de conseguir o emprego, apenas certifique-se de que você seja educado, pois o nível da posição não deve realmente importar.
rjzii

1

Entrevistas com estagiários são um tipo diferente de entrevista. O que normalmente faço é usar minhas perguntas padrão do desenvolvedor (como as que você forneceu) para avaliar onde elas estão na educação. A capacidade de resolver esses problemas variará muito, do segundo ao segundo ano.

Depois de obter essas informações, concentro a entrevista em outras habilidades, como: eles serão capazes de trabalhar em equipe, podem ser ensinados, se beneficiarão do estágio em nossa empresa, são apaixonados por desenvolvimento / aprendizado etc.

Para mim, são as coisas não técnicas que realmente diferenciam um estagiário dos outros candidatos. Prefiro passar alguns meses treinando / orientando alguém que é motivado a aprender e crescer, do que alguém que apenas quer um emprego para o semestre.


Talvez sim, mas não resolvendo essas perguntas, senti como se eu as estivesse banhando desde o básico!
Mykolas Simutis

Isso é verdade, contratar um estudante do segundo ano com pouca ou nenhuma experiência pode não funcionar para todas as organizações.
precisa saber é o seguinte

1

Pergunte a si mesmo que valor o entrevistado provavelmente agregará à sua empresa. Considere o custo de ter um mentor envolvido, especialmente se eles não puderem resolver problemas no nível do fizzbuzz. Se a resposta não for proporcional ao salário pretendido, você terá um bom argumento econômico para não contratá-los.

Não tenha medo de voltar ao seu gerente e dizer "não havia candidatos que agregariam valor suficiente à nossa empresa para fazer a contratação deles valer a pena". Esse deve ser um curso de ação melhor do que acabar com alguém que é realmente de valor negativo, devido ao custo de ter alguém constantemente ajudando-o.


0

Minha resposta pode parecer um pouco cruel ou desdenhosa, mas acho que funciona bem. Para começar, faço ao candidato uma pergunta muito fácil, que serve como uma pergunta de aquecimento para ajudar a construir sua confiança. Se eles são ou não bem-sucedidos, passo para uma questão menos trivial e diretamente relacionada ao que o trabalho implica.

Neste ponto, é tudo ou nada. Se eles navegarem por ele, ótimo, não há problema. Se eles se esforçarem um pouco, sem problemas, ajudarei a estimulá-los e depois passarei para outras perguntas para determinar outras habilidades.

Se, no entanto, eles não têm a capacidade de resolvê-lo, vou em frente e passo o resto do tempo da entrevista ajudando-os. O candidato ainda se sente envolvido na entrevista, mas não preciso orientá-la em direções diferentes e irrelevantes. Também é bom para o candidato, pois pode ser educacional.


0
  1. Tente ser legal com eles. Pelas suas perguntas, percebe-se que você não está tentando ser legal nem aqui. Você acha que todo mundo deveria conhecer esse termo "fizzbuzz"? Ou devemos procurar na net porque você estava com preguiça de escrever você mesmo? Pelo contrário, acho que todo mundo aqui sabe o que é o triângulo retângulo.
  2. O que é a "lista de estruturas"? Eu não sei. Eu sei "a estrutura da lista". O que significa: Listar para número inteiro? Lista de números inteiros que você quer dizer? Eu também não saberia como começar. E por favor, não fale que você não é inglês. Eu também. E mesmo eu nunca tinha ido a um país de língua inglesa. Você certamente sabe que inteiro no plural será inteiro s . Se você não está tentando ser compreensível com seus iguais aqui, posso imaginar como você está indo .
  3. Qualquer programador alfabetizado sabe que a linha Fibonacci é um exemplo de livro do que não deve ser feito por recursão. Você está testando a capacidade de se opor a você ou a habilidades de codificação? Faça seu trabalho e encontre um exemplo melhor para testar habilidades no uso da recursão.
  4. A "capacidade de trabalhar sob estresse" para um programador significa que ele poderia trabalhar durante a noite quando necessário. Mas se você quiser ter bons programadores, eles esperam que seu chefe seja um sujeito muito agradável, compreensivo e útil. Se você não for, nunca terá bons programadores. Eles não são machos alfa-rato. Se sentirem agressão, simplesmente fecharão as conchas e não farão nada.

Então, minha resposta é: esteja melhor preparado.

PS Você é um gerente, e por isso, você realmente deve manter stress.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.