Hiring guide for Fortran Engineers

Fortran Developer Hiring Guide

Fortran, an acronym for "Formula Translation," is a high-level programming language developed by IBM in the 1950s, making it one of the oldest computer languages still in use today. It was designed for scientific and engineering computations due to its ability to handle complex numerical calculations. The language revolutionized software development and set a precedent for future programming languages like ALGOL and COBOL. Fortran's enduring relevance can be attributed to its continuous evolution, with the most recent version, Fortran 2018, released by ISO/IEC. Its historical significance and ongoing utility make it a cornerstone in the field of computer programming.

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

First 20 minutes

General Fortran app knowledge and experience

The first 20 minutes of the interview should seek to understand the candidate's general background in Fortran 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 Fortran?
You declare a variable in Fortran using the type keyword followed by the variable name. For example, 'integer :: var' declares an integer variable named var.
What are the different data types available in Fortran?
Fortran supports several data types including integer, real, complex, logical, and character.
How would you write a 'do' loop in Fortran?
A 'do' loop in Fortran is written as 'do i = 1, 10' followed by the code block and ended with 'end do'.
What is the purpose of the 'implicit none' statement in Fortran?
The 'implicit none' statement is used to force the programmer to explicitly declare all variables, helping to prevent errors due to misspelled variable names or incorrect assumptions about variable types.
Describe the difference between 'pass by value' and 'pass by reference' in Fortran.
In 'pass by value', a copy of the variable is passed into the subroutine or function, whereas in 'pass by reference', the actual variable itself is passed in. Changes to a 'pass by value' variable do not affect the original variable, while changes to a 'pass by reference' variable do.
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 possess strong knowledge of Fortran language and its various versions?
Is there evidence of problem-solving skills in the candidate's responses?
Have they demonstrated a deep understanding of numerical and computational algorithms?
Can the candidate communicate technical information clearly and effectively?

Next 20 minutes

Specific Fortran 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.

How would you handle an array in Fortran?
Arrays in Fortran are declared similarly to variables, but with dimensions specified. For example, 'integer, dimension(10) :: array' declares an integer array with 10 elements. Arrays can be manipulated as a whole or by individual elements.
What are the different types of loops available in Fortran?
Fortran supports several types of loops including 'do', 'do while', and 'do concurrent'.
How would you write a function in Fortran?
A function in Fortran is written using the 'function' keyword, followed by the function name, arguments, and return type. The function body contains the code to be executed, and the function ends with 'end function'.
Describe the difference between a function and a subroutine in Fortran.
A function in Fortran returns a value and can be used in an expression, while a subroutine does not return a value and is used for its side effects.
How would you handle file input/output in Fortran?
File input/output in Fortran is handled using the 'open', 'read', 'write', and 'close' statements. The 'open' statement is used to open a file, 'read' and 'write' are used to read from and write to the file, and 'close' is used to close the file.
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 Fortran engineer at this point.

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

What does the following Fortran code do?
program hello
print *, 'Hello, world!'
end program hello
This code prints the string 'Hello, world!' to the console.
What will be the output of the following Fortran code?
program calc
integer :: x = 5, y = 10
print *, x + y
end program calc
This code will output '15', which is the sum of the integers x and y.
What does the following Fortran code do?
program array
integer, dimension(5) :: arr = (/1, 2, 3, 4, 5/)
print *, arr
end program array
This code declares an array of 5 integers, assigns values to them, and then prints the entire array.
What does the following Fortran code do?
program threads
!$omp parallel do
integer :: i
integer, dimension(10) :: a = (/1, 2, 3, 4, 5, 6, 7, 8, 9, 10/)
do i = 1, 10
a(i) = a(i) * 2
end do
!$omp end parallel do
print *, a
end program threads
This code uses OpenMP to parallelize a loop that doubles the value of each element in an array. The result is printed to the console.

Wrap-up questions

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

What are the different types of conditional statements available in Fortran?
Fortran supports several types of conditional statements including 'if', 'if else', 'else if', and 'select case'.
How would you handle error handling in Fortran?
Error handling in Fortran is typically done using the 'error stop' statement, which stops the program and prints an error message.
Describe the difference between static and dynamic memory allocation in Fortran.
Static memory allocation is done at compile time and the memory size does not change during program execution, while dynamic memory allocation is done at runtime and the memory size can change as needed.

Fortran application related

Product Perfect's Fortran development capabilities

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