Hiring guide for X++ Engineers

X++ Developer Hiring Guide

X++ is a high-level, object-oriented programming language developed by Microsoft. It is a part of Microsoft's Dynamics AX, an enterprise resource planning (ERP) software solution for managing business operations. X++ shares similarities with C++, but it also includes features from SQL to support database operations. X++ offers unique capabilities like implicit transaction integrity, array indexes starting at 1 instead of 0 and built-in support for optimistic concurrency control. This makes it particularly suitable for creating business applications that require complex transactions and manipulations of data records. It has integrated development environment tools provided by MorphX and supports both client-side and server-side programming models. The language also works closely with Application Object Tree (AOT), which contains all application elements such as classes, tables, forms etc., used in the development process within Dynamics AX system.

Ask the right questions secure the right X++ talent among an increasingly shrinking pool of talent.

First 20 minutes

General X++ app knowledge and experience

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

How would you define X++?
X++ is a programming language from Microsoft that is used in the MorphX development environment and the Microsoft Dynamics AX, a business solution from Microsoft.
What are the basic data types in X++?
The basic data types in X++ include int, real, str, date, enum, guid, container, and anytype.
Describe the difference between a while select and a select statement in X++.
A while select statement is used when you need to fetch multiple records and perform operations on each record. On the other hand, a select statement is used when you only need to fetch a single record.
How would you create a table in X++?
In X++, tables are created in the Application Object Tree (AOT). You would right-click on the Tables node, select New Table, and then define the table properties and fields.
What are the different types of joins in X++ and how are they used?
X++ supports three types of joins: Inner join, Outer join, and Exists join. Inner join returns records where there is a match in both tables. Outer join returns all records from one table and the matched records from another table. Exists join checks the existence of a record in a table.
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 have a solid understanding of X++ language?
Has the candidate demonstrated problem-solving skills?
Is the candidate able to communicate effectively?
Does the candidate have experience with other relevant technologies?

Next 20 minutes

Specific X++ 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 a container and an array in X++.
A container in X++ is a dynamic array that can hold data of different types, whereas an array is a static collection that can hold data of a single type.
How would you handle exceptions in X++?
Exceptions in X++ are handled using the try, catch, and throw statements. The try block encloses the code that might throw an exception, the catch block is used to handle the exception, and the throw statement is used to raise an exception.
What are the different types of classes in X++?
There are three types of classes in X++: System classes, Application classes, and Table classes. System classes provide system functionality, Application classes are used to implement business logic, and Table classes represent tables in the database.
Describe the difference between a map and a dictionary in X++.
A map in X++ is a collection of key-value pairs where the keys are unique, whereas a dictionary is a collection of key-value pairs where the keys can be duplicated.
How would you implement multithreading in X++?
Multithreading in X++ is implemented using the Thread class. You would create an instance of the Thread class, set the method to be executed in the thread, and then start the thread.
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 X++ engineer at this point.

At this point, a skilled X++ engineer should demonstrate strong problem-solving abilities, proficiency in X++ 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 X++.

What does the following X++ code do?
int i = 1;
while (i <= 5)
{
print i;
i++;
}
The code prints the numbers 1 through 5. It uses a while loop to repeatedly print the value of 'i', and increment 'i' by 1, as long as 'i' is less than or equal to 5.
What will be the output of the following X++ code?
int i = 1;
int j = 2;
int k = i + j;
print k;
The output of the code will be '3'. The code adds the values of 'i' and 'j' and assigns the result to 'k', which is then printed.
What does the following X++ code do?
List list = new List(Types::Integer);
list.addEnd(1);
list.addEnd(2);
list.addEnd(3);
print list.elements();
The code creates a list of integers and adds the numbers 1, 2, and 3 to the end of the list. It then prints the number of elements in the list, which will be '3'.
What does the following X++ code do?
ttsBegin;
CustTable custTable;
custTable = CustTable::find('1001');
custTable.CreditMax = 2000;
custTable.update();
ttsCommit;
The code starts a transaction, finds a customer record with the ID '1001', changes the 'CreditMax' field of that record to 2000, updates the record in the database, and then commits the transaction.

Wrap-up questions

Final candidate for X++ 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 X++ application deployments. Inquire about their experience in handling system failures and their approach to debugging and troubleshooting.

What are the different types of transactions in X++ and how are they used?
X++ supports three types of transactions: Implicit, Explicit, and Database transactions. Implicit transactions are automatically started and committed by the system. Explicit transactions are manually started and committed by the developer. Database transactions are used to perform operations on the database.
Describe the difference between a set and a list in X++.
A set in X++ is a collection of unique elements, whereas a list is a collection of elements that can be duplicated.
How would you implement inheritance in X++?
Inheritance in X++ is implemented by defining a class that extends another class. The subclass inherits all the public and protected methods and variables of the superclass.

X++ application related

Product Perfect's X++ development capabilities

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