¿Cómo puedo probar las habilidades de PHP en una entrevista? [cerrado]

58

Mi empresa necesita contratar un desarrollador de PHP, pero nadie tiene conocimiento de PHP en mi empresa y nos resulta difícil evaluar las habilidades de PHP. Si fuera un desarrollador de C / Java, le pediría que escribiera una implementación rápida del Juego de la vida, pero PHP es un lenguaje completamente diferente.

Vi esta prueba con interés:

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

¿Alguien más tiene más sugerencias?

Mascarpone
fuente
3
Prueba interesante, no cubre la inyección SQL, lo que ciertamente cubriría. Supongo que esa prueba es una buena manera de probar su capacidad para determinar su familiaridad con la forma en que PHP trata las variables y no mucho más.
Ben Brocka
66
Hagas lo que hagas, no hagas preguntas sobre la ortografía de los nombres de funciones estándar. La denominación de funciones de PHP es muy inconsistente.
Chris C
1
Posible duplicado de programmers.stackexchange.com/questions/46274/…
Adam Lear
16
Me preocuparía menos por sus chops de PHP y más si pueden programar, trabajar con el equipo, comprender la seguridad web, etc.
Peter Loron
12
Si nadie de su empresa conoce bien PHP, entonces la mejor manera para usted es utilizar algunos servicios de prueba de habilidades. http://tests4geeks.com/test/php-mysql - Me gusta este. Y luego, si el resultado será bueno, puede pedirle que escriba un código PHP. Por ejemplo, hay estudiantes y asignaturas en la base de datos. Pídale que escriba el formulario HTML, donde el director edita las marcas en la tabla (los estudiantes están en la columna izquierda, los temas están en la fila superior, las marcas están en la intersección).
Joseph

Respuestas:

71

Código

  • Pídale al candidato que escriba el código
  • Pídale al candidato que lea el código

Si le pide al candidato que escriba el código, asegúrese de que:

  • El código no es trivial sino pequeño.
  • Usted permite el acceso al manual y a internet

Si le pide al candidato que lea el código, asegúrese de que:

  • El código tiene algunos errores triviales.
  • El código tiene algunos errores no triviales.
  • El código funciona bien, pero se puede optimizar fácilmente

Puede usar tres o más partes diferentes de código, comenzar desde el más simple y avanzar hasta el siguiente si ve que el candidato se las arregla con facilidad. Agregue algo de recursión, para condimentar las cosas.

Recursos

Solicite una lista detallada de los recursos PHP que utiliza el candidato. Libros, blogs, foros, revistas, etc. Así es como mis empleadores actuales se enteraron de StackOverflow .

Si el candidato menciona StackOverflow o Programadores, NO debe preguntar ni intentar averiguar su nombre de usuario. Si quisieran anunciar su reputación, habrían incluido un enlace de Carreras 2.0 en su currículum.

Marcos

Todos los desarrolladores de PHP deben conocer los marcos PHP más populares:

y ser fluido en al menos uno de ellos. Puede tener algunos ejemplos de código listos para cada uno y pedirle al candidato que los lea y los explique, después de que le digan con cuál están más familiarizados.

Depuración y perfilado

Siempre he sentido que los desarrolladores de PHP carecen de habilidades de depuración y creación de perfiles (quizás solo los desarrolladores de PHP con los que he trabajado). Si durante la discusión descubre que el candidato usa activamente xdebug , no se moleste con el resto de la entrevista y simplemente contrate a ellos. ;)

Desinfección de entrada

Esto es importante. Puede comenzar con una discusión sobre por qué es importante y luego pedir los métodos más comunes para lograrlo. Esta discusión le ayudará sobre qué preguntar.

Algunos consejos:

PHP snafus

Puede encontrar muchos problemas de PHP en esta excelente discusión . Si está entrevistando para un puesto de alto nivel, debe definir preguntar sobre algunos de ellos. Algunos ejemplos:

Manejo de PHP de valores numéricos en cadenas:

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

Código PHP válido :

System.out.print("hello");

En PHP, una cadena es tan buena como un puntero de función:

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

Examen de la unidad

¿Necesito decir mas?

Conclusión

Un buen desarrollador de PHP debe combinar una variedad de habilidades y talentos:

  • Una buena comprensión de HTTP
  • Una buena comprensión de la configuración de Apache (incluso si utiliza un servidor web diferente en su empresa)
  • Al menos una comprensión básica de JavaScript
  • Una gran comprensión de HTML / CSS

La lista sigue y sigue. Asegúrese de adaptar la entrevista a las necesidades específicas de la oferta de trabajo, no desea contratar solo un buen desarrollador, sino un buen desarrollador que sea excelente en lo que necesita que haga inmediatamente.

Yannis
fuente
22
Buena respuesta en general, pero no estoy de acuerdo con la parte de 'marcos' y la parte de 'rendimiento básico'. Si conoces un cierto marco o no, no dice mucho sobre tus cualidades como programador. Acerca de la parte de rendimiento: si está optimizando a este nivel, probablemente no debería usar PHP en primer lugar. Tomo decisiones entre las alternativas que enumera docenas de veces al día, pero siempre en función de la legibilidad y la funcionalidad, no del rendimiento. La respuesta correcta a estas preguntas de rendimiento es "no importa la mayor parte del tiempo".
tdammers
1
@YannisRizos: Si bien lo más probable es que sea más fácil integrarse en un equipo, está asumiendo que en la empresa del OP usan uno de estos marcos populares, pero si no lo están, conocer cualquiera de los marcos no probaría nada. ¿Quizás quiso decir esta parte como una forma de probar su capacidad para trabajar con un marco en lugar de con esos marcos? (Punto en el caso: en la empresa para la que trabajo utilizamos un marco desarrollado internamente)
Purefan
2
@Petah Eso no tiene ningún sentido en absoluto, especialmente en la etapa de entrevista y evitaría trabajar en una empresa que le pide a la gente que revele información como esa durante la entrevista. Todo el razonamiento de "esconder algo" es perverso, en mi opinión, no me importa que mi empleador sepa cómo paso mi tiempo libre, y eso es todo. Si estoy interesado en publicitar mi cuenta de Programador por mi cuenta, esa es una historia diferente ...
yannis
1
@Petah Bueno, honestamente espero que los futuros empleadores no traten de conocer mi personalidad a través de mis actividades de Programadores (que querrían pasar del 25% al ​​35% de su tiempo con un mod nazi malvado);
yannis
1
No estoy de acuerdo con lo del marco. Una buena práctica moderna es utilizar componentes aplicables de marcos que usan el compositor que necesita en lugar de usar un marco completo. De hecho, lo mismo puede decirse en el mundo JS ahora también ...
John Hunt
44

La prueba a la que se vinculó es interesante, y la respuesta de Yannis Rizos es excelente, pero creo que lo que también es importante es esto:

Si necesita un buen desarrollador, no busque un desarrollador PHP. Busque un buen desarrollador que conozca PHP. Eso significa que al menos la mitad de la entrevista debe hacer preguntas que no tienen mucho que ver con la sintaxis PHP o las funciones PHP.

Pregúntele qué es MVC, qué es AJAX, cómo funciona HTTP, cómo funciona REST, cómo funcionan las uniones SQL, algunas estructuras de datos, algunos conceptos básicos de rendimiento (cómo mide, cómo mejora), conceptos básicos de pruebas, conceptos básicos de seguridad (XSS, XSRF, inyecciones, cómo defiende), conocimientos básicos de programación artesanal aplicados a dominios PHP típicos: web, redes, transformaciones de datos, etc.

Si es bueno en eso, proceda a pedirle que escriba un código simple, elija una tarea fácil que no debería llevar mucho tiempo, como encontrar palabras con la mayoría de las vocales en una fila en el texto, o invertir cada palabra en el texto, o multiplicar dos matrices También puede pedirle que implemente el Juego de la vida en PHP, si lo desea :)

Si pasa eso, entonces puede proceder a preguntas PHP más difíciles, pero no ponga demasiado peso en esto. Puede leer la mayor parte en el manual, y lo que no puede leer, aprenderá bastante rápido si es bueno. PHP está diseñado para ser simple, por lo que si es un buen programador y tiene algunos conocimientos prácticos de PHP, probablemente podrá ponerse al día. Si él sabe programar en general, entonces aprender a programar en PHP es más fácil que a la inversa: conocer los detalles de la sintaxis de PHP no es importante si no comprende para qué son las pruebas unitarias o cómo deshacerse de los problemas de XSS.

StasM
fuente
13

Si bien la respuesta de Yannis Rizos es buena, sé que no pasaría esa prueba y podría usar esa respuesta como un recurso para determinar dónde enfocarme para mejorar mis chops de PHP, creo que valdría la pena encontrar una programación amigo que sabe PHP para participar en el proceso de entrevista. Todas las preguntas en la respuesta anterior son buenas, pero sin algún conocimiento de dominio será difícil evaluar la calidad de las respuestas.

Dicho esto, dependiendo de lo que necesite, ya que otros han dicho que la facilidad de programación general y el ajuste del equipo son probablemente más importantes que el conocimiento específico del idioma.

cori
fuente
55
+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., gran sugerencia.
Yannis