Entrevista de Kotlin: principais perguntas e respostas para ser aprovado

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Como passar em uma entrevista de Kotlin: principais perguntas



Kotlin solidificou seu lugar como a principal linguagem para desenvolvimento Android e é ativamente usado no backend (Ktor, Spring Boot). Uma entrevista para uma vaga de desenvolvedor Kotlin é uma verificação não apenas da sintaxe, mas também da compreensão da filosofia da linguagem: null safety, corrotinas, abordagem funcional. Neste artigo, analisamos as perguntas mais frequentes feitas em entrevistas, com exemplos de código e explicações.



1. Null Safety: como o Kotlin lida com NullPointerException



Uma das principais vantagens do Kotlin é a proteção embutida contra null. Ao contrário do Java, onde qualquer referência pode ser null, no Kotlin os tipos são divididos em nullable e non-null.



Pergunta: qual a diferença entre ? e !!?

? é o operador de chamada segura. Se o objeto for null, a chamada ao método ou propriedade simplesmente retorna null sem exceção.

val name: String? = nullval length = name?.length  // null, sem erro

!! é a afirmação non-null. Você garante que o valor não é null. Se for null — lança NullPointerException.

val length = name!!.length  // NPE quando name == null


Pergunta: o que é o operador elvis ?:?

Permite definir um valor padrão se o lado esquerdo for null.

val name: String? = nullval display = name ?: "Convidado"


Pergunta: como funciona o let com tipos nullable?

let é executado apenas se o objeto não for null. Esta é uma forma idiomática de lidar com nullable.

name?.let {     println("Nome: $it")}


2. Corrotinas: assincronia sem dor



Corrotinas são threads leves que permitem escrever código assíncrono em estilo imperativo. Em entrevistas, verificam a compreensão de escopos, dispatchers e funções suspend.



Pergunta: qual a diferença entre launch e async?

  • launch — inicia uma corrotina, retorna um Job. Não retorna resultado.
  • async — inicia uma corrotina, retorna um Deferred (análogo ao Future). O resultado é obtido através de .await().
coroutineScope {    val job = launch { delay(100) }    val deferred = async { 42 }    val result = deferred.await()  // 42}


Pergunta: o que é CoroutineContext e dispatchers?

CoroutineContext é um conjunto de elementos que definem o comportamento da corrotina (dispatcher, Job, nome). Os principais dispatchers são:

  • Dispatchers.Main — para UI (Android).
  • Dispatchers.IO — para entrada/saída (rede, arquivos).
  • Dispatchers.Default — para tarefas intensivas de CPU.


Pergunta: o que é withContext?

Permite mudar o dispatcher dentro de uma corrotina sem alterar o escopo.

suspend fun loadData(): String = withContext(Dispatchers.IO) {    // operação longa    "Dados"}


3. Classes e objetos: sealed, data, companion



Kotlin oferece vários tipos especiais de classes que simplificam padrões típicos.



Pergunta: o que é uma sealed class e quando usá-la?

Sealed class é uma classe abstrata com um conjunto limitado de subclasses. Todos os herdeiros são conhecidos em tempo de compilação. É ideal para representar estados (UI State) ou resultados de operações.

sealed class Result {    data class Success(val data: String) : Result()    data class Error(val message: String) : Result()    object Loading : Result()}

fun handleResult(result: Result) { when (result) { is Result.Success -> println(result.data) is Result.Error -> println(result.message) Result.Loading -> println("Carregando...") }}

O ramo else não é necessário — o compilador conhece todas as variantes.



Pergunta: qual a diferença entre uma data class e uma class

Blogs

Book Recommendations