Score %0 (0 correct0 incorrect20 unanswered)

Q1. El bytecode de Scala puede ejecutarse sobre la máquina virtual de Java. ¿Cuál es la diferencia fundamental entre object.clone() de Java y object.copy() de Scala?

  • Uno es un objeto de Java, el otro es un objeto de Scala.
  • clone() copiará las estructuras de clase pero no los datos, mientras que copy() también copiará los datos en nuevos objetos.
  • No hay diferencia.
  • copy() te permite cambiar los valores durante el proceso de copiado; clone() no lo hace.

Q2. ¿Qué valor devuelve este código?

val m1 = Map("a"->1,"b"->2,"c"->3)
m1("a")
  • a
  • 2
  • b
  • 1

Q3. ¿Cuál es una forma de evitar los detalles de la paralelización de bajo nivel?

  • monads
  • funciones literales
  • funciones parcialmente aplicadas
  • colecciones paralelas

Q4. ¿Qué se utiliza en ScalaTest para ver un diagrama detallado de mensajes de error cuando falla una prueba?

  • ArgumentExceptions
  • AssertionException
  • DiagrammedAssertions
  • JUnit

Q5. ¿Qué tipo de dato usarías para almacenar una colección inmutable de objetos que contienen un número fijo de tipos variables?

  • Array
  • ImmutableCollection
  • List
  • Tuple

Q6. Después de definir una función en el intérprete, Scala devuelve lo siguiente. ¿Qué indica el ()?

myfnc: ()Unit
  • La función no tiene efectos secundarios.
  • La función no toma parámetros.
  • La función no devuelve ningún valor.
  • Devolver tipos unitarios a la función es un cierre.

Q7. ¿Qué tipo de número es 1234.e5?

  • hexadecimal
  • short
  • punto flotante
  • largo

Q8. Cuando conviertes un mapa a una lista usando el método toList del mapa, ¿de qué tipo será el resultado?

  • List[(String, String)]
  • List[(Array, Array)]
  • List[(Collection, Collection)]
  • List

Q9. ¿Qué tipo de objeto crea este código?

val x = (1234, "Activo")
  • Lista
  • Mapa
  • Tupla
  • Array

Q10. ¿Cuál es una subclase de todas las clases?

  • AnyVal
  • AnyRef
  • Método
  • Null

Null en la biblioteca estándar de Scala. La pregunta está un poco incorrecta: Null es un subtipo de cada tipo excepto aquellos de las clases de valor

Q11. Para la construcción for-yield, ¿es el ámbito separado entre el cuerpo for y el cuerpo yield?

  • Sí y no. Es diferente dependiendo de la construcción for y lo que haga.
  • Sí, porque la sección for no expone su ámbito.
  • No, porque for-yield comparte el mismo ámbito, aunque están dentro de llaves separadas.
  • Sí, porque están dentro de llaves diferentes.

Ejemplo: yield-body tiene acceso a la variable e del cuerpo for

val a = Array(1, 2, 3, 4, 5)
for {
     e <- a if e > 2
} yield e

Q12. ¿Cuál es una forma de implementar coincidencias de patrones en métodos?

  • usando regex
  • usando monads
  • usando coincidencia de cadenas
  • usando clases case

Nota: pregunta ambigua, no está claro qué tipo de coincidencia de patrones se refiere aquí.

Q13. ¿Cuál es el valor de z después de ejecutar este código?

val y = List('a','b')
val z = y::List('c')
  • List(a,b,c)
  • List(List(a, b), c)
  • List(c,a,b)
  • List(c,List(a,b))

Q14. ¿Qué término se utiliza para especificar una precondición?

  • assert
  • require
  • precondición
  • mustHave

Q15. ¿Qué tipo de Scala puede lanzar una excepción o un valor calculado correctamente, y se utiliza comúnmente para atrapar y propagar errores?

  • scala.util.ExceptionHandling
  • scala.Catch.Throw
  • scala.exception.TryFinally
  • scala.util.Try

scala.util.Try

Q16. ¿Cuál es el tipo de datos de y después de que se ejecute este código?

val y = (math floor 3.1415 * 2)
  • short
  • double
  • int
  • bigInt

Q17. Cuando se utiliza la coincidencia de patrones, ¿qué carácter coincide con cualquier objeto?

  • %
  • _
  • ^
  • -

Coincidencia de Patrones

Q18. Has creado un array usando val. ¿Puedes cambiar el valor de algún elemento del array y por qué o por qué no?

  • Sí, la referencia al array es inmutable, por lo que la ubicación a la que apunta el array es inmutable. Los valores en el array son mutables.
  • El elemento 0 es inmutable y no se puede modificar. Todos los demás elementos pueden modificarse.
  • Sí, val no hace que los arrays sean inmutables.
  • No, val hace que el array y los valores del array sean inmutables.

Explicación:

val a1 = Array(1, 2, 3)
a1{1} = 3 // OK
a1 = Array(1, 3, 3) // error: reassignment to val

Q19. ¿Cuál es la salida de esta función?

def main () {
     var a = 0
     for

 (a<-1 until 5){println(a)}
  • 1,2,3,4,5
  • 0,1,2,3,4
  • 1,2,3,4
  • 2,3,4,5

Q20. ¿Cómo se llaman los objetos con estado inmutable?

  • singletons
  • objetos estacionarios
  • objetos funcionales
  • objetos fijos

Nota: los singletons pueden tener estado mutable