io:format("Hello, World!~n", []).
Ask the right questions to secure the right Erlang 21 talent among an increasingly shrinking pool of talent.
**Erlang 21** is a general-purpose, concurrent, functional programming language designed at Ericsson in the 1980s. It is named after the Erlang Automatic Switching System, and was originally conceived as a replacement for it. Erlang is used in a wide variety of applications, including telecommunications, financial services, and web development. **Sources:** * [Erlang Wikipedia page](https://en.wikipedia.org/wiki/Erlang_(programming_language)) * [Erlang official website](https://www.erlang.org/)
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.
Functional programming is based on the concept of using functions and immutable data, whereas imperative programming involves giving a sequence of commands to change mutable data. Erlang is a functional language.
Pattern matching in Erlang is a powerful feature that allows a program to check for the presence of certain structures or values, and bind variables to parts of that structure. It is used in function clauses, case expressions, and when assigning values to variables.
Lists are dynamic and can grow and shrink at runtime, whereas tuples have a fixed size. Lists are used for sequences of variable length, and tuples are used to group a fixed number of items together.
Erlang has lightweight processes with very low context switch overhead, message-passing concurrency model, preemptive scheduling and robust error handling, which makes it a great fit for building concurrent and distributed systems.
Erlang is a functional, concurrent, general-purpose programming language and runtime system. It is designed for building robust, fault-tolerant, distributed, non-stop, real-time systems. Erlang has built-in support for concurrency, distribution and fault tolerance.
The field of software development is constantly evolving. If the candidate is aware of the latest developments in Erlang, this shows they are committed to keeping their skills up-to-date.
Problem-solving is a crucial skill for any developer. If the candidate has demonstrated this during the interview, it shows they can tackle complex issues and come up with effective solutions.
Past experience is often a good indicator of a candidate's ability. If they can provide examples of successful projects they have completed using Erlang, this shows they can effectively use the language in a practical setting.
Erlang is well-known for its concurrency and distributed computing features. A competent Erlang developer should have a deep understanding of these concepts and be able to apply them.
OTP is a set of Erlang libraries, which provides solutions for designing and implementing robust and scalable systems. A good Erlang developer should be familiar with OTP principles.
A proficient Erlang developer should be able to write and understand complex Erlang code. If they have shown this ability, it means they are comfortable with the language and can likely use it to solve complex problems.
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.
Erlang has built-in primitives for distributed programming. You can send messages to processes running on other nodes, and use distributed Erlang features like global name registration and distributed transactions.
Hot code loading is the ability to update a running system without stopping it. Erlang supports hot code loading, which is used to upgrade a live system without service interruption.
Both spawn and spawn_link are used to create a new process in Erlang. However, spawn_link links the new process to the current process, so that if either process terminates, the other one will also be terminated.
ETS (Erlang Term Storage) tables are in-memory storage that can be used to store large amounts of data in Erlang. They are used when you need to share state between processes or when you need fast access to data.
Erlang has a 'let it crash' philosophy for error handling. Rather than trying to catch every possible error, Erlang processes are allowed to crash and supervisors are used to restart them in a known good state when they fail.
At this stage, the candidate should demonstrate deep understanding of Erlang 21, proficiency in concurrent programming and fault-tolerant systems. They should also show good problem-solving skills. Red flags include difficulty explaining complex concepts, lack of real-world experience, or inability to write efficient code.
io:format("Hello, World!~n", []).
io:format("~p~n", [1 + 2 * 3]).
lists:map(fun(X) -> X * X end, [1, 2, 3, 4, 5]).
spawn(fun() -> io:format("Hello, World!~n", []) end).
-record(person, {name, age}).
John = #person{name="John", age=30}.
lists:foldl(fun(X, Sum) -> X * X + Sum end, 0, [1, 2, 3, 4, 5]).
The final few interview questions for a Erlang 21 candidate should typically focus on a combination of technical skills, personal goals, growth potential, team dynamics, and company culture.
BEAM is the virtual machine in which Erlang runs. It provides features like garbage collection, hot code loading, and preemptive scheduling, and allows Erlang code to be run on many different operating systems without modification.
A stateful server in Erlang can be implemented using the gen_server behavior from the OTP framework. The state is kept in the server process and can be updated through calls or casts.
In synchronous message passing, the sender waits for the receiver to consume the message. In asynchronous message passing, the sender does not wait and can continue its execution. Erlang uses asynchronous message passing.
Erlang provides several mechanisms to handle failures, including linking and monitoring of processes, 'let it crash' philosophy, and the OTP supervisor behavior for restarting processes when they fail.
OTP (Open Telecom Platform) is a framework that provides useful libraries and tools for building applications in Erlang. It includes a server template, a supervisor behavior, a generic finite state machine, and more.
Back-end App Developer
Front-end Web Developer
Full Stack Developer (Java)
Full Stack Developer (.Net)
Full Stack Developer (MEAN)
Full Stack Developer (MERN)
DevOps Engineer
Database Engineer (AzureSQL)
Database Engineer (Oracle)
Database Engineer (General)
Solution Architect (.NET)
Solution Architect (Java)
Solution Architect (Ruby)
Solution Architect (Python)
AI Engineer (Python)
Sr. AI Engineer (Python)
AI Strategist (Python)
Business Intelligence Engineer
Systems Analyst
Mainframe Developer (COBOL)
Mainframe Developer (General)