Score %0 (0 correct0 incorrect20 unanswered)

Q1. Vorresti stampare ogni punteggio su una propria riga con la sua posizione cardinale. Senza usare var o val, quale metodo permette l'iterazione sia con il valore che con la sua posizione?

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

reference

Q2. Quando viene istanziata la classe Airplane, visualizza Aircraft = null, e non Aircraft = C130, perché?

abstract class Aircraft {
  init { println("Aircraft = ${getName()}") }
  abstract fun getName(): String
}
class Airplane(private val name: String) : Aircraft() {
  override fun getName(): String = name
}
  • Le classi vengono inizializzate nell'ordine in cui si trovano nel file, quindi, Aircraft dovrebbe apparire dopo Airplane
  • Il codice deve passare il parametro al costruttore primario della classe base. Poiché non lo fa, riceve un null
  • La funzione astratta restituisce sempre null
  • Una superclasse viene inizializzata prima della sua sottoclasse. Pertanto, il nome non è stato impostato prima che venga visualizzato

reference discussion

Q3. Le interfacce e le classi astratte di Kotlin sono molto simili. Qual è una cosa che una classe astratta può fare che le interfacce non possono?

  • Solo le classi astratte sono ereditabili dalle sottoclassi
  • Solo le classi astratte possono ereditare da più superclassi
  • Solo le classi astratte possono avere metodi astratti
  • Solo le classi astratte possono memorizzare lo stato

reference

Q4. All'interno di una funzione di estensione, qual è il nome della variabile che corrisponde all'oggetto ricevitore?

  • La variabile è chiamata it
  • La variabile è chiamata this
  • La variabile è chiamata receiver
  • La variabile è chiamata default

reference

Q5. La tua applicazione ha una funzione add. Come potresti utilizzare i suoi metodi invoke e visualizzare i risultati?

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))

reference

Q6. Qual è il punto di ingresso per un'applicazione Kotlin?

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

Q7. Stai scrivendo un'applicazione console in Kotlin che elabora test inseriti dall'utente. Se l'utente inserisce una stringa vuota, il programma esce. Quale tipo di loop sarebbe più adatto per questa app? Tieni presente che il loop viene eseguito almeno una volta

  • un loop do..while
  • un loop for
  • un loop while
  • un loop forEach

reference

Q8. Passi un intero a una funzione che si aspetta il tipo Any. Funziona senza problemi. Perché un intero primitivo può funzionare con una funzione che si aspetta un oggetto?

fun showHashCode(obj: Any){
  println("${obj.hashCode()}")
}
fun main() {
  showHashCode(1)
}
  • Anche se il codice viene eseguito, non produce risultati corretti
  • L'intero è sempre una classe
  • Il compilatore esegue un metodo implicito .toClass() sull'intero
  • L'intero viene impacchettato automaticamente in una classe Kotlin Int

reference

Q9. Hai avviato un coroutine a lunga durata il cui lavoro hai assegnato a una variabile chiamata task. Se fosse necessario, come potresti interrompere la coroutine?

val task = launch {
  // lavoro a lunga durata
}
  • task.join()
  • task.abort()
  • job.stop()
  • task.cancel()

reference

Q10. Stai cercando di assegnare una variabile intera a una variabile long, ma il compilatore Kotlin segnala un errore. Perché?

  • È necessario avvolgere tutte le conversioni implicite in un blocco try/catch
  • Puoi assegnare solo Long a un Int, non viceversa
  • Non c'è alcuna conversione implicita da Int a Long
  • Tutti gli interi in Kotlin sono del tipo Long

reference

Q11. Hai scritto un frammento di codice per visualizzare i risultati del lancio di un dado a sei facce. Quando il dado mostra da 3 a 6 incluso, desideri visualizzare un messaggio speciale. Utilizzando un intervallo Kotlin, quale cod

ice dovresti aggiungere?

when (die) {
  1 -> println("Il dado è 1")
  2 -> println("Il dado è 2")
  ___ -> println("Il dado è compreso tra 3 e 6")
  else -> println("Il dado è sconosciuto")
}
  • 3,4,5,6
  • in 3..6
  • 3 : 6
  • {3,4,5,6}

reference

Q12. La funzione typeChecker riceve un parametro obj di tipo Any. In base al tipo di obj, stampa messaggi diversi per i tipi Int, String, Double e Float; se non è nessuno dei tipi menzionati, stampa "tipo sconosciuto". Quale operatore ti permette di determinare il tipo di un oggetto?

  • instanceof
  • is
  • typeof
  • as

reference

Q13. Questo codice non stampa nessun output sulla console. Cosa c'è di sbagliato?

firstName?.let {
  println("Saluto $firstname!")
}
  • Viene generata un'eccezione di puntatore nullo
  • firstName è uguale a null
  • firstName è uguale a una stringa vuota
  • firstName è uguale al Booleano false

reference

Q14. Hai una funzione simple() che viene chiamata frequentemente nel tuo codice. Applichi il prefisso inline alla funzione. Qual è l'effetto sul codice?

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

fun main() {
  for(count in 1..1000) {
    simple(count)
  }
}
  • Il codice darà un errore di stack overflow
  • Il compilatore avverte di un impatto sulle prestazioni insignificante
  • Il compilatore avverte di un uso significativo di memoria
  • Il codice è significativamente più veloce

reference

Q15. Come completi il vuoto qui sotto per visualizzare tutti i numeri pari da 1 a 10 con il minor numero possibile di codice?

for (_____) {
  println("Ci sono $count farfalle.")
}
  • count in 1..10
  • count in 2..10 step 2
  • count in 1..10 % 2
  • var count=2; count <= 10; count+=2

reference

Q16. Quale valore viene stampato da println()?

val set = setOf("mela", "pera", "arancia", "mela")
println(set.count())
  • 3
  • 4
  • 1
  • 5

reference

Q17. Quale riga di codice mostra come visualizzare la lunghezza di una stringa nulla e mostra 0 anziché null?

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

Q18. Nel file main.kt, stai filtrando una lista di interi e vuoi utilizzare una funzione già esistente, removeBadValues. Qual è il modo corretto per invocare la funzione da filter nella riga sottostante?

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

reference

Q19. Quale frammento di codice mostra correttamente un loop for utilizzando un intervallo per visualizzare "1 2 3 4 5 6"?

  • 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 ")

reference

Q20. Stai aggiornando una classe Java a Kotlin. Cosa dovresti usare per sostituire i campi statici della classe Java?

  • un oggetto anonimo
  • una proprietà statica
  • un oggetto companion
  • un campo di supporto