Yo mismo entrevisté a varios candidatos para el rol de desarrollador PL / SQL y puedo decirle qué esperaría de ellos.
- Experiencia en SQL : considero que esta es la métrica más alta para la evaluación de cualquier desarrollador de bases de datos, simplemente porque se necesita práctica y habilidad para elaborar cualquier código de procedimiento que realice las operaciones de lectura / escritura de la base de datos tanto como sea posible en SQL puro. He visto varios códigos PL / SQL escritos por desarrolladores de Java, que
select * from table
y luego iteran sobre los registros en un bucle haciendo toda la manipulación de datos con tantos for loops
y if else
condiciones y cientos de variables locales. Personalmente, he encontrado que tales códigos de programadores anteriores son difíciles de leer y solucionar problemas cuando las cosas salen mal, porque no es sencillo establecer puntos de interrupción en PL / SQL, a diferencia de Java.
- Conceptos de diseño de base de datos : dado un escenario, cómo diseñar un esquema y las tablas requeridas para normalizar eficientemente los datos. Cuándo y por qué crear vistas para abstracciones de datos en tablas subyacentes. Si debe tener índices o particiones en las tablas y, de ser así, qué tipo de ellas, en una columna específica para un conjunto de datos dado.
- Funciones analíticas y agregadas básicas y cómo funcionan con valores
null
y no null
, aunque simples, un poco difíciles de responder en algunos casos como: salidas (incluyendo error) para SUM(column), SUM(1), SUM(*), COUNT(column), COUNT(NULL), SUM(0),MAX(NULL), MIN(NULL) count(DISTINCT column)
con varias permutaciones, con y sin group by
. Esto puede parecer simple, pero apuesto a que muchos candidatos experimentados han encontrado algunos de estos difíciles de responder. Preguntas que requieren el uso eficiente de funciones analíticas como row_number()
, dense_rank()
, lead()
lag()
.
- Aritmética DATE : esta es una de las funciones más incomprendidas, especialmente por personas que no saben cómo funcionan los tipos de datos
DATE
y TIMESTAMP
en Oracle. Muchos sistemas hoy todavía almacenan horriblemente las fechas como cadenas. Me concentro en las mejores prácticas para almacenar y realizar operaciones de fechas, como convertirlas en caracteres, usar parámetros NLS_*
, sumar, restar, usarlos en consultas, agregar ( group by
) fechas y horas, encontrar rangos, usar tipos y funciones de INTERVAL
, generando fechas etc.
- Manipulación de datos con refluctores : especialmente para hacer dmls masivos, cómo guardar excepciones, omitir excepciones o volver a generar excepciones, cómo escribirlos de manera eficiente utilizando utilidades de rastreo para simplificar la depuración.
- Paquetes y su ventaja, cuándo usarlos, reglas de alcance que se aplican en las especificaciones del paquete y el cuerpo del paquete en las variables declaradas, procedimientos.
- Métodos de registro disponibles mediante transacciones autónomas, activadores, etc. Generalmente, esperaría que los candidatos comprendan las desventajas de utilizar activadores porque la mayoría de ellos tienden a usarlo incorrectamente, lo que hace que se rompa, por ejemplo: error de tabla de mutaciones
- SQL dinámico : cómo usarlos adecuadamente (y no abusar de ellos). Cómo evitar la inyección de SQL mediante la parametrización mediante variables de enlace, etc.
- Conceptos de ajuste de rendimiento : aquí
Principalmente me gustaría ver si el candidato comprende los conceptos tales como EXPLAIN PLAN, TABLE/INDEX scans, HASH JOINS, NESTED LOOPS etc.
escenario en su experiencia donde tuvieron que ajustar una consulta de bajo rendimiento.
- Comprensión de características como tipos de colección , función PIPELINING , funciones
TABLE
, Pragmas, excepciones definidas por el usuario, tabla externa, procesamiento de trabajos programados, nuevas características en Oracle 12c, etc.
Un consejo para los entrevistadores: no espere que los candidatos respondan “sin usar” preguntas como “sin usar agrupar por”, “sin usar funciones analíticas”, háganme esto, háganme eso, etc. porque los obliga a hacer preguntas que son desordenado e ineficiente y eso no es algo que quisiéramos que apliquen en tiempo real.