Você deve responder perguntas de programação de entrevista com a biblioteca? [fechadas]

4

Algumas perguntas podem ser respondidas facilmente usando uma biblioteca de idiomas específica. Por exemplo, Java tem Set, Maps e List. É possível responder a essas perguntas de codificação durante a entrevista usando essa biblioteca ou devemos ir mais com uma abordagem tradicional e realista, tornando-a uma resposta C?

    
por EquinoX 20.06.2011 / 03:36
fonte

7 respostas

17

Acho que a melhor solução é oferecer resposta com ambos !

Comece com " A menos que haja uma razão convincente para não usar a função blah da biblioteca blat , mas se isso não for apropriado Por algum motivo, eu consideraria a implementação do zero. Gostaria que eu passasse pelo algoritmo? "

    
por 20.06.2011 / 11:50
fonte
8

Normalmente, pelo menos na minha experiência, o entrevistador especificará se você deve usar ou não os recursos da biblioteca padrão. E mesmo que estruturas de dados como aquelas que você listou não existam na biblioteca padrão da linguagem, às vezes elas são compatíveis com você de qualquer maneira e assumindo que elas foram implementadas ou você sabe como implementá-las.

Geralmente, eles estão procurando por um conceito de alto nível (caso em que eles dirão que você se sinta livre para assumir que Set, List, etc. existem e podem ser usados), ou eles especificamente pedirão para você implementar um conjunto, lista, etc. a partir do zero, caso em que é claro que você não iria usar o built-in.

E se não estiver claro, pergunte!

    
por 20.06.2011 / 03:42
fonte
6

Talvez você deva ser capaz, infelizmente você não pode. Uma vez eu entrevistei em uma empresa grande (pense em 10 ^ 100), onde um entrevistador escreveu uma lista no quadro branco como:

1, 4, 2, 2, 12, -3

e me pediu para descrever como eu iria resolver isso. Eu respondi assim:

.sort();

porque é assim que eu classificaria essa lista . Conheço o Big-O e os custos de alguns algoritmos de classificação, mas aposto que alguém cujo trabalho é escrever um método de biblioteca para classificar uma lista pode fazer um trabalho muito melhor do que eu. Eu argumento que ser capaz de confiar, entender e usar o trabalho de outras pessoas é muito mais importante para a engenharia de software do século 21 do que poder reimplementar a solução para um problema que já foi resolvido pelas máquinas de cartão da IBM antes da Segunda Guerra Mundial. p>

[Claro, não me ofereceram o emprego ...]

    
por 20.06.2011 / 12:20
fonte
5

Isso realmente depende da pergunta. Se eles pedirem que você implemente uma lista vinculada, provavelmente eles estão testando você em suas habilidades de estrutura de dados e não na memorização do nome da classe LinkedList da estrutura da coleção. Além disso, se eles estão pedindo para resolver um quebra-cabeça usando uma estrutura de dados, usar uma classe da estrutura de coleta pode ser a escolha apropriada. Basta reconhecer a intenção da pergunta e, se você não tiver certeza, basta perguntar.

    
por 20.06.2011 / 03:45
fonte
3

Se alguém lhe perguntar como fazer algo em Java, a resposta correta deve ser sempre usar os recursos embutidos na biblioteca padrão. Um ex-co-trabalhou meu que era um desenvolvedor C iria entrevistar desenvolvedores Java e pedir-lhes para escrever como reverter uma lista vinculada em um quadro branco, ele estava procurando por sua solução C específica, que para um desenvolvedor que irá somente estar fazendo Java é a solução incorreta. A solução correta em Java só pode ser Collections.reverse () , qualquer outra coisa mostra falta de familiaridade com o Java idiomático .

Se eles estão perguntando e esperando algo diferente de Java idiomático , você precisa esclarecer isso.

    
por 20.06.2011 / 04:42
fonte
1

Honestamente, não vejo que perguntas desse tipo possam dar um entrevistador. Eu suponho que se você entrevistar um estagiário e quiser ter certeza de que eles tiveram, e não reprovou a classe de estruturas de dados deles, com certeza ... mas eu não vejo como essas perguntas realmente respondem a algo útil. Ser capaz de regurgitar uma implementação de lista vinculada a pedido não faz um programador, e uma pessoa que não pode nem necessariamente é ignorante.

Por outro lado, perguntar sobre como USAR essas estruturas pode ser benéfico. Isso é o que um programador realmente fará de qualquer maneira. Se você conhece os componentes básicos de suas estruturas de dados, então você pode avaliar melhor o que é útil e onde. Então você pode levar o seu tempo fazendo sua própria implementação, se for realmente necessário, com o auxílio de testes de unidade e um compilador (ao invés de um quadro branco).

Alguns entrevistadores afirmam que isso os ajuda a avaliar como uma pessoa pensa. Eles esperam que você fale sobre o seu processo de resolver o problema em voz alta. Eu vejo dois problemas com isso:

1) Não é um problema interessante. Não há nada para pensar.

2) Muitas pessoas são prejudicadas quando tentam "pensar" em voz alta. A quantidade de centros cerebrais que precisam estar envolvidos nesse processo é muito maior do que apenas resolver o problema. Algumas pessoas são ajudadas por isso, outras (e podem ser muito boas também) as pessoas acabam ficando muito distraídas. Isso também não significa que eles sejam maus comunicadores, apenas que eles são do tipo que ficam sentados em silêncio, resolvendo o problema e, ENTÃO, propondo a solução que eles apresentam.

De qualquer forma, reclamar .. Eu diria que se o entrevistador pediu para você resolver um problema que envolve uma estrutura de dados que você deveria se sentir livre para usar um. Eu iria tão longe quanto propor que você pode simplesmente criar sua própria API de estrutura de dados e apenas dizer (isso faz a operação básica XXXX). Se eles especificamente pedirem que você escreva alguma parte de uma estrutura de dados, é claro que você se deparou com uma dessas pessoas e simplesmente terá que fazê-lo.

    
por 20.06.2011 / 04:44
fonte
1

Sugiro usar a biblioteca. Se o entrevistador realmente quer que eu explique os detalhes, ele pode dizer "como você faria isso sem usar uma biblioteca?" ou "como funciona essa classe de biblioteca?".

Se ele tomar minha resposta inicial como uma indicação de que eu não sei as minhas coisas, então ele é claramente um idiota, e eu não gostaria de trabalhar para ele de qualquer maneira!

    
por 20.06.2011 / 13:29
fonte