Enigmas lógicos complicados - Eles são realmente úteis na avaliação de habilidades de programação? [fechadas]

88

Na última entrevista que participei, me pediram para resolver um quebra-cabeça em que era esperado medir exatamente blá litros de água em dois baldes com capacidade - blá e blá, respectivamente. Não consegui resolver o quebra-cabeça em um determinado período (~ 5 minutos).

O entrevistador ficou um pouco decepcionado e disse que um programador precisa ter "essas" habilidades. Eu não entendi quais habilidades ele estava falando.

Sempre me senti estranho com esse tipo de quebra-cabeça que normalmente é solicitado nas entrevistas de emprego de programação. Não entendo qual é a conexão entre esses quebra-cabeças e a programação. Exatamente quais habilidades os entrevistadores pretendem avaliar com esses quebra-cabeças?

desaparecidos
fonte
20
parece Die Hard quebra-cabeça 3 jarro youtube.com/watch?v=lZ64IR2bz5o
JF Dion
64
Um grande problema com essas perguntas é que elas frequentemente medem se o candidato já viu esse problema antes e "já viu muitos quebra-cabeças lógicos" não é um bom critério de contratação.
David Thornley
37
Essas são apenas práticas de contratação de vodu. Outras pessoas fazem essas perguntas para que sintam que deveriam. Eles sabem que não responder à pergunta é "ruim" e responder é "bom", mas não podem dizer por que além das não respostas, como "um desenvolvedor precisa dessas habilidades". Eles são uma perda de tempo e um indicador de que o entrevistador não é um entrevistador competente.
Rein Henrichs
5
Sim, esses testes não são tão bons. Mas é bom quando um programador tem pelo menos um leve interesse nesses quebra-cabeças. Meu conselho: apenas estude os quebra-cabeças, passe na entrevista e decida se deseja participar.
Job
10
Eu perguntaria isso durante uma entrevista, na esperança de encontrar o candidato que pergunta: "WTF isso tem a ver com programação?" e faça-lhes uma oferta antes de saírem do estacionamento.
Jeffo

Respostas:

97

Algumas pessoas perguntam a eles na tentativa de avaliar sua capacidade e abordagem para resolver problemas. Pessoalmente, não acho que esses quebra-cabeças forneçam um indicador preciso. No "mundo real", você tem mais de cinco minutos para descobrir se está lidando com um problema de empacotar uma caixa versus uma mochila , por exemplo. Inicialmente, às vezes é fácil entender mal o problema em questão até que você esteja no meio da aplicação da solução errada. Isso acontece com pessoas com 1, 5, 10 ou mesmo 20 anos de experiência.

Os melhores 'enigmas' da entrevista são aqueles em que você se senta em um computador para resolver um problema no domínio em que deseja obter conhecimentos. Também não gosto do pensamento "Bem, um programador deve ser capaz de ..." porque não leva em consideração que as pessoas ficam ansiosas quando são atingidas por algo inesperado em um ambiente que já é estressante. Claro, você poderia resolver isso se tivesse tempo para pensar sobre isso ... e talvez pudesse resolver mais rápido se percebesse que sua vida terminaria se não o fizesse. Você quer trabalhar em algum lugar onde sua vida acabará se você não conseguir resolver os problemas em cinco minutos ? Você será demitido se não puder ?

Todos os grandes programadores também devem ser campeões em solucionadores de sudoku? Tenho certeza de que existem muitas, mas não é um tipo de pré-requisito para competência.

Não estou dizendo que você não deve ser testado em como aborda os problemas, mas os testes devem ser divertidos e convidam o 'melhor' que o candidato deve dar, considerando sua área de especialização. Provar que você é tão inteligente quanto um personagem que Bruce Willis retrata parece meio sem sentido, considerando que os produtores gastaram uma soma muito para obter essa cena apenas direita.

Em outras palavras, se você detectar que está sendo entrevistado por alguém que tem pouca compreensão sobre o que realmente estará fazendo , peça licença para ir ao banheiro e nunca mais voltar.

Tim Post
fonte
8
Essa é a perspectiva que todos os entrevistadores precisam ter. Resolva um problema no seu domínio e seus comentários sobre o estresse e perguntas inesperadas estão a par!
Chris
20
+1 para No "mundo real", você tem mais de cinco minutos para descobrir , boa resposta!
Ant
7
Também adoro o fato de que eles são geralmente apresentados como se o entrevistador originou a pergunta e resolveu-se :)
RyBolt
10
Eu ri tanto excuse yourself to go to the restroom and never return!
Florian Margaine
Sim, eu sempre tento fazer com que o candidato se sinta o mais confortável possível, para que eu possa tentar descobrir até que ponto essa pessoa será boa para o trabalho. Pedir "seus pontos fortes" em vez de "do que você gosta?" e quebra-cabeças bobos, em vez de codificar filosofias, não me dão nenhuma indicação sobre o quão boa é essa pessoa para o trabalho.
precisa saber é o seguinte
56

A Microsoft começou a usar essas perguntas no início dos anos 80. À medida que a Microsoft se tornou notavelmente bem-sucedida, outras empresas começaram a copiá-las, mas alguns pontos-chave se perderam na tradução.

Naquela época, a Microsoft tentava ocupar muitos cargos técnicos, mas não de programação: redatores técnicos, testadores, suporte por telefone etc. Esses não eram trabalhos comuns na época e era difícil conseguir pessoas com experiência real nessas áreas. encontrar. Como alternativa, a Microsoft achou que eles poderiam contratar pessoas realmente inteligentes, inteligentes e flexíveis e treiná-las no trabalho. Como essas pessoas não tinham formação em programação, fazer perguntas sobre a programação na entrevista era inútil. Os enigmas foram escolhidos para tentar identificar pessoas inteligentes e com habilidades analíticas excepcionalmente boas. Os programadores geralmente enfrentavam problemas de programação no quadro branco, embora também pudessem receber enigmas durante o almoço ou o jantar.

Essas perguntas nunca foram feitas para serem aprovadas. Eles pretendiam ser o início de uma conversa sobre como você resolveria o problema e como pensaria em problemas que nunca havia visto antes. A única maneira certa de "falhar" era recusar-se a tentar resolver o problema. Naquela época, essa era uma estratégia inovadora e você não podia procurar as perguntas no Google.

Editar:

Algum tempo depois de escrever essa resposta, li The Computer Boys Take Over , uma história da computação institucional nas décadas de 1950 e 1960. Aparentemente, a prática de pedir quebra-cabeças e enigmas de candidatos a trabalhos de programação remonta à década de 1950. Os EUA estavam tentando informatizar seu sistema de defesa aérea e a IBM estimou que precisariam de vários milhares de programadores para fazer o trabalho. A resposta foi chocada e consternada: havia apenas algumas dezenas de "programadores profissionais" em todo o mundo. Várias abordagens foram tentadas: testes abstratos de aptidão em programação, recrutamento de matemáticos como programadores, recrutamento de jogadores de xadrez e solucionadores de palavras cruzadas e triagem de candidatos com enigmas e quebra-cabeças.

Eles acabaram conseguindo recrutar programadores suficientes para concluir o projeto, mas a conclusão foi que nenhum dos métodos de triagem era melhor do que a chance de identificar os recrutas que tiveram notável sucesso como programadores.

Charles E. Grant
fonte
49

Eles são úteis? Não, na verdade não. Eles eram tão comuns na Microsoft que até eram chamados de "perguntas da Microsoft", e havia livros escritos sobre eles, este é realmente uma boa leitura.

Existem 2 problemas com eles. Em primeiro lugar, se o candidato pesquisar (e ler o livro), ele os conhecerá de qualquer maneira e em segundo lugar, mesmo se puder resolvê-los, como isso mostra que será um bom desenvolvedor / teste / PM.

Por esses motivos, raramente são solicitados na Microsoft. É muito melhor fazer perguntas de codificação ou de resolução de problemas que não exijam uma resposta "enganosa". Em outras palavras, você precisa fazer perguntas que permitam explorar as habilidades e o comportamento do candidato à medida que tentam resolver o problema - como entrevistador, eu quero que ele faça perguntas, encontre soluções e depois volte atrás quando descobrirem um problema, talvez nem encontre uma solução no tempo que eles têm, mas pelo menos resolva-o de maneira sensata. Isso reflete o trabalho da vida real. Eu nunca tive que medir 3 litros usando 2 baldes e uma galinha (ou qualquer que fosse a pergunta).

Dito isso, me fizeram algumas perguntas complicadas no meu tempo e agora me considero um especialista em transportar galinhas e raposas em pequenos barcos e calcular a vida útil de uma mosca que vive em um trem. Eu nunca tive que usar essa informação, mas quem sabe, talvez um dia ....

Steve Haigh
fonte
26

Você pode querer ler o livro Como você moveria o Monte Fuji? . Isso entra no raciocínio de que muitas pessoas usam enigmas nas entrevistas, e minha opinião é que é uma combinação de comportamento de culto à carga ( "A Microsoft faz isso, e se queremos ser tão bem-sucedidos quanto eles), é melhor fazermos o que eles querem"). do " ) e trote de fraternidade ( " caramba! ", eu tive que responder a essas perguntas e é melhor você acreditar que o próximo cara terá que responder!" ).

A história dessas perguntas como prática de entrevistas começou com William Shockley na década de 1950. Eles eram um tipo de pergunta razoavelmente comum no Vale do Silício, que os entrevistadores faziam porque outros estavam fazendo (e talvez eles soubessem algo que esse entrevistador não sabia?). Shockley os pretendia como um teste de inteligência, e a pergunta com os dois baldes estava em um dos testes originais de Stanford Binet IQ em 1916.

Possivelmente, as pessoas que fazem a entrevista realmente querem ver como você procura respostas, de modo que serão impossíveis de calcular perguntas, como quantas bombas de gasolina existem na sua cidade. Esses tipos de problemas são problemas de Fermi . Dois posts interessantes de Jeff sobre esse assunto são: A pergunta mais difícil do mundo sobre entrevistas e quão bom é um estimador? Parte III .

Pessoalmente, tenho uma opinião baixa sobre esse tipo de perguntas, pois elas geralmente são usadas por entrevistadores que não sabem o que estão fazendo, nem como procurar desenvolvedores. A menos que você trabalhe para uma empresa que faz quebra-cabeças / enigmas, eles pertencem à pilha da história, junto com "qual é a sua maior fraqueza" (responda a verdade a essa questão e encerre sua entrevista de maneira ruim) ou "por que são tampas de bueiro redondas "(nem todas são).

Tangurena
fonte
3
+1, não foi possível concordar mais com o último parágrafo!
missingfaktor
+1 no link do problema Fermi: é meio interessante ver se alguém é capaz de fazer estimativas com limites razoáveis ​​de erro. Você poderia igualmente pedir um intervalo de confiança em "quantos países existem?" No entanto, acho que saber pensar dessa maneira, embora admirável e útil, não é realmente essencial para o desenvolvimento. É como um desenvolvedor que conhece cálculo ou estatística: é bom, mas diz mais sobre seus antecedentes do que se eles serão bons no trabalho.
poolie 9/09/11
17

Outros forneceram respostas que eu votei como uma obrigação . A razão pela qual escrevo outra resposta é porque o que eu quero dizer provavelmente não se encaixa em um comentário e porque algo precisa ser dito sobre como pode ser uma boa entrevista de emprego em programação.

Na primeira boa entrevista, lembro que conversamos muito, sem pressa. Primeiro por uma hora, por telefone, sobre o design orientado a objetos e os prós e contras de implementá-lo em C ++. Então, no local, conversei com várias pessoas sobre suas práticas de desenvolvimento de software, integração, teste, controle de versão e gerenciamento de configuração, sobre equipes e responsabilidades, sobre tecnologia e design. Foi uma entrevista de um dia inteiro que incluiu almoço com as pessoas que me entrevistaram. Em retrospectiva, tratava-se de me encaixar produtivamente no que eles já estavam fazendo.

Desde então, as boas entrevistas têm sido longas, conversas de uma a duas horas sobre desenvolvimento de software. Não houve perguntas sobre solução de problemas, quebra-cabeças e desafios de codificação.

Se eu fosse entrevistar alguém para um trabalho de programação hoje, continuaria gostando. Gostaria de solicitar opiniões sobre diversos tópicos e deixar de lado a profundidade:

  1. Quais são as suas preferências de linguagem de programação? Por quê?
  2. Como abordar o tratamento de exceções?
  3. Os benefícios do design em camadas não são um mito?
  4. A integração contínua não é um fardo para a eficiência?
  5. Quem escreveu um pedaço de código deve possuí-lo, certo?
  6. O que você faz para entrar no "fluxo".
  7. Como os defeitos relatados devem ser incluídos no plano do projeto?
  8. ...

Essas são perguntas com mais de uma resposta e tratam de tópicos sobre os quais um desenvolvedor de software deve ter uma opinião informada. Concordo plenamente com as respostas que mencionam problemas reais anteriores experimentados como um tópico de conversa (não como perguntas).

Os estudos mais científicos sobre desenvolvimento eficaz de software desde a Peopleware dizem que os melhores programadores são aqueles que entendem a dinâmica do desenvolvimento de software, mesmo que não tenham o QI mais alto. Prefiro pegar um novato que está ansioso para aprender do que alguém com nanos de experiência que se resumem a 1anos de experiência repetidas nvezes. Meu preconceito pessoal é para candidatos que tendem a pensar fora da caixa e, ao mesmo tempo, sabem como se encaixar na (atual) caixa (minha).

Apalala
fonte
Excelente resposta. Offtopic: Seu exemplo da pergunta nº 3 me deixa curioso. Estou interessado em saber mais sobre suas opiniões sobre design em camadas.
missingfaktor
2
@missingfaktor # 3, como afirmado, é uma pergunta complicada para desencadear uma conversa sobre coisas feitas rapidamente versus coisas feitas corretamente. Os números 4 e 5 são iguais. O número 7 é provavelmente o mais difícil e apenas apto para funções de liderança.
Apalala 17/04
1
@missingfaktor Eu, novamente, dei uma resposta a uma pergunta diferente. Este artigo Wikipedia, os relacionados, e as ligações externas fornecer uma riqueza de informações sobre o motivo separação de interesses é fundamental para a concepção e construção de sistema complexo: en.wikipedia.org/wiki/Modularity
Apalala
Faz sentido. Muito obrigado! :-) Mais uma vez, excelente resposta. Apresenta muitos pontos positivos não mencionados em outras respostas aqui.
missingfaktor
Pessoalmente, eu também acrescentaria uma pergunta sobre ferramentas. As pessoas que se preocupam com as ferramentas que usam tendem a ser melhores programadores. Como usuário do Emacs, prefiro um usuário do vim a alguém que apenas encolhe os ombros e não se importa.
Singletoned
13

Eles podem ser úteis na avaliação de habilidades de resolução de problemas , o que é obviamente um dos aspectos principais da programação.

Como entrevistador de muitas pessoas ao longo dos anos, normalmente não faço perguntas do tipo pegadinha, como as que você parece descrever, mas posso muito bem perguntar algo e perguntar "como você resolveria ...".

Minhas expectativas nesse caso são ouvi-lo articular sua abordagem ao problema. Que outros dados você tentaria reunir? Como você testaria suas hipóteses, etc.

sdg
fonte
1
Fiz a mesma coisa ao entrevistar inúmeras pessoas. O objetivo da pergunta é observar como eles trabalham em direção à solução, não necessariamente se obtiverem a resposta certa. Você pode identificar bons programadores rapidamente, apenas observando esse processo.
Dave Sábio
2
@ Dave, tente-me. Quando eu resolvo esses quebra-cabeças, geralmente pego um pedaço de papel, desenho gráficos ou tabelas ou figuras cruzadas que representam atores ou escrevo números que de alguma forma estão relacionados ao processo de resolução do problema em minha mente; Faço tudo isso em completo silêncio, às vezes quebrado por murmúrios indistinguíveis. Então, eu sou um bom programador?
precisa
4
Heisenberg não aprovaria. Uma pessoa pode ser capaz de encontrar uma boa solução para um problema, mas não é capaz de comunicar o processo interno que usou. Pedir que eles o façam não apenas testa suas habilidades sob circunstâncias nas quais eles normalmente não funcionam, mas também acaba sendo influenciado por sua capacidade ou incapacidade de explicar a outra pessoa como seu processo de pensamento funciona. Eles podem nem estar cientes de como isso funciona.
Jason
4
Algumas pessoas acreditam que, só por serem extrovertidos, todos deveriam ser extrovertidos. Minha equipe atual é um bando de introvertidos e é de longe a melhor equipe com a qual já tive o prazer de trabalhar.
Dunk
2
@ Charles O que eu estava dizendo é que as pessoas introvertidas geralmente precisam PENSAR no problema antes que consigam encontrar uma solução que as satisfaça e depois possam explicar aos outros. Isso é bem diferente de "Incapaz de se comunicar". Os extrovertidos geralmente precisam seguir o caminho da solução de problemas. O pôster original espera claramente um estilo extrovertido para resolver problemas.
Dunk
8

Essas são apenas práticas de contratação de vodu. Outras pessoas fazem essas perguntas para que sintam que deveriam. Eles sabem que não responder à pergunta é "ruim" e responder é "bom", mas não sabem dizer por que além das não respostas, como "um desenvolvedor precisa dessas habilidades". Eles são uma perda de tempo e um indicador de que o entrevistador não é um entrevistador competente.

Rein Henrichs
fonte
5

Essa é a lógica antiga de que você precisa ter habilidades lógicas básicas; qualquer outra coisa pode ser ensinada. Mas isso não é inteiramente verdade. Ler lógica booleana , condições e loops, não é o mesmo que ser capaz de resolver um quebra-cabeça lógico .

Dito isto, nos dias das linguagens processuais, provavelmente era verdade que alguém que pudesse resolver esses problemas teria uma maior propensão a poder aplicar qualquer problema em termos de opções. Mas, em minha opinião, a programação funcional / OO requer uma mentalidade de engenharia, que é bem diferente (embora não contraditória).

Pessoalmente, não tenho certeza se gostaria de um emprego em uma empresa que ainda achava que a lógica era mais importante do que habilidades práticas de programação.

Isenção de responsabilidade: sou muito bom em quebra-cabeças lógicos e provavelmente não teria começado nesta linha de trabalho sem essa lógica.

pdr
fonte
2

O entrevistador deve estar se referindo às habilidades de resolução de problemas e lógica, que fazem parte do trabalho diário de um programador. Quando houver um problema, você precisará analisá-lo, subdividi-lo e escrever uma solução para ele usando a abordagem mais ideal.

Você pode argumentar quão bem um quebra-cabeça como esse representa sua capacidade de fazer isso. Não vejo o mérito de fazer uma pergunta de quebra-cabeça em vez de apenas fazer um problema de programação da vida real.

Steven Jeuris
fonte
1

Programar não é escrever linhas de código, é resolver problemas para e de outras pessoas (cliente, usuário, etc.).

Acontece que, para programadores, a solução assume a forma de um programa.

Por isso, é importante ter recursos de solução de problemas e por que é testado.

Dito isto, não tenho certeza de que resolver quebra-cabeças complicados seja a melhor maneira de avaliar alguém.

Xavier T.
fonte
1

Os quebra-cabeças nas entrevistas se enquadram em duas categorias: "quebra-cabeças lógicos" (como o que lhe foi perguntado) e categoria "pense de forma diferente". A categoria pensar de maneira diferente (não tenho certeza, também são chamados de quebra-cabeças laterais?) Geralmente é desse tipo: quantas folhas há nessa árvore? ou Quantos alfaiates estão presentes na sua cidade?

Eu estou bem com "quebra-cabeças lógicos" porque eles têm uma ou talvez duas soluções, no máximo, e podem ser alcançados por uma lógica direta. E acredito que os quebra-cabeças lógicos são bons até certo ponto, porque o processo necessário para resolvê-los é muito parecido com o que um codificador precisa pensar na vida real.

O tipo "pense de maneira diferente" me incomoda sem fim porque eles o forçam a fazer suposições e, em seguida, fazem alguns cálculos com base nas suposições. Simplificando, se seu entrevistador concorda com sua lógica, mas não com suas suposições, ou vice-versa, você perdeu. Há muito espaço para o entrevistador discordar da sua solução.

Quando tomo entrevistas, não pergunto quebra-cabeças lógicos. Motivo: a maioria dos candidatos, mesmo aqueles com 3 a 4 anos de experiência, fracassa ou desiste quando lhes peço para codificar problemas simples de livros didáticos, como séries de Fibonacci ou palíndromos.

O problema dos quebra-cabeças, de qualquer maneira, é que os programadores não tão bons sabem que, apenas procurando soluções para esses quebra-cabeças comuns na rede, podem impressionar os entrevistadores. Pouquíssimas pessoas serão honestas o suficiente para dizer que já conhecem a solução.

DPD
fonte
Por palíndromos, você quer dizer o problema muito difícil de encontrar a mais longa substring do palíndromo em uma sequência de entrada em tempo linear? :-)
b_jonas
1

Dois pontos:

  1. A programação é principalmente diferente da resolução de quebra-cabeças. É perfeitamente explicado por Steve McConnell em "Code Complete":

    O que? Você não precisa ser superinteligente? Não você não. Ninguém é realmente inteligente o suficiente para programar computadores. O entendimento completo de um programa médio requer uma capacidade quase ilimitada de absorver detalhes e uma capacidade igual de compreendê-los todos ao mesmo tempo. A maneira como você concentra sua inteligência é mais importante do que quanta inteligência você possui. Como o Capítulo 5 mencionou, na palestra do Prêmio Turing de 1972, Edsger Dijkstra entregou um artigo intitulado "O Humilde Programador". Ele argumentou que a maior parte da programação é uma tentativa de compensar o tamanho estritamente limitado de nossos crânios. As pessoas que são melhores em programação são as que percebem quão pequenos são seus cérebros. Eles são humildes. As pessoas que são as piores em programação são as que se recusam a aceitar o fato de que seus cérebros não são iguais à tarefa. Seus egos os impedem de serem grandes programadores. Quanto mais vocêaprenda a compensar seu cérebro pequeno, melhor você será um programador . Quanto mais humilde você for, mais rápido irá melhorar.

  2. Esses quebra-cabeças podem ser úteis durante a entrevista, mas Somente se o entrevistador observar o Processo , não resultará.

Mas, idealmente, os quebra-cabeças deveriam ser mais complicados e relacionados à programação (como um pequeno projeto de 2 horas), na minha opinião. O fato é que os entrevistadores são pessoas e não têm "habilidades de entrevista" perfeitas.

klm123
fonte
Você poderia dizer o que há de errado com a minha resposta se você votar em -1, por favor.
klm123
1
+1, porque é uma boa resposta. Eu teria votado de outro modo, apenas para cancelar uma votação inexplicável.
missingfaktor
0

Existem algumas maneiras diferentes de examinar esses problemas:

  1. Conhecendo uma solução anterior. No filme ... Die Hard with a Vengeance ... explica isso para mim ...? sendo um exemplo de conhecer uma solução para o caso em que os blá são 4,3 e 5, respectivamente. Algumas pessoas poderão aproveitar rapidamente seu conhecimento interno de uma solução passada e adaptá-la, se necessário. Isso é geralmente o que eu acredito que um entrevistador esperaria, o que pode ou não ser uma boa idéia.

  2. Habilidades de improvisação criativa. Esse seria o caso se você não souber uma solução anterior ou mesmo reconhecer o problema como algo que se poderia modelar como uma equação diofantina. Portanto, a questão é a rapidez com que você pode usar o que é fornecido e encontrar uma solução para o problema de maneira criativa, além de explicar por que o que você tem é uma solução válida para o problema.

Pode ser o que faz a pergunta passar de maneira satisfatória, embora em cada caso também haja um pouco de teste das habilidades de comunicação de alguém, como também se pode tentar uma resposta de: "Isso é realmente relevante para a posição em que estou?" aplicando? Quando essas habilidades foram usadas pela última vez? " isso pode levar a um diálogo interessante se o entrevistador se abrir sobre o que exatamente eles querem ver que talvez uma abordagem alternativa possa ser vista como mais eficaz aqui.

JB King
fonte
0

Não é um problema particularmente complicado. Apenas três etapas são necessárias e existem apenas duas opções em cada etapa. Eu ficaria surpreso se algum dos meus colegas fosse incapaz de resolvê-lo em pouco tempo. Não apresentamos esses problemas nas entrevistas, mas acho razoável fazer essas perguntas. Eles são certamente mais úteis do que perguntas detalhadas sobre sintaxe ou bibliotecas.

OTOH, acho que os problemas de programação são mais úteis.

Kevin Cline
fonte
0

Você deve se lembrar que não há como saber com absoluta certeza que alguém será bom em um emprego. Especialmente um trabalho de CS, pois muitos desafios que o trabalho pode ter reservado não podem ser previstos.

Portanto, o potencial empregador deve adivinhar seu desempenho futuro.

Graus, recomendações e GPAs podem ser obtidos com tempo / esforço e engenharia social, a experiência de trabalho pode ser embelezada e / ou falsa, e os testes padronizados são francamente básicos demais para serem excessivamente indicativos de capacidade. Portanto, o currículo pode dar uma indicação dos níveis de esforço / compromisso em sua história, mas nada disso diz respeito à sua capacidade real de resolver problemas difíceis que surgem no mundo da ciência da computação. Não consigo pensar em uma maneira melhor de prever esse tipo de habilidade do que alguns bons quebra-cabeças de lógica / matemática / CSy.

Lembre-se de que é um jogo de adivinhação, e a realidade é que todas as coisas são iguais a qualquer um de nós prefere contratar alguém capaz de resolver esses quebra-cabeças do que aquele que não pode.

Sim, você pode estudar quebra-cabeças de entrevistas, mas acho que você ficará queimado se o quebra-cabeça fornecido não corresponder aos que você estuda ... e desde que não memorize os quebra-cabeças e suas soluções, talvez estudando os quebra-cabeças eles mesmos farão de você uma pessoa mais inteligente de uma maneira real, como qualquer educação real deveria.

8steve8
fonte
3
Eu não sei sobre você, mas ao entrevistar, eu prefiro descrever um real problema difícil que surgiu em nosso mundo da empresa recentemente, e ver como o entrevistado iria abordá-lo. Curiosamente, recentemente, nenhum cliente nos contratou para medir quantidades de água usando dois baldes. Principalmente o que fazemos envolve programação de computadores.
Carson63000
@ Carson63000 não que um problema real que sua empresa encontrou seria uma má idéia, mas muitas vezes é proibitivo por causa das especificidades do problema do mundo real e da implementação da solução. É por isso que os quebra-cabeças envolvendo baldes são ótimos, porque o custo de entrada é muito pequeno e vai direto para as partes interessantes.
8steve8
Eu imagino que você possa ver a analogia entre o problema do bucket e, digamos, escrever um software para realizar uma tarefa enquanto usa um número mínimo de buscas em disco ou solicitações http.
8steve8