Eles precisam codificar o FizzBuzz enquanto estão em uma escada.
Job
2
@Job Pontos extras se o FizzBuzz usar mônadas de Estado e IO! :-)
Daniel C. Sobral
Encontrei algumas perguntas para os desenvolvedores do Scala e decidi escrever algumas respostas. No caso de alguém estiver interessado: pedrorijo.com/blog/scala-interview-questions
pedrorijo91
Respostas:
17
Primeiro, eu diria, pense por que você precisa de um desenvolvedor Scala. É realmente Scala que você precisa? Pense no que acompanha o Scala (IDE, ferramentas de compilação, bibliotecas, outra camada de complexidade acima do Java etc ...). Voltar para a pergunta. Ele tem dois aspectos: compreensão teórica e habilidades práticas. não deixe a coisa da "teoria" enganar você. É tão importante no Scala quanto a praticidade é importante no Java.
Teórico
Veja se eles sabem o que é realmente o paradigma funcional. Peça-lhes para comparar os dois paradigmas (FP versus imperativo) na filosofia e na prática. Se eles podem dar exemplos de idiomas que oferecem suporte total ou parcial ao FP, isso é uma vantagem para eles.
Teoria e prática mescladas
Veja se eles realmente conseguem fazer a programação funcional da maneira certa. Pergunte a eles sobre listas, mapas, zíper e recursão. Depois vêm os fechamentos, lambdas, redução, funções de ordem superior e imutabilidade.
Prático
Veja se eles podem refatorar um trecho de código imperativo em uma boa alternativa funcional (veja acima). Tente um loop que implemente alguma matemática ou algo parecido com essas linhas.
Encontre seu gosto pelo estilo funcional versus imperativo. Opte por um estilo mais funcional, mas tome cuidado para não chegar aos extremos do lado do desenvolvedor.
Veja o quanto eles sabem sobre as bibliotecas Scala (por exemplo, levantamento, expedição, etc.) e ferramentas (por exemplo, SBT, fsc, IDEA).
Veja como eles podem aproveitar o Java (código e ferramentas). O Scala está fortemente acoplado ao Java, especialmente em ambientes mais graves. Saber que isso é uma grande vantagem.
Teórico
Peça-lhes para comparar o Scala ao Java (PHP, C ++, Objective C ou o que for) e solicite que eles lhe digam o que há de errado com o Scala. Veja se eles entendem os problemas e as vantagens. Peça a eles que dêem exemplos do mundo real de quando as falhas do Scala podem causar problemas (por exemplo, é difícil para os novos Joes se darem bem, é imaturo, pois o suporte é muito limitado em comparação ao Java etc.)
Prático
Veja se eles estão conectados à comunidade. Pergunte a eles sobre Martin Odersky e David Pollak. Peça-lhes para nomear alguns projetos Scala e descrevê-los para você (Facebook, Twitter, FourSquare, DBPedia e DBPedia SpotLight). Veja se eles sabem exatamente como o Scala é usado nesses projetos. Eles leram os artigos, assistiram aos vídeos etc.?
Pergunte a eles sobre os livros (existem apenas alguns). Quanto mais eles souberem, melhor.
Como uma última palavra de cautela, posso dizer que línguas brilhantes têm esse estranho potencial para atrair as pessoas erradas. Tenha cuidado com o tipo que vem para Scala por todos os motivos errados. Aqui estão alguns:
Scala é para os privilegiados (me sinto inteligente, me sinto tão diferente dos outros Joes, tenho um Ph.D brilhante e novinho em folha, odeio imperativo porque é para os retardados, Java é superficial, Scala é tão elegante etc. ) Esse tipo não é produtivo em projetos sérios e difícil de se dar bem.
Estou apaixonada pela sintaxe do Scala e gostaria de escrever minha DSL em todos os lugares que tenho a chance de codificar. Esse tipo gosta de explorar de maneira destrutiva as peculiaridades de Scala até a última gota. Eles se sentem muito bem ao escrever códigos enigmáticos e concisos demais a ponto de serem ilegíveis. Esse tipo é particularmente perigoso, pois seu código é ilegível. A oferta deles é o amor por sobrecarregar o operador, nomes estranhos e escrever frases simples.
Eu fico com Scala até a última gota, não importa o quê. Este é o tipo purista ingênuo. Eles não podem se comprometer e o projeto sofre quando é necessária uma abordagem híbrida, como é o caso de projetos do mundo real.
PS: Se você encontrou um bom Joe, por favor, avise-me, pois precisamos de alguns;)
@ Dave Briccetti, recebi a idéia de "conectado à comunidade" de Dave e decidi elaborar e acabou sendo uma resposta muito longa. Crédito para Dave pela menção à comunidade;)
Ashkan Kh. Nazary
Ótimo post. Quem é Você?
Dave Briccetti
@ Dave, atualmente sou o desenvolvedor líder @ AYLIEN, que está fazendo a PNL da maneira Scala.
Ashkan Kh. Nazary
Ótima resposta no geral, mas +1 especialmente para a pequena lista de "razões erradas". As mesmas patologias podem ser encontradas nos fanáticos de C ++.
darenw
1
Provavelmente, pode-se passar mais da metade dessa entrevista sem ter codificado em Scala, nunca. É um bug ou um recurso? Estou surpreso que sua conclusão não seja mais agnóstica em relação à linguagem de programação, por exemplo, que, afinal, um bom desenvolvedor de Scala é um bom desenvolvedor, apenas com açúcar sintático diferente.
precisa saber é o seguinte
8
Em uma entrevista no mundo real, simplesmente conhecer Scala é metade da batalha vencida. Contratar um bom programador é sempre difícil, independentemente do idioma!
Os programadores da Scala tendem a vir para a linguagem porque já estavam no topo de seu jogo em Java e queriam "levar para o próximo nível".
Se você tem um suprimento abundante de desenvolvedores Scala disponíveis para entrevista, considere-se com sorte. Caso contrário, as perguntas mais relevantes podem ser "Quais aspectos devo procurar em um programador que treinarei para usar o Scala?" E "Quais empresas atualmente podem fornecer serviços de treinamento?"
Eu gostaria de dizer que nem todos os desenvolvedores do Scala são os melhores em Java (ou o que quer que seja), muitos deles adoram a sensação de "sou diferente" ou "sou inteligente" que o Scala dá a eles. Muitos não têm a menor idéia do que realmente é Scala. Você deve ter cuidado com eles ;-)
Ashkan Kh. Nazary
@ ashy_32bit - Isso é cada vez mais verdade hoje em dia, mas não foi o caso tanto de volta quando eu respondi a essa em 2011
Kevin Wright
7
Gosto de encontrar soluções para pequenos problemas como este: Faça um histograma dos resultados de jogar dois dados de seis lados 200 vezes.
Alguém com uma solução como a de Daniel Sobral, ou essa de Kevin Wright: http://ideone.com/8LFs3 , valeria uma olhada mais de perto.
Se a resposta parecer código Java, talvez o candidato não esteja suficientemente longe.
Eu também gostaria de ver que a pessoa está conectada à comunidade Scala: conhece os livros, autores, desenvolvedores de código aberto, grupos de usuários e pessoas interessantes.
Embora ele bate a nossa média da indústria em estar fora por 2 ;-)
Duncan McGregor
4
Nunca fiz nenhuma contratação do Scala, mas procuraria entender como funcionam os implícitos, o padrão de classe de tipo e os conceitos básicos de programação funcional.
Respostas:
Primeiro, eu diria, pense por que você precisa de um desenvolvedor Scala. É realmente Scala que você precisa? Pense no que acompanha o Scala (IDE, ferramentas de compilação, bibliotecas, outra camada de complexidade acima do Java etc ...). Voltar para a pergunta. Ele tem dois aspectos: compreensão teórica e habilidades práticas. não deixe a coisa da "teoria" enganar você. É tão importante no Scala quanto a praticidade é importante no Java.
Teórico
Teoria e prática mescladas
Prático
Veja se eles podem refatorar um trecho de código imperativo em uma boa alternativa funcional (veja acima). Tente um loop que implemente alguma matemática ou algo parecido com essas linhas.
Encontre seu gosto pelo estilo funcional versus imperativo. Opte por um estilo mais funcional, mas tome cuidado para não chegar aos extremos do lado do desenvolvedor.
Veja o quanto eles sabem sobre as bibliotecas Scala (por exemplo, levantamento, expedição, etc.) e ferramentas (por exemplo, SBT, fsc, IDEA).
Veja como eles podem aproveitar o Java (código e ferramentas). O Scala está fortemente acoplado ao Java, especialmente em ambientes mais graves. Saber que isso é uma grande vantagem.
Teórico
Prático
Veja se eles estão conectados à comunidade. Pergunte a eles sobre Martin Odersky e David Pollak. Peça-lhes para nomear alguns projetos Scala e descrevê-los para você (Facebook, Twitter, FourSquare, DBPedia e DBPedia SpotLight). Veja se eles sabem exatamente como o Scala é usado nesses projetos. Eles leram os artigos, assistiram aos vídeos etc.?
Pergunte a eles sobre os livros (existem apenas alguns). Quanto mais eles souberem, melhor.
Como uma última palavra de cautela, posso dizer que línguas brilhantes têm esse estranho potencial para atrair as pessoas erradas. Tenha cuidado com o tipo que vem para Scala por todos os motivos errados. Aqui estão alguns:
PS: Se você encontrou um bom Joe, por favor, avise-me, pois precisamos de alguns;)
fonte
Em uma entrevista no mundo real, simplesmente conhecer Scala é metade da batalha vencida. Contratar um bom programador é sempre difícil, independentemente do idioma!
Os programadores da Scala tendem a vir para a linguagem porque já estavam no topo de seu jogo em Java e queriam "levar para o próximo nível".
Se você tem um suprimento abundante de desenvolvedores Scala disponíveis para entrevista, considere-se com sorte. Caso contrário, as perguntas mais relevantes podem ser "Quais aspectos devo procurar em um programador que treinarei para usar o Scala?" E "Quais empresas atualmente podem fornecer serviços de treinamento?"
fonte
Gosto de encontrar soluções para pequenos problemas como este: Faça um histograma dos resultados de jogar dois dados de seis lados 200 vezes.
Veja os comentários aqui para obter respostas interessantes: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html
Alguém com uma solução como a de Daniel Sobral, ou essa de Kevin Wright: http://ideone.com/8LFs3 , valeria uma olhada mais de perto.
Se a resposta parecer código Java, talvez o candidato não esteja suficientemente longe.
Eu também gostaria de ver que a pessoa está conectada à comunidade Scala: conhece os livros, autores, desenvolvedores de código aberto, grupos de usuários e pessoas interessantes.
fonte
Nunca fiz nenhuma contratação do Scala, mas procuraria entender como funcionam os implícitos, o padrão de classe de tipo e os conceitos básicos de programação funcional.
fonte