¿Cuáles son las preguntas para evaluar el conocimiento de un programador sobre SQL? [cerrado]

14

¿Cuáles son las preguntas para evaluar el conocimiento de un programador sobre SQL? ¿Cuál es la respuesta a la pregunta? ¿Y qué significaría la falta de una respuesta correcta en términos de tiempo que probablemente comprenda los conceptos relacionados con la pregunta?

GOOGLED: desafío sql

errores
fuente
2
Definitivamente, daría un ejemplo real en vivo y pediría escribir una consulta compleja. Por ejemplo, solicite seleccionar el mes más rentable para cada uno de los últimos 10 años, si tiene la tabla de compras. PERO ya que también hace preguntas y respuestas, eso probablemente significa que no es experto y no puede juzgar. En este caso, puede probar algún servicio de prueba de terceros, al menos como filtro inicial antes de la entrevista. Sugeriría tests4geeks.com . Tienen prueba de SQL.
Dhaval Patel

Respuestas:

20

Depende de lo difícil que quieras que sea. Además, soy un poco cauteloso de darle la respuesta porque la mayoría de los problemas de SQL tienen múltiples formas aceptables de hacer las cosas y también hay formas de resolver problemas de SQL de manera descuidada que causarán otros problemas. La persona que "califica" la respuesta definitivamente necesita poder resolverla por sí misma.

Dicho esto, aquí hay algunos que se me ocurrieron en la parte superior de mi cabeza.

Nivel extremadamente fácil:
dada una tabla de empleados con las columnas EmpID, FirstName, Lastname, HireDate y TerminationDate:
escriba una consulta para devolver a todos los empleados que aún trabajan para la empresa con apellidos que comienzan con "Smith" ordenados por apellido y luego nombre.

Nivel fácil
Dada la tabla de empleados anterior, más una nueva tabla "Revisiones anuales" con las columnas EmpID y ReviewDate:
escriba una consulta para devolver a todos los empleados que nunca tuvieron una revisión ordenada por HireDate.

Nivel medio Teniendo en cuenta la tabla de empleados anterior, ¿escribe una consulta para calcular la diferencia (en días) entre el empleado más y menos ocupado que aún trabaja para la empresa?

Nivel difícil
Dada la tabla de empleados anterior, escriba una consulta para calcular el período más largo (en días) que la compañía ha pasado sin contratar o despedir a nadie.

Nivel
más difícil Nuevamente, utilizando las mismas tablas, escriba una consulta que devuelva a cada empleado y para cada fila / empleado incluya la mayor cantidad de empleados que trabajaron para la compañía en cualquier momento durante su mandato y la primera fecha en que se alcanzó el máximo. Puntos extra por no usar cursores.

JohnFx
fuente
Bonito, responda, me gusta mucho la evolución de las preguntas. ¿Por qué la persona que hace las preguntas necesita poder responderlas? ¿Por qué no simplemente escribir pruebas unitarias basadas en resultados y tiempo de ejecución? Además, ¿cuál diría que es el número de semanas conectivas de dominio progresivo de los conceptos de SQL que le tomaría al programador promedio alcanzar el nivel más difícil dado por usted? ¿Creería usted también que un programador capaz de responder la pregunta más difícil que usted pudiera abordar de manera efectiva una gran mayoría de las tareas relacionadas con SQL?
errores del
3
La razón por la que quisiera que el autor de la pregunta (o al menos el "calificador") pueda responderlas es que el enfoque puede decirle tanto como el resultado. También me preocupa que un entrevistador no técnico tenga una respuesta preescrita y no acepte otras respuestas potencialmente correctas (la tarjeta dice "Moop").
JohnFx
En cuanto a si estas preguntas demuestran la capacidad de abordar una gran mayoría de las tareas relacionadas con SQL. Si su trabajo será escribir consultas, probablemente sea así. Si espera que administren un servidor de base de datos, deberá hacer preguntas específicas al respecto.
JohnFx
Gracias por las aclaraciones, el entrevistador no técnico en este caso no sería una persona, sino un sistema, de ahí la prueba de la unidad y el tiempo de ejecución. Claramente, los sistemas no escriben ni leen código, los humanos sí, pero hay tantos programadores en el mundo, y la necesidad en mi opinión de tenerlos en el sitio es, en el mejor de los casos, limitada. Adivina si una persona falló la prueba, pero pensó que tenía razón, siempre podría marcarla como correcta.
errores el
Y sí, el objetivo de las preguntas sería un programador, no un administrador de base de datos.
errores el
4

Por lo general, solo me siento en entrevistas para especialistas en datos, por lo que mis preguntas tienden a ser difíciles. Pero una cosa que requeriría de cualquiera que escriba SQL es el conocimiento de las combinaciones y cuándo usar una combinación izquierda versus una combinación interna. Cualquiera que no entienda que no tiene ningún negocio consultar una base de datos de ninguna manera o forma.

Otra cosa que haría es asegurarme de que entiendan cómo hacer un GROUP BY y usar las funciones de Agregado.

Y la diferencia entre UNION y UNION ALL ha eliminado a muchos candidatos pobres en mi trabajo.

HLGEM
fuente
2

Preguntaría "¿Por qué y cómo debe desinfectar los valores de entrada proporcionados por el usuario que se utilizarán en una consulta SQL?"

Esto es necesario para evitar que las inyecciones SQL, y ser capaz de responder a esta requiere un buen conocimiento de la sintaxis SQL y comandos (tales como SELECT, UPDATE, DROP, DELETE, etc.), así cómo los puede evitarse mediante el uso de los comentarios de SQL para romper una consulta y inyecte lo que el usuario maligno pueda desear hacer.

gablin
fuente
1
¿No es la respuesta: nunca desinfectar entradas, utilizar una declaración preparada?
Kevin Cline
@Emmad Kareem, cualquiera que no pueda responder eso no debería estar escribiendo SQL.
HLGEM
@gablin, realmente no veo por qué es así. ¿Podrías explicar un poco? ¿Cuántos libros de SQL discuten este tema?
NoChance
2

Participé en el desarrollo de una prueba técnica para programadores de bases de datos. Las preguntas fueron lo que considero bastante básico: escribir las declaraciones CREATE TABLE para una estructura de tabla dada; hacer algunas consultas simples; etc.

La mayoría de los solicitantes de empleo que se hacían llamar expertos en SQL rechazaron la prueba. Uno dijo que aunque había sido desarrollador de SQL durante muchos años, nunca había escrito una declaración CREATE TABLE porque la GUI lo hizo por él.

Hemos tenido experiencias similares con otras pruebas técnicas. Para el personal de soporte de Windows, las tareas son similares a "crear un usuario de dominio", "agregar una impresora", "cambiar permisos en un archivo". La mayoría de las personas no pueden hacer esas tareas, especialmente bajo presión. Creemos que si puede hacer incluso las cosas simples, probablemente sea bastante competente.

Barry Brown
fuente
1
Me temo que estoy del lado del desarrollador que usa la GUI. Puede pasar toda una carrera sin escribir regularmente scripts CREATE TABLE. Muchas personas desarrollan modelos de datos en herramientas CASE que generan automáticamente el DDL por usted. En general, me asusto de las pruebas que se basan principalmente en la memorización de la sintaxis, a favor de aquellos que ensayan una comprensión más amplia de las cuestiones planteadas
cjmUK
+1 @Barry Brown: Estoy de acuerdo, y es un punto interesante.
errores el
0

Si prefiere hacer más preguntas abiertas: Haga preguntas generales sobre los tipos de datos DATE, DATETIME ... Pregunte sobre las diferencias entre las diferentes implementaciones / productos de proveedores. Hable sobre herramientas de línea de comandos, cargadores a granel, impresoras bonitas ... tal vez pueda aprender un nuevo truco durante la entrevista.

knb
fuente