Score %0 (0 correct0 incorrect20 unanswered)

Q1. Te gustaría imprimir cada puntuación en su propia línea con su posición cardinal. ¿Qué método permite la iteración con tanto el valor como su posición sin usar var o val?

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

referencia

Q2. Cuando se instancia la clase Airplane, muestra Aircraft = null, no Aircraft = C130 ¿por qué?

abstract class Aircraft {
  init { println("Aircraft = ${getName()}") }
  abstract fun getName(): String
}
class Airplane(private val name: String) : Aircraft() {
  override fun getName(): String = name
}
  • Las clases se inicializan en el mismo orden en que están en el archivo, por lo tanto, Aircraft debería aparecer después de Airplane
  • El código necesita pasar el parámetro al constructor primario de la clase base. Como no lo hace, recibe un null
  • La función abstracta siempre devuelve null
  • Una superclase se inicializa antes que su subclase. Por lo tanto, el nombre no se ha establecido antes de que se represente

referencia discusión

Q3. Las interfaces y las clases abstractas de Kotlin son muy similares. ¿Qué es una cosa que una clase abstracta puede hacer que las interfaces no pueden?

  • Solo las clases abstractas son heredables por subclases
  • Solo las clases abstractas pueden heredar de múltiples superclases
  • Solo las clases abstractas pueden tener métodos abstractos
  • Solo las clases abstractas pueden almacenar estado

referencia

Q4. Dentro de una función de extensión, ¿cuál es el nombre de la variable que corresponde al objeto receptor?

  • La variable se llama it
  • La variable se llama this
  • La variable se llama receiver
  • La variable se llama default

referencia

Q5. Tu aplicación tiene una función add. ¿Cómo podrías usar sus métodos invoke y mostrar los resultados?

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

referencia

Q6. ¿Cuál es el punto de entrada para una aplicación Kotlin?

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

Q7. Estás escribiendo una aplicación de consola en Kotlin que procesa pruebas ingresadas por el usuario. Si el usuario ingresa una cadena vacía, el programa se cierra. ¿Qué tipo de bucle funcionaría mejor para esta aplicación? Ten en cuenta que el bucle se ingresa al menos una vez

  • un bucle do..while
  • un bucle for
  • un bucle while
  • un bucle forEach

referencia

Q8. Pasas un entero a una función que espera tipo Any. Funciona sin problemas. ¿Por qué puede funcionar un entero primitivo con una función que espera un objeto?

fun showHashCode(obj: Any){
  println("${obj.hashCode()}")
}
fun main() {
  showHashCode(1)
}
  • Aunque el código se ejecuta, no produce resultados correctos
  • El entero siempre es una clase
  • El compilador ejecuta un método implícito .toClass() en el entero
  • El entero se autoboxea a una clase Kotlin Int

referencia

Q9. Has iniciado una corrutina de larga duración cuyo trabajo has asignado a una variable llamada task. Si surgiera la necesidad, ¿cómo podrías abortar la corrutina?

val task = launch {
  // trabajo de larga duración
}
  • task.join()
  • task.abort()
  • job.stop()
  • task.cancel()

referencia

Q10. Estás intentando asignar una variable entera a una variable long, pero el compilador de Kotlin lo marca como un error. ¿Por qué?

  • Debes envolver todas las conversiones implícitas en un bloque try/catch
  • Solo puedes asignar Long a un Int, no viceversa
  • No hay conversión implícita de Int a Long
  • Todos los enteros en Kotlin son del tipo Long

referencia

Q11. Has escrito un fragmento de código para mostrar los resultados de la tirada de un dado de seis caras. Cuando el dado muestra del 3 al 6 inclusive, quieres mostrar un mensaje especial. Usando un rango de Kotlin, ¿qué código deberías agregar?

when (die) {
  1 -> println("el dado es 1")
  2 -> println("el dado es 2")
  ___ -> println("el dado está entre 3 y 6")
  else -> println("el dado es desconocido")
}
  • 3,4,5,6
  • in 3..6
  • 3 : 6

[ ] {3,4,5,6}

referencia

Q12. La función typeChecker recibe un parámetro obj de tipo Any. Basado en el tipo de obj, imprime diferentes mensajes para los tipos Int, String, Double, y Float; si no es ninguno de los tipos mencionados, imprime "tipo desconocido". ¿Qué operador te permite determinar el tipo de un objeto?

  • instanceof
  • is
  • typeof
  • as

referencia

Q13. Este código no imprime ninguna salida en la consola. ¿Qué está mal?

firstName?.let {
  println("Saludo $firstname!")
}
  • Se lanza una excepción de puntero nulo
  • firstName es igual a null
  • firstName es igual a una cadena vacía
  • firstName es igual a Boolean false

referencia

Q14. Tienes una función simple() que se llama frecuentemente en tu código. Colocas el prefijo inline en la función. ¿Qué efecto tiene en el código?

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

fun main() {
  for(count in 1..1000) {
    simple(count)
  }
}
  • El código dará un error de desbordamiento de pila
  • El compilador advierte sobre un impacto insignificante en el rendimiento
  • El compilador advierte sobre un uso significativo de memoria
  • El código es significativamente más rápido

referencia

Q15. ¿Cómo llenarías el espacio en blanco a continuación para mostrar todos los números pares del 1 al 10 con la menor cantidad de código?

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

referencia

Q16. ¿Qué valor se imprime con println()?

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

referencia

Q17. ¿Qué línea de código muestra cómo mostrar la longitud de una cadena nullable y muestra 0 en lugar de null?

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

Q18. En el archivo main.kt, estás filtrando una lista de enteros y quieres usar una función ya existente, removeBadValues. ¿Cuál es la forma adecuada de invocar la función desde filter en la línea de abajo?

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

referencia

Q19. ¿Qué fragmento de código muestra correctamente un bucle for usando un rango para mostrar "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 ")

referencia

Q20. Estás actualizando una clase de Java a Kotlin. ¿Qué deberías usar para reemplazar los campos estáticos de la clase de Java?

  • un objeto anónimo
  • una propiedad estática
  • un objeto companion
  • un campo de respaldo