Score %0 (0 correct0 incorrect20 unanswered)

Q1. Il bytecode di Scala può essere eseguito sopra a Java VM. Qual è la differenza fondamentale tra Java object.clone() e Scala object.copy()?

  • Uno è un oggetto Java, l'altro è un oggetto Scala.
  • clone() copierà le strutture di classe ma non i dati, mentre copy() copierà anche i dati in nuovi oggetti.
  • Non c'è differenza.
  • copy() ti permette di cambiare i valori durante il processo di copia; clone() no.

Q2. Quale valore restituisce questo codice?

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

Q3. Qual è un modo per evitare dettagli di parallelizzazione a basso livello?

  • monadi
  • funzioni letterali
  • funzioni parzialmente applicate
  • collezioni parallele

Q4. Cosa usi in ScalaTest per vedere un diagramma dettagliato dei messaggi di errore quando un test fallisce?

  • ArgumentExceptions
  • AssertionException
  • DiagrammedAssertions
  • JUnit

Q5. Che tipo di dati useresti per memorizzare una collezione immutabile di oggetti che contiene un numero fisso di tipi variabili?

  • Array
  • ImmutableCollection
  • Lista
  • Tuple

Q6. Dopo aver definito una funzione nell'interprete, Scala restituisce quanto segue. Cosa indica il ()?

myfnc: ()Unit
  • La funzione non ha effetti collaterali.
  • La funzione non accetta parametri.
  • La funzione non restituisce alcun valore.
  • Restituire tipi di unità alla funzione è una chiusura.

Q7. Che tipo di numero è 1234.e5?

  • esadecimale
  • corto
  • virgola mobile
  • lungo

Q8. Quando converti una mappa in una lista usando il metodo toList della mappa, il risultato sarà di che tipo?

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

Q9. Che tipo di oggetto crea questo codice?

val x = (1234, "Attivo")
  • Lista
  • Mappa
  • Tuple
  • Array

Q10. Qual è una sottoclasse di tutte le classi?

  • AnyVal
  • AnyRef
  • Metodo
  • Null

Null nella libreria standard di Scala. La domanda è un po' scorretta - Null è un sottotipo di ogni tipo eccetto quelli delle classi di valore

Q11. Per la costruzione for-yield, lo scope è separato tra corpo for e corpo yield?

  • Sì e no. È diverso a seconda della costruzione for e di ciò che fa.
  • Sì, perché la sezione for non espone il suo scope.
  • No, perché for-yield condivide lo stesso scope, anche se sono all'interno di parentesi graffe separate.
  • Sì, perché sono all'interno di parentesi graffe diverse.

Esempio: il corpo yield ha accesso alla variabile e dal corpo for

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

Q12. Qual è un modo per implementare il pattern matching sui metodi?

  • usando regex
  • usando monadi
  • usando la corrispondenza di stringhe
  • usando le classi case

Nota: domanda ambigua, non è chiaro quale tipo di pattern matching sia inteso qui.

Q13. Qual è il valore di z dopo l'esecuzione di questo codice?

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. Quale termine si usa per specificare una precondizione?

  • assert
  • require
  • precondizione
  • mustHave

Q15. Quale tipo Scala può lanciare un'eccezione o un valore calcolato con successo, ed è comunemente usato per catturare e propagare gli errori?

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

scala.util.Try

Q16. Qual è il tipo di dati di y dopo l'esecuzione di questo codice?

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

Q17. Quando si utilizza il pattern matching, quale carattere corrisponde a qualsiasi oggetto?

  • %
  • _
  • ^
  • -

Pattern Matching

Q18. Hai creato un array usando val. Puoi cambiare il valore di qualsiasi elemento dell'array—perché sì o perché no?

  • Sì, il riferimento all'array è immutabile, quindi la posizione a cui punta l'array è immutabile. I valori nell'array sono mutabili.
  • Il 0-esimo elemento è immutabile e non può essere modificato. Tutti gli altri elementi possono essere modificati.
  • Sì, val non rende gli array immutabili.
  • No, val rende l'array e i valori dell'array immutabili.

Spiegazione:

val a1 = Array(1, 2, 3)


a1{1} = 3 // OK
a1 = Array(1, 3, 3) // errore: riassegnazione a val

Q19. Qual è l'output di questa funzione?

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. Come chiami gli oggetti con stato immutabile?

  • singleton
  • oggetti stazionari
  • oggetti funzionali
  • oggetti fissi

Nota: i singleton possono avere stato mutabile