Hiring guide for PL/C Engineers

PL/C Developer Hiring Guide

PL/C is a derivative of the PL/I programming language, developed by IBM in the late 1960s as an instructional tool for teaching computer programming. It was designed at Cornell University primarily for student use, with error detection and recovery its main features. Unlike other languages, PL/C was created to provide detailed feedback on errors rather than simply halting program execution. Over time, it became widely used in academic settings due to its robust debugging capabilities. The development and usage of PL/C significantly contributed to the evolution of computer science education (Sources: "The History of Language Processor Technology in IBM", IBM Journal; "PL/I for Programmers", E.V. Codd).

Ask the right questions secure the right PL/C talent among an increasingly shrinking pool of talent.

First 20 minutes

General PL/C app knowledge and experience

The first 20 minutes of the interview should seek to understand the candidate's general background in PL/C application development, including their experience with various programming languages, databases, and their approach to designing scalable and maintainable systems.

How would you declare a variable in PL/C?
You would declare a variable in PL/C by specifying its type followed by the variable name. For example, 'int myVariable;' declares an integer variable named myVariable.
What are the different types of loops in PL/C?
The different types of loops in PL/C are the 'for' loop, the 'while' loop, and the 'do while' loop.
Describe the difference between a 'for' loop and a 'while' loop in PL/C.
A 'for' loop is used when you know the exact number of times a block of code should be executed. A 'while' loop is used when a condition is to be checked before each iteration of the loop.
How would you handle exceptions in PL/C?
In PL/C, exceptions are handled using the 'WHENEVER' statement. It allows the program to continue or stop based on the type of SQLCODE returned.
What are the different types of cursors in PL/C?
In PL/C, there are two types of cursors: implicit cursors and explicit cursors. Implicit cursors are automatically created by Oracle for all DML and PL/SQL SELECT statements. Explicit cursors are programmer-defined cursors for gaining more control over the context area.
The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What you’re looking for early on

Does the candidate show a strong understanding of PL/C syntax and structure?
Have they demonstrated problem-solving skills during the interview?
Can the candidate communicate their thoughts and ideas clearly?
Has the candidate shown a good understanding of database concepts?

Next 20 minutes

Specific PL/C development questions

The next 20 minutes of the interview should focus on the candidate's expertise with specific backend frameworks, their understanding of RESTful APIs, and their experience in handling data storage and retrieval efficiently.

Describe the difference between an implicit cursor and an explicit cursor in PL/C.
Implicit cursors are automatically created by Oracle for DML and SELECT statements, and they require less coding. Explicit cursors are defined by programmers when the query returns more than one row, giving more control over the context area.
How would you write a function in PL/C?
A function in PL/C is written by first declaring it with the 'FUNCTION' keyword, followed by the function name, parameters if any, return type, and then the function body enclosed in 'BEGIN' and 'END' blocks.
What are the different types of triggers in PL/C?
In PL/C, there are three types of triggers: row triggers, statement triggers, and instead of triggers.
Describe the difference between a row trigger and a statement trigger in PL/C.
A row trigger is fired each time a row gets affected in a DML operation. A statement trigger is fired once irrespective of the number of rows affected in a DML operation.
How would you create a package in PL/C?
A package in PL/C is created using the 'CREATE PACKAGE' statement. It contains the specification and body of the package, which includes procedures, functions, variables, and constants.
The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

The ideal back-end app developer

What you’re looking to see on the PL/C engineer at this point.

At this point, a skilled PL/C engineer should demonstrate strong problem-solving abilities, proficiency in PL/C programming language, and knowledge of software development methodologies. Red flags include lack of hands-on experience, inability to articulate complex concepts, or unfamiliarity with standard coding practices.

Digging deeper

Code questions

These will help you see the candidate's real-world development capabilities with PL/C.

What does the following PL/C code do?
EXEC SQL SELECT COUNT(*) INTO :count FROM employees;
This code counts the number of rows in the 'employees' table and stores the result in a host variable named 'count'.
What will be the output of the following PL/C code?
EXEC SQL SELECT name INTO :name FROM employees WHERE id = 1;
This code fetches the 'name' of the employee whose 'id' is 1 from the 'employees' table and stores it in a host variable named 'name'. If no such employee exists, the variable 'name' would be null.
What does the following PL/C code do?
EXEC SQL DECLARE CURSOR emp_cursor FOR SELECT * FROM employees; EXEC SQL FETCH NEXT FROM emp_cursor INTO :emp_rec;
This code declares a cursor 'emp_cursor' for the query that selects all records from the 'employees' table. Then it fetches the next record from the cursor into the host record 'emp_rec'.
What will be the output of the following PL/C code snippet?
EXEC SQL BEGIN DECLARE SECTION; int emp_id; char emp_name[30]; EXEC SQL END DECLARE SECTION; EXEC SQL SELECT id, name INTO :emp_id, :emp_name FROM employees WHERE id = 1;
The code declares a section where host variables 'emp_id' and 'emp_name' are defined. Then it fetches 'id' and 'name' of the employee with 'id' 1 from the 'employees' table into these variables. If no such employee exists, 'emp_id' would be null and 'emp_name' would be an empty string.

Wrap-up questions

Final candidate for PL/C Developer role questions

The final few questions should evaluate the candidate's teamwork, communication, and problem-solving skills. Additionally, assess their knowledge of microservices architecture, serverless computing, and how they handle PL/C application deployments. Inquire about their experience in handling system failures and their approach to debugging and troubleshooting.

What are the different types of collections in PL/C?
In PL/C, there are three types of collections: Associative arrays, Nested tables, and Varrays.
Describe the difference between an associative array and a nested table in PL/C.
An associative array holds a set of key-value pairs, and the keys are unique. A nested table is a table within a table, and it can hold multiple rows, which can also be tables.
How would you implement error logging in PL/C?
Error logging in PL/C can be implemented using the 'EXCEPTION' block where you can define handlers for different exceptions. You can write the error information to a log table in the exception handler.

PL/C application related

Product Perfect's PL/C development capabilities

Beyond hiring for your PL/C engineering team, you may be in the market for additional help. Product Perfect provides seasoned expertise in PL/C projects, and can engage in multiple capacities.