Como posso testar as habilidades de PHP em uma entrevista? [fechadas]

58

Minha empresa precisa contratar um desenvolvedor de PHP, mas ninguém tem conhecimento de PHP em minha empresa e achamos difícil testar suas habilidades em PHP. Se fosse um desenvolvedor de C / Java, eu pediria que ele escrevesse uma rápida implementação do Game of Life, mas o PHP é uma linguagem completamente diferente.

Eu vi esse teste com interesse:

http://vladalexa.com/scripts/php/test/test_php_skill.html

Alguém mais tem mais sugestões?

Mascarpone
fonte
3
Teste interessante, não cobre a injeção de SQL, o que eu certamente cobriria. Eu acho que esse teste é uma boa maneira de testar sua capacidade de determinar sua familiaridade com a maneira como o PHP trata variáveis ​​e não muito mais.
quer
6
Faça o que fizer, não faça perguntas sobre a ortografia dos nomes de funções padrão. A nomeação de funções PHP é tão inconsistente.
Chris C
11
Possível duplicata de programmers.stackexchange.com/questions/46274/…
Adam Lear
16
Eu iria se preocupar menos com as suas costeletas de PHP e mais, se eles podem programar, trabalhar com a equipe, entender a segurança web, etc.
Peter Loron
12
Se ninguém da sua empresa conhece bem o PHP, a melhor maneira é usar algum serviço de teste de habilidades. http://tests4geeks.com/test/php-mysql - Eu gosto deste. E então, se o resultado for bom, você pode pedir que ele escreva algum código PHP. Por exemplo, existem estudantes e assuntos no banco de dados. Peça a ele para escrever o formulário HTML, onde o diretor edita as marcas na tabela (os alunos estão na coluna da esquerda, os assuntos estão na linha superior, as marcas estão no cruzamento).
Joseph

Respostas:

71

Código

  • Peça ao candidato para escrever o código
  • Peça ao candidato para ler o código

Se você pedir ao candidato para escrever código, verifique se:

  • O código não é trivial, mas pequeno
  • Você permite o acesso ao manual e à internet

Se você solicitar ao candidato que leia o código, verifique se:

  • O código tem alguns erros triviais
  • O código possui alguns erros não triviais
  • O código funciona bem, mas pode ser facilmente otimizado

Você pode usar três ou mais partes diferentes do código, comece pelo mais simples e avance para o próximo se perceber que o candidato lida com facilidade. Jogue alguma recursão, para apimentar as coisas.

Recursos

Peça uma lista detalhada dos recursos PHP que o candidato usa. Livros, blogs, fóruns, revistas etc. Foi assim que meus atuais empregadores descobriram o StackOverflow .

Se o candidato mencionar StackOverflow ou Programmers, você NÃO deve perguntar ou tentar descobrir o nome de usuário. Se eles quisessem anunciar sua reputação, teriam incluído um link de Carreiras 2.0 em seu currículo.

Frameworks

Todo desenvolvedor PHP deve conhecer as estruturas PHP mais populares:

e seja fluente em pelo menos um deles. Você pode ter alguns exemplos de código prontos para cada um e pedir ao candidato que os leia e explique, depois que eles disserem com quem eles estão mais familiarizados.

Depuração e criação de perfil

Sempre achei que os desenvolvedores de PHP não possuem habilidades de depuração e criação de perfil (talvez apenas os desenvolvedores de PHP com quem trabalhei). Se durante a discussão você descobrir que o candidato usa o xdebug ativamente , não se preocupe com o resto da entrevista e apenas contrate-os. ;)

Desinfecção de entrada

Isso é importante. Você pode começar com uma discussão sobre por que é importante e depois pedir os métodos mais comuns para alcançá-lo. Esta discussão irá ajudá-lo sobre o que perguntar.

Algumas dicas:

Snafus PHP

Você pode encontrar muitos snafus PHP nesta excelente discussão . Se você está entrevistando para uma posição sênior, você definitivamente deve perguntar sobre alguns deles. Alguns exemplos:

Manipulação do PHP de valores numéricos em strings:

"01a4" != "001a4" // true
"01e4" == "001e4" // also true

Código PHP válido :

System.out.print("hello");

No PHP, uma string é tão boa quanto um ponteiro de função:

$x = "foo";
function foo(){ echo "wtf"; }
$x(); # "wtf"   

Teste de unidade

Preciso dizer mais?

Conclusão

Um bom desenvolvedor de PHP deve combinar uma variedade de habilidades e talentos:

  • Uma boa compreensão do HTTP
  • Um bom entendimento da configuração do Apache (mesmo se você usar um servidor Web diferente na sua empresa)
  • Pelo menos um entendimento básico de JavaScript
  • Um ótimo entendimento de HTML / CSS

A lista continua e continua. Certifique-se de adaptar a entrevista às necessidades específicas da vaga, você não deseja contratar apenas um bom desenvolvedor, mas um bom desenvolvedor que seja ótimo no que você precisa que ele faça imediatamente.

yannis
fonte
22
Boa resposta no geral, mas discordo da parte de 'estruturas' e da parte de 'desempenho básico'. Se você conhece uma determinada estrutura ou não, não diz muito sobre suas qualidades como programador. Sobre a parte do desempenho: se você está otimizando nesse nível, provavelmente não deve usar o PHP em primeiro lugar. Eu faço escolhas entre as alternativas que você lista dezenas de vezes por dia, mas sempre com base na legibilidade e funcionalidade, não no desempenho. A resposta correta para essas questões de desempenho é "isso não importa na maioria das vezes".
Tdammers # 06:
11
@YannisRizos: Embora provavelmente facilite a integração em uma equipe, você está assumindo que na empresa do OP eles usam uma dessas estruturas populares, mas se não souberem, as duas estruturas não provariam nada. Talvez você tenha pensado nessa parte como uma maneira de testar sua capacidade de trabalhar com uma estrutura e não com essas estruturas? (
Exemplo
2
@Petah Isso não faz nenhum sentido, especialmente no estágio da entrevista, e eu evitaria trabalhar em uma empresa que solicita às pessoas que revelem informações assim durante a entrevista. Todo o raciocínio "esconder algo" é perverso. Não me importo que meu empregador saiba como passo meu tempo livre, e é exatamente isso. Se eu estou interessado em divulgar meus programadores conta em meu próprio, que é uma história diferente ...
yannis
11
@Petah Bem, eu sinceramente espero que os futuros empregadores não tente ficar a conhecer a minha personalidade através de meus programadores atividades (que gostariam de gastar 25% -35% do seu tempo com um mod nazi mal;)
yannis
11
Discordo da coisa da estrutura. Uma prática boa e moderna é usar componentes aplicáveis ​​de estruturas usando o compositor que você precisa, em vez de usar uma estrutura inteira. Na verdade, o mesmo pode ser dito no mundo JS agora também ..
John Hunt
44

O teste ao qual você vinculou é interessante, e a resposta de Yannis Rizos é ótima, mas acho que o importante também é o seguinte:

Se você precisa de um bom desenvolvedor, não procure pelo desenvolvedor PHP. Procure um bom desenvolvedor que saiba PHP. Isso significa que, pelo menos metade da entrevista, você deve fazer perguntas que não têm muito a ver com sintaxe do PHP ou funções do PHP.

Pergunte a ele o que é MVC, o que é AJAX, como funciona o HTTP, como funciona o REST, como funciona o SQL, algumas estruturas de dados, alguns princípios básicos de desempenho (como você mede, como você melhora), conceitos básicos de teste, conceitos básicos de segurança (XSS, XSRF, injeções, como você defende), conhecimentos básicos de programação, aplicados aos domínios típicos do PHP - web, redes, transformações de dados etc.

Se ele é bom nisso, peça a ele para escrever um código simples, escolha uma tarefa fácil que não demore muito - como encontrar palavras com a maioria das vogais seguidas no texto, ou inverter cada palavra no texto ou multiplicar duas matrizes. Você também pode pedir a ele para implementar o Jogo da Vida em PHP, se quiser :)

Se ele aprovar isso, você poderá prosseguir para questões PHP mais complicadas, mas não coloque muito peso nisso. Ele pode ler a maior parte do manual e, o que não pode ler, aprenderá rapidamente se for bom. O PHP foi desenvolvido para ser simples; portanto, se ele é um bom programador e possui algum conhecimento prático de PHP, provavelmente será capaz de se atualizar. Se ele sabe programar em geral, aprender a programar em PHP é mais fácil do que o contrário - saber minúcias de sintaxe do PHP não é importante se você não entender para que servem os testes de unidade ou como se livrar de problemas de XSS.

StasM
fonte
13

Embora a resposta de Yannis Rizos seja boa - eu sei que não passaria nesse teste e poderia usá-la como um recurso para determinar onde focar para melhorar minhas costeletas de PHP, acho que valeria a pena encontrar uma programação amigo que sabe PHP para participar do processo de entrevista. Todas as perguntas da resposta anterior são boas, mas sem algum conhecimento de domínio, será difícil avaliar a qualidade das respostas.

Dito isto, dependendo do que você precisa, como já foi dito por outros, a facilidade geral de programação e o ajuste da equipe são provavelmente mais importantes que o conhecimento específico do idioma.

cori
fonte
5
+1 para I think it would be worth your while to find a programming buddy who knows PHP to sit in on the interview process., ótima sugestão.
yannis