Ada 95 Developer Hiring Guide

Hiring Guide for Ada 95 Engineers

Ask the right questions to secure the right Ada 95 talent among an increasingly shrinking pool of talent.

Ada 95 is a high-level, statically-typed computer programming language that was standardized by the International Organization for Standardization (ISO) in 1995. It evolved from Ada 83, under the auspices of the U.S Department of Defense to address software engineering needs across large systems. Named after Ada Lovelace, it is renowned for its strong typing, run-time checking and concurrency features which make it suitable for mission-critical applications such as avionics and defense systems. The language also supports object-oriented programming paradigms including encapsulation, inheritance and polymorphism. Its design principles emphasize readability over writeability leading to easier maintenance and fewer errors.

First 20 minutes

General Ada 95 knowledge and experience

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

Describe the difference between a function and a procedure in Ada 95.

In Ada 95, a function is a subprogram that returns a value, while a procedure is a subprogram that performs an action but does not return a value.

What is the purpose of the 'with' clause in Ada 95?

The 'with' clause in Ada 95 is used to import a package or a module into the current scope. It is similar to the 'import' statement in other programming languages.

How would you define a procedure in Ada 95?

A procedure in Ada 95 is defined using the 'procedure' keyword followed by the procedure name, parameters in parentheses, and 'is' keyword. The body of the procedure is enclosed in 'begin' and 'end' keywords.

What are the basic data types in Ada 95?

The basic data types in Ada 95 include Integer, Float, Character, Boolean, and Duration.

How would you declare a variable in Ada 95?

In Ada 95, a variable is declared using the following syntax: 'variable_name : type := initial_value;'. For example, 'count : Integer := 0;'.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What youre looking for early-on

Does the candidate have experience with version control systems like Git?

This is important for managing changes and collaborating on larger projects.

Has the candidate shown an ability to write clean and efficient code?

This is important for maintaining the readability and performance of the software.

Can the candidate work effectively in a team?

Software development often requires collaboration, so team skills are essential.

Is the candidate familiar with the standard Ada 95 library?

This is important as the library provides a variety of pre-written code that can be used to perform common tasks.

Has the candidate demonstrated problem-solving skills?

These skills are necessary for debugging and developing solutions within the Ada 95 language.

Does the candidate have a solid understanding of Ada 95's syntax and structure?

This is crucial as it forms the basis of any programming task they will be required to perform.

Next 20 minutes

Specific Ada 95 development questions

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

What is the purpose of the 'pragma' directive in Ada 95?

The 'pragma' directive in Ada 95 is used to provide additional information to the compiler, such as optimization options, warning suppression, or specific hardware instructions.

Describe the difference between 'in' and 'out' parameters in Ada 95.

'In' parameters in Ada 95 are used to pass values to a subprogram, while 'out' parameters are used to return values from a subprogram. 'In' parameters are read-only, while 'out' parameters are write-only.

How would you implement inheritance in Ada 95?

In Ada 95, inheritance is implemented using 'tagged' types. A new type is defined as a 'tagged' type and then it can inherit the properties and methods of another 'tagged' type.

What are the different types of loops in Ada 95?

Ada 95 supports several types of loops including 'while' loops, 'for' loops, and 'loop' (indefinite) loops.

How would you handle exceptions in Ada 95?

In Ada 95, exceptions are handled using the 'exception' keyword in a block of code. The 'when' keyword is used to specify the type of exception and the action to be taken.

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 Ada 95 engineer at this point.

At this point, a skilled Ada 95 engineer should demonstrate deep understanding of the language, experience with real-time and embedded systems, and strong problem-solving skills. Red flags would be lack of specific examples or difficulty explaining complex concepts.

Digging deeper

Code questions

These will help you see the candidate's real-world development capabilities with Ada 95.

What does the following Ada 95 code do?

with Ada.Text_IO; use Ada.Text_IO;
procedure Hello is
begin
  Put_Line ('Hello, world!');
end Hello;

This code prints 'Hello, world!' to the standard output.

What will be the output of the following Ada 95 code?

with Ada.Text_IO; use Ada.Text_IO;
procedure Print_Num is
  Num : Integer := 10;
begin
  Put_Line (Integer'Image(Num));
end Print_Num;

The output of this code will be '10'. It declares an integer Num, assigns it a value of 10, and then prints the value of Num to the standard output.

What does the following Ada 95 code do?

with Ada.Text_IO; use Ada.Text_IO;
procedure Array_Sum is
  type Int_Array is array (1 .. 5) of Integer;
  Arr : Int_Array := (1, 2, 3, 4, 5);
  Sum : Integer := 0;
begin
  for I in Arr'Range loop
    Sum := Sum + Arr(I);
  end loop;
  Put_Line (Integer'Image(Sum));
end Array_Sum;

This code calculates the sum of all elements in an array. It declares an array of integers with 5 elements, calculates the sum of these elements using a loop, and then prints the sum to the standard output.

What does the following Ada 95 code do?

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Real_Time; use Ada.Real_Time;
procedure Sleep is
begin
  delay 1.0;
  Put_Line ('Slept for 1 second');
end Sleep;

This code makes the program sleep or delay for 1 second, and then prints 'Slept for 1 second' to the standard output.

What does the following Ada 95 code do?

with Ada.Text_IO; use Ada.Text_IO;
procedure Object_Oriented is
  type Base_Type is tagged null record;
  procedure Print (Obj : Base_Type) is
  begin
    Put_Line ('Base_Type object');
  end Print;
  Obj : Base_Type;
begin
  Print (Obj);
end Object_Oriented;

This code defines a tagged type (similar to a class in other languages) named Base_Type with a procedure named Print. It then creates an object of Base_Type and calls the Print procedure on this object, which prints 'Base_Type object' to the standard output.

What will be the output of the following Ada 95 code?

with Ada.Text_IO; use Ada.Text_IO;
procedure Advanced is
  type Int is range 1 .. 10;
  function Is_Even (I : Int) return Boolean is
  begin
    return I mod 2 = 0;
  end Is_Even;
  I : Int := 5;
begin
  if Is_Even (I) then
    Put_Line ('Even');
  else
    Put_Line ('Odd');
  end if;
end Advanced;

The output of this code will be 'Odd'. It defines a function Is_Even that checks if a number is even. It then declares an integer I with a value of 5, checks if I is even using the Is_Even function, and prints 'Even' if I is even and 'Odd' if I is not.

Wrap-up questions

Final candidate for Ada 95 role questions

The final few interview questions for a Ada 95 candidate should typically focus on a combination of technical skills, personal goals, growth potential, team dynamics, and company culture.

What are the different types of exception propagation in Ada 95?

Ada 95 supports two types of exception propagation: 'propagation by failure' where an exception is propagated to the caller if a subprogram fails, and 'propagation by choice' where an exception is explicitly propagated using the 'raise' statement.

How would you implement multitasking in Ada 95?

Multitasking in Ada 95 is implemented using tasks. A task is a concurrent thread of execution that can be synchronized with other tasks using 'entry' and 'accept' statements.

Describe the difference between 'limited' and 'private' types in Ada 95.

'Limited' types in Ada 95 are types that do not support assignment or equality operations, while 'private' types are types whose full definition is hidden from the client code.

What are the different types of access types in Ada 95?

Ada 95 supports two types of access types: 'access all' for general access and 'access constant' for read-only access.

How would you create a generic package in Ada 95?

A generic package in Ada 95 is created using the 'generic' keyword followed by the package specification. The package body is then defined in a similar way to a regular package.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

Ada 95 application related

Product Perfect's Ada 95 development capabilities

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