Ir al contenido
Prueba de codificación
Scala: software engineer interview questions

Scala developer skills

Prueba de codificación
Scala: software engineer interview questions

It can be incredibly difficult to find the right Scala developer. You have to search through mountains of resumes sent by candidates and recruiters to find the right one. But at the end of the day, it is hard to tell which of these potential candidates will be able to do the job and which are simply not right for your organization. To make your job a little easier, we’ve written this article to explain exactly what you need to do to find the right Scala developer.

1.  What you need to know about Scala to hire Scala developers

Scala (/ˈskɑːlɑː/ skah-lah) is a general-purpose programming language providing support for functional programming and a strong static type system The design of Scala started in 2001 at the École Polytechnique Fédérale de Lausanne (EPFL) by Martin Odersky. It followed on from work on Funnel, a programming language combining ideas from functional programming and Petri nets. Odersky formerly worked on Generic Java, and javac, Sun’s Java compiler.

Scala is mainly used in backend development in highly concurrent applications.

Key advantages of Scala:

  • Objects are immutable “by default” (e.g. all collections)
    It makes the language much less error-prone, particularly in relation to threads.
  • An advanced type system
    More types mean that Scala can perform more kinds of tasks than languages with more basic type systems,  like Java.
  • Functional, object-oriented, and imperative programming are all possible
    Different tasks require different styles of programming. While other languages only work with one or two programming styles, Scala works with all three. This means that a developer working in the Scala environment can perform more types of tasks without having to switch to a different programming environment.

2. What is important for IT Recruiter to know about Scala?

Above all else, there are three super important things that any technical recruiter should know when they are trying to fill a Scala developer position.

  1. Currently, Scala is the most popular functional programming language.  While it has a number of different applications, probably it’s most popular used right now is in Big Data.
  2.  Scala uses the same runtime environment as Java called the Java virtual machine. Because of this, it is completely interoperable with Java. That is a fancy way of saying that you can use Scala libraries for Java applications and Java libraries for Scala applications. This gives Scala developers have a huge advantage over other developers because they can access the incredibly large and diverse Java ecosystem.
  3.  The one thing that can put developers off Scala is that has more complicated syntax in languages like Java or C#. As a result, the learning curve can be particularly steep, meaning it can be difficult to find a qualified Scala developer.

(In March 2015, former VP of the Platform Engineering group at Twitter Raffi Krikorian, stated he would not have chosen Scala in 2011 due to its learning curve. The same month, LinkedIn SVP Kevin Scott stated their decision to “minimize dependence on Scala.” In November 2011, Yammer moved away from Scala for reasons that included the learning curve for new team members and incompatibility from one version of the Scala compiler to the next) Source: Wikipedia

When searching for Scala developers, you have to understand that you’re going to be looking for an elite who have been willing to overcome the barriers to entry that the language poses.

3. How to verify Scala skills in the screening phase

3.1. Technical screening of Scala skills based on the candidate’s resume

Before doing any type of broader technical screening it’s worthwhile to check out your development candidates interest in functional programming. This means how interested they are in learning new languages as well as functional languages like Haskell, F sharp, and OCam.

Scala glossary for tech recruiter

Scala frameworks and libraries Backend: Akka, Finagle

Big data: Spark, Scalding

Web: Play, Lift, Scalatra

Utils: Scalaz, Cats

Scala testing tools ScalaTest, Specs2
Scala build tools sbt (Simple Build Tool)

Relations between respective versions of Scala technology:

Mostly version 2.12 is used with a smaller contingent of developers using version 2.11. Version 3.0 is scheduled to be released in 2020. These major Scala versions aren’t binary compatible – you need to recompile all libraries, but minor versions (2.11.1, 2.11.2 etc.) are; all versions are source compatible.

The significance of a Scala certificate for assessing a Scala developer’s skills

There are a lot of courses available. Most popular ones are offered by Lightbend which also issues certificates. But a lot of people are doing the Coursera Scala track, which is developed by Scala Center.

Check out these courses as well:

While certificates can show some aptitude, there are many more factors which determine whether a candidate will be the right Scala developer for you.

3.2. Technical screening of Scala skills during a phone/video interview

Usually, after a resume screen, the next step in the hiring process is to have a phone or video interview with a candidate. The main advantage of this part of the process is to be able to ask preguntas sobre el comportamiento to see how your candidate would react in certain real-life situations. Often this is the main decider as to whether a candidate will be invited on site for a one-on-one technical interview so it’s important at this stage to ask the right technical questions.

Of course, these questions can vary depending on the types of skills that you are recruiting for. That said the questions here should be useful for filling any Scala developer position.

Q1: What is pattern matching?

Why you should ask this: It is important to know because Scala has a built-in general pattern-matching mechanism. This mechanism allows you to match it any sort of data with a first match policy.

Q2:  What are case classes?

Why you should ask this: Case classes are unique to Scala. They’re actually just regular classes that have a few extra conditions added to them. They are immutable by default, decomposable through pattern-matching, compared by structural equality instead of by reference, and succinct to instantiate and operate on.

Q3:  Which object-oriented patterns are implemented in Scala?

Why you should ask this: There are three main object-oriented patterns that a Scala developer should know. With Singleton, Scala provides direct realization of the Singleton pattern in the language. Value object patterns are possible by using Tuples, types, or case classes. Finally, in Scala, there’s a lazy keyword which offers lazy initialization

Q4:  What is a trait and is there any equivalent in Java?

Why you should ask this: Traits are similar to interfaces in Java and partially implemented.

In addition to the specific technical questions, there are a number of behavioral questions which will be helpful in determining how your candidate will act in certain situations.

Q5:  Which technologies have you had commercial experience within the past 2 years? What were your responsibilities? What was your biggest achievement?

Why you should ask this: Not all programming skills are created equal. Developers often have a wide variety of interests and have dabbled in a number of different Technologies but it is important to ascertain which they have a functional working knowledge of and which they simply have dabbled in. This question will also help show how will they have used the technology for commercial land.

Q6:  Which Java open source libraries do you consider to be valuable and why?

Why you should ask this: Mentioned before Scala is interoperable with Java. Since Java has many more libraries to draw on the effectiveness of your Scylla engine year will be depending on how many of these libraries they are familiar with. This question will give you insight into what libraries outside of Scala your candidate is familiar with and how they have used it in the past.

Q7: I’ve noticed you listed framework X on your CV. What’s your opinion of it? Is it a good choice?

Why you should ask this: The real value of a developer is not simply their knowledge of the language for their ability to execute a project efficiently. The best are familiar with A number of tools and resources that Multiply the scope of what they are able to Achieve. this question will get to the heart of how comfortable the developer is using these outside resources to supercharge their software development.

3.3. Technical screening of Scala skills with an online coding test

Phone screens can give you a lot of information as can a thorough scan of a candidate’s resume, but at the end of the day, you need to be able to determine what the coding skills are of your candidate. After all, none of the screening methods mentioned up until now and actually tell you whether your candidate can code or not. For that, you need a coding test.

There are a number of ways currently offered to do coding tests. They range from whiteboard interviews to algorithmic testing platforms. Unfortunately, most of these methods don’t give you the information you need to make an informed decision. Data structures and algorithms are the basic building blocks of software but at the same time, they have little to do with the day-to-day work of a software developer. It would be like asking a backhoe operator to dig a hole with a shovel. Technically you’re testing how well they can move dirt but what you really want to know is how well they can use the tools available to them to efficiently dig a giant hole within a tight deadline.

In the same way, you don’t want to waste time in your recruitment process testing basic skills. Instead, you want to see how a developer uses all of the tools and resources available to them to deliver efficient solutions on time. Probably the best way to do this is with a work sample test. We’ve discussed elsewhere on this blog how to make a work sample test but here are the main points you should take into consideration when giving a work sample test to a Scala developer.

  • You shouldn’t just test languages skills but also knowledge of the frameworks and libraries that your company uses
  • Instead of relying on multiple choice questions, focus instead on the programming tasks
  • Whenever possible, use a real task using your own codebase since it will give your candidate a taste of the kind of work they will be doing when they start working for you
  • Treat the test like a normal day at work. This means giving the candidate access to tall the libraries, frameworks, and general resources they would use on a normal day. You aren’t testing their ability to memorize facts. Instead, you want to know whether they can create an amazing solution

The main advantage of this type of platform is that tests are delivered automatically so the candidate can take the test out there later from anywhere in the world. Not only that the platform automatically evaluates the code quality as well as the power of the solution without any input from any technical staff on your end. It is an efficient way to get an effective read on how well your candidate can do the job and is incredibly convenient both for your staff and for the candidate. This means that fewer candidates fall out of your pipeline and fewer hours are wasted having your expensive developers work on recruiting.

Author – Adam Warski

photo of Adam Warski author of an article on the Scala developer Adam is the founder and CTO of SoftwareMill, an end to end developer of custom software using Scala, Akka, Java, and other languages and interesting technologies. A frequent blogger, speaker, and open source contributor, you can keep up with Adam on the SoftwareMill Blog. Concentrated in Poland, SoftwareMill builds innovative applications and rescues great projects, all while working in close partnership with their customers.

4. DevSkiller ready to use online Scala coding assessment

While DevSkiller gives you the option to use your own code base for testing developers, not every company has the time or resources to build their own work sample test. For those companies, there are DevSkiller’s pre-made Scala tests. Rather than dealing with abstract concepts, they all test your candidates by giving them a real-world task, the kind of tasks that they would encounter on their first day of work.

Akka
SENIOR
Habilidades probadas
Duración
102 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Preguntas de elección

evaluar los conocimientos de Scala, Programación funcional

Tarea de programación - Nivel: Difícil

Scala | Akka Streams | IoT Data Streaming - Define un agregador basado en tiempo para un flujo de datos de sensores IoT.

Scala
JUNIOR
Habilidades probadas
Duración
66 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Preguntas de elección

evaluar los conocimientos de Scala

Tarea de programación - Nivel: Fácil

Scala | Spark | ML Logs Transformer - Completa la implementación del pipeline de transformación de logs.

Scala
JUNIOR
Habilidades probadas
Duración
96 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Preguntas de elección

evaluar los conocimientos de Scala

Tarea de programación - Nivel: Fácil

Scala | ScalaCalc - librería matemática - Amplía la funcionalidad del módulo de geometría implementando operaciones con polígonos.

Scala
JUNIOR
Habilidades probadas
Duración
88 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Preguntas de elección

evaluar los conocimientos de Scala, Akka, Scala-Actores

Tarea de programación - Nivel: Medio

Scala | Headers parser | Prepara el parser simple de Scala.

Akka
MEDIO
Habilidades probadas
Duración
76 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Preguntas de elección

evaluar los conocimientos de Scala, Akka, Scala-Actores

Tarea de programación - Nivel: Medio

Scala | Akka | TCP Stream Messages - Implementar manejador de cliente para mensajes de flujo TCP, procesarlos y devolver el resultado al remitente y databaseSaverActor.

Fuente de la imagen: godatafy

Empieza con
DevSkiller hoy

Descubra cómo DevSkiller puede ayudarle a crecer.