You are on page 1of 2

I have interviewed several candidates myself for PL/SQL developer role and I can

tell you what I would expect from them.

SQL expertise : I consider this as the highest metric for evaluation of any
database developer, simply because it takes practice and skill to craft any
procedural code that does database read/write operations as much as possible in
pure SQL. I have seen several PL/SQL codes written by java developers, which do
select * from table and then iterate over the records in a loop doing all the data
manipulation with so many for loops and if else conditions and hundreds of local
variables. Personally, I have found such codes of past programmers both hard to
read and troubleshoot when things go wrong, because it isn’t straightforward to set
breakpoints in PL/SQL, unlike in java.
Database Design concepts : Given a scenario, how to design a schema and the
required tables to efficiently normalise the data. When and why to create views for
data abstractions on underlying tables. Whether to have Indexes or Partitions on
tables and if so what type of them - on a specific column for a given data set.
Basic aggregate and analytic functions and how they work with null and non null
values - although simple, slightly tricky to answer in some cases like : outputs
(including error ) for SUM(column), SUM(1), SUM(*), COUNT(column), COUNT(NULL),
SUM(0),MAX(NULL), MIN(NULL) count(DISTINCT column) with various permutations,
with and without group by. These may appear simple, but I bet you, many experienced
candidates have found some of these hard to answer. Questions that require you to
efficiently use analytic functions like row_number() , dense_rank(), lead() lag() .
DATE arithmetic : This is one of the most highly misunderstood functionality,
especially by people who don’t know how DATE and TIMESTAMP datatypes works in
Oracle. Many systems today still horribly store dates as strings. I focus on best
practices for storing and performing date operations such as converting them to
characters, using NLS_* parameters, adding, subtracting, using them in queries,
aggregating (group by ) dates and times, finding ranges, using INTERVAL types and
functions, generating dates etc.
Manipulating data with refcursors : Especially to do bulk dmls , how to save
exceptions, skip exceptions or re-raise exceptions , how to write them efficiently
using backtrace utilities to simplify debugging.
Packages and their advantage, when to use them , scoping rules that apply on
package spec and package body on the declared variables, procedures.
Logging methods available using autonomous transactions, Triggers etc. I would
generally expect candidates to understand the disadvantages of using Triggers
because most of them tend to misuse it which causes it to break - for eg : mutating
table error
Dynamic SQL : How to properly use ( and not to abuse ) them. How to prevent SQL
injection using parameterising them using bind variables etc.
Performance tuning concepts : Here
I would mainly like to see if the candidate understands the concepts such as
EXPLAIN PLAN, TABLE/INDEX scans, HASH JOINS, NESTED LOOPS etc. But the focus is
mainly on what the candidates have worked on and how fluent they are in describing
a specific scenario in their experience where they had to tune a poorly performing
query.
Understanding of features like collection types, function PIPELINING, TABLE
functions, Pragmas, user defined exceptions, external table, scheduled jobs
processing, new features in Oracle 12c and so on.
One advice to interviewers : Don’t expect candidates to answer “without using”
questions like “without using group by” , “without using analytic functions” get me
this, get me that etc because it forces them to come up with queries that are
messier and inefficient and that’s not something we would want them to apply in
real time.
How do you transfer data from Microsoft SQL Server to MySQL?
How often do you backup a database? Describe the process you follow step-by-step.
What is the difference between T-SQL and PL/SQL?
How can you identify if a database server is running properly?
What’s the most effective way to store and access files in a database?

find 2nd largest salary in a table using SQL, and sharding

You might also like