Score %0 (0 correct0 incorrect20 unanswered)

Q1. Sie möchten jeden Punktestand in einer eigenen Zeile mit seiner Kartenposition ausgeben. Welche Methode erlaubt es, ohne var oder val zu verwenden, durch die Liste zu iterieren und sowohl den Wert als auch seine Position zu erhalten?

fun main() {
  val highScores = listOf(4000, 2000, 10200, 12000, 9030)
}
  • .withIndex()
  • .forEachIndexed()
  • .forEach()
  • .forIndexes()

Referenz

Q2. Wenn die Airplane-Klasse instanziiert wird, wird Aircraft = null angezeigt, nicht jedoch Aircraft = C130. Warum?

abstract class Aircraft {
  init { println("Aircraft = ${getName()}") }
  abstract fun getName(): String
}
class Airplane(private val name: String) : Aircraft() {
  override fun getName(): String = name
}
  • Klassen werden in der Reihenfolge initialisiert, in der sie in der Datei stehen. Daher sollte Aircraft nach Airplane erscheinen.
  • Der Code muss den Parameter an den Primärkonstruktor der Basisklasse übergeben. Da er dies nicht tut, erhält er ein null.
  • Abstrakte Funktionen geben immer null zurück.
  • Eine Superklasse wird vor ihrer Unterklasse initialisiert. Daher wurde der Name noch nicht gesetzt, bevor er ausgegeben wird.

Referenz Diskussion

Q3. Kotlin-Schnittstellen und abstrakte Klassen sind sich sehr ähnlich. Was kann eine abstrakte Klasse tun, was Schnittstellen nicht können?

  • Nur abstrakte Klassen können von Unterklassen vererbt werden.
  • Nur abstrakte Klassen können von mehreren Superklassen erben.
  • Nur abstrakte Klassen können abstrakte Methoden haben.
  • Nur abstrakte Klassen können Zustand speichern.

Referenz

Q4. Wie heißt die Variable im Rahmen einer Erweiterungsfunktion, die dem Empfängerobjekt entspricht?

  • Die Variable heißt it.
  • Die Variable heißt this.
  • Die Variable heißt receiver.
  • Die Variable heißt default.

Referenz

Q5. Ihre Anwendung hat eine add-Funktion. Wie könnten Sie ihre invoke-Methoden verwenden und die Ergebnisse anzeigen?

fun add(a: Int, b: Int): Int {
  return a + b
}
  • println(add(5,10).invoke())
  • println(::add.invoke(5, 10))
  • println(::add.invoke{5, 10})
  • println(add.invoke(5,10))

Referenz

Q6. Was ist der Einstiegspunkt für eine Kotlin-Anwendung?

  • fun static main(){}
  • fun main(){}
  • fun Main(){}
  • public static void main(){}

Q7. Sie schreiben eine Konsolenanwendung in Kotlin, die Tests verarbeitet, die vom Benutzer eingegeben werden. Wenn der Benutzer eine leere Zeichenfolge eingibt, wird das Programm beendet. Welche Art von Schleife wäre am besten für diese Anwendung geeignet? Beachten Sie, dass die Schleife mindestens einmal durchlaufen wird.

  • Eine do..while-Schleife
  • Eine for-Schleife
  • Eine while-Schleife
  • Eine forEach-Schleife

Referenz

Q8. Sie übergeben eine Ganzzahlvariable an eine Funktion vom Typ Any, und sie funktioniert ohne Probleme. Warum kann eine primitiv Integer mit einer Funktion, die ein Objekt erwartet, arbeiten?

fun showHashCode(obj: Any){
  println("${obj.hashCode()}")
}
fun main() {
  showHashCode(1)
}
  • Obwohl der Code ausgeführt wird, liefert er keine korrekten Ergebnisse.
  • Die Ganzzahl ist immer eine Klasse.
  • Der Compiler führt implizit eine .toClass()-Methode auf der Ganzzahl aus.
  • Die Ganzzahl wird automatisch in eine Kotlin-Int-Klasse verpackt.

Referenz

Q9. Sie haben eine lang laufende Coroutine gestartet, deren Aufgabe Sie einer Variablen namens task zugewiesen haben. Wenn es erforderlich wäre, wie könnten Sie die Coroutine abbrechen?

val task = launch {
  // lange laufende Aufgabe
}
  • task.join()
  • task.abort()
  • job.stop()
  • task.cancel()

Referenz

Q10. Sie versuchen, eine Integer-Variable einer Long-Variable zuzuweisen, aber der Kotlin-Compiler meldet einen Fehler. Warum?

  • Sie müssen alle impliziten Konvertierungen in einem try/catch-Block einwickeln.
  • Sie können nur Long an Int zuweisen, nicht umgekehrt.
  • Es gibt keine implizite Konvertierung von Int nach Long.
  • Alle Ganzzahlen in Kotlin sind vom Typ Long.

Referenz

Q11. Sie haben einen Code-Schnipsel geschrieben, um die Ergebnisse eines Würfelwurfs anzuzeigen. Wenn der Würfel von

3 bis 6 (einschließlich) angezeigt wird, möchten Sie eine spezielle Meldung anzeigen. Mit Hilfe eines Kotlin-Bereichs, welchen Code sollten Sie hinzufügen?

when (die) {
  1 -> println("Würfel ist 1")
  2 -> println("Würfel ist 2")
  ___ -> println("Würfel ist zwischen 3 und 6")
  else -> println("Würfel ist unbekannt")
}
  • 3,4,5,6
  • in 3..6
  • 3 : 6
  • {3,4,5,6}

Referenz

Q12. Die Funktion typeChecker empfängt einen Parameter obj vom Typ Any. Abhängig vom Typ von obj gibt sie unterschiedliche Nachrichten für die Typen Int, String, Double und Float aus; wenn keiner der genannten Typen vorliegt, gibt sie "unbekannter Typ" aus. Welcher Operator ermöglicht es Ihnen, den Typ eines Objekts zu bestimmen?

  • instanceof
  • is
  • typeof
  • as

Referenz

Q13. Dieser Code gibt keine Ausgabe in der Konsole aus. Was ist falsch?

firstName?.let {
  println("Begrüßung $firstname!")
}
  • Es wird eine Nullzeiger-Ausnahme ausgelöst.
  • firstName ist gleich null.
  • firstName ist gleich einer leeren Zeichenfolge.
  • firstName ist gleich dem booleschen Wert false.

Referenz

Q14. Sie haben eine Funktion simple(), die häufig in Ihrem Code aufgerufen wird. Sie setzen das Schlüsselwort inline vor die Funktion. Welchen Effekt hat dies auf den Code?

inline fun simple(x: Int): Int{
  return x * x
}

fun main() {
  for(count in 1..1000) {
    simple(count)
  }
}
  • Der Code führt zu einem Stackoverflow-Fehler.
  • Der Compiler warnt vor vernachlässigbaren Leistungseinbußen.
  • Der Compiler warnt vor erheblichem Speicherverbrauch.
  • Der Code ist wesentlich schneller.

Referenz

Q15. Wie füllen Sie die Lücke unten aus, um alle geraden Zahlen von 1 bis 10 mit minimalem Code anzuzeigen?

for (_____) {
  println("Es gibt $count Schmetterlinge.")
}
  • count in 1..10
  • count in 2..10 step 2
  • count in 1..10 % 2
  • var count=2; count <= 10; count+=2

Referenz

Q16. Welcher Wert wird von println() ausgegeben?

val set = setOf("Apfel", "Birne", "Orange", "Apfel")
println(set.count())
  • 3
  • 4
  • 1
  • 5

Referenz

Q17. Welche Zeile zeigt, wie die Länge einer nullable String angezeigt wird und stattdessen 0 anstelle von null angezeigt wird?

  • println(b!!.length ?: 0)
  • println(b?.length ?: 0)
  • println(b?.length ?? 0)
  • println(b == null? 0: b.length)

Q18. In der Datei main.kt filtern Sie eine Liste von Ganzzahlen und möchten eine bereits vorhandene Funktion removeBadValues verwenden. Wie rufen Sie die Funktion korrekt von filter in der folgenden Zeile auf?

val list2 = (80..100).toList().filter(_____)
  • ::removeBadValues
  • GlobalScope.removeBadValues()
  • Mainkt.removeBadValues
  • removeBadValues

Referenz

Q19. Welcher Code-Schnipsel zeigt korrekt eine for-Schleife unter Verwendung eines Bereichs an, um "1 2 3 4 5 6" anzuzeigen?

  • for(z in 1..7) println("$z ")
  • for(z in 1..6) print("$z ")
  • for(z in 1 to 6) print("$z ")
  • for(z in 1..7) print("$z ")

Referenz

Q20. Sie aktualisieren eine Java-Klasse in Kotlin. Was sollten Sie verwenden, um die statischen Felder der Java-Klasse zu ersetzen?

  • Ein anonymes Objekt
  • Eine statische Eigenschaft
  • Ein Begleitobjekt (companion object)
  • Ein Backing Field