Q1. Scala-Bytecode kann auf Java-VM ausgeführt werden. Was ist der grundlegende Unterschied zwischen Java object.clone() und Scala object.copy()?
Eins ist ein Java-Objekt, das andere ist ein Scala-Objekt.
clone() kopiert Klassenstrukturen, aber nicht die Daten, während copy() auch Daten in neue Objekte kopiert.
Es gibt keinen Unterschied.
copy() ermöglicht es Ihnen, Werte während des Kopiervorgangs zu ändern; clone() nicht.
Q2. Welchen Wert gibt dieser Code zurück?
val m1 = Map("a"->1,"b"->2,"c"->3)
m1("a")
a
2
b
1
Q3. Wie kann man Low-Level-Parallelisierungsdetails vermeiden?
Monaden
Literal-Funktionen
Teilweise angewandte Funktionen
Parallele Sammlungen
Q4. Was verwendet man in ScalaTest, um ein detailliertes Diagramm von Fehlermeldungen zu sehen, wenn ein Test fehlschlägt?
ArgumentExceptions
AssertionException
DiagrammedAssertions
JUnit
Q5. Welchen Datentyp würden Sie verwenden, um eine unveränderliche Sammlung von Objekten zu speichern, die eine feste Anzahl von verschiedenen Typen enthalten?
Array
ImmutableCollection
Liste
Tuple
Q6. Nachdem Sie eine Funktion im Interpreter definiert haben, gibt Scala Folgendes zurück. Was zeigt () an?
myfnc: ()Unit
Die Funktion hat keine Seiteneffekte.
Die Funktion hat keine Parameter.
Die Funktion gibt keinen Wert zurück.
Das Zurückgeben von Unit-Typen an die Funktion ist ein Closure.
Q7. Welche Art von Zahl ist 1234.e5?
Hexadezimal
Short
Gleitkommazahl
Lang
Q8. Wenn Sie eine Map in eine Liste mit der toList-Methode der Map konvertieren, welchen Typ hat das Ergebnis?
Q11. Ist der Bereich für den for-yield-Konstrukt getrennt zwischen for-Körper und yield-Körper?
Ja und nein. Es ist je nach dem for-Konstrukt und dessen Funktion unterschiedlich.
Ja, weil der for-Bereich seinen Bereich nicht freigibt.
Nein, weil for-yield den gleichen Bereich teilt, obwohl sie sich in verschiedenen geschweiften Klammern befinden.
Ja, weil sie sich in unterschiedlichen geschweiften Klammern befinden.
Beispiel: Der yield-Körper hat Zugriff auf die Variable e aus dem for-Körper
val a = Array(1, 2, 3, 4, 5)
for {
e <- a if e > 2} yield e
Q12. Was ist eine Möglichkeit, Musterabgleich auf Methoden zu implementieren?
Mit Regex
Mit Monaden
Mit Zeichenkettenabgleich
Mit Fallklassen
Hinweis: Mehrdeutige Frage, es ist nicht klar, welche Art von Musterabgleich hier gemeint ist.
Q13. Was ist der Wert von z nach Ausführung dieses Codes?
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. Welcher Begriff wird verwendet, um eine Vorbedingung anzugeben?
assert
require
precondition
mustHave
Q15. Welcher Scala-Typ kann eine Ausnahme oder einen erfolgreich berechneten Wert werfen und wird häufig verwendet, um Fehler abzufangen und weiterzuleiten?
Q18. Sie haben ein Array mit val erstellt. Können Sie den Wert eines Elements des Arrays ändern - und warum oder warum nicht?
Ja, die Referenz auf das Array ist unveränderlich, daher ist der Speicherort, auf den das Array zeigt, unveränderlich. Die Werte im Array sind veränderbar.
Das 0-te Element ist unveränderlich und kann nicht geändert werden. Alle anderen Elemente können geändert werden.
Ja, val macht Arrays nicht unveränderlich.
Nein, val macht das Array und die Werte des Arrays unveränderlich.
Erklärung:
val a1 = Array(1, 2, 3)
a1{1}
= 3// OKa1 = Array(1, 3, 3) // Fehler: Neuweisen an val
Q19. Was ist die Ausgabe dieser Funktion?
defmain() {
var a = 0for (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. Wie nennt man Objekte mit unveränderlichem Zustand?
Singleton
Stationäre Objekte
Funktionale Objekte
Feste Objekte
Hinweis: Singletons können einen veränderlichen Zustand haben.