Como passar em uma entrevista de Kotlin: principais perguntas de A a Z
Uma entrevista de Kotlin não é apenas uma verificação de sintaxe. Os empregadores querem ver se você entende a filosofia da linguagem: segurança contra nulos, estilo funcional, expressões idiomáticas e particularidades de compilação. Neste artigo, analisamos as perguntas mais frequentes — do básico ao avançado. Prepare-se para a entrevista 100%.
1. Perguntas básicas: sintaxe e null safety
A entrevista geralmente começa com o básico. Aqui está o que você precisa saber obrigatoriamente.
Quais tipos de dados existem em Kotlin e como eles diferem do Java?
Kotlin é uma linguagem estaticamente tipada. Todos os tipos são objetos, não há primitivos (mas o compilador pode otimizar). Tipos principais: Int, Double, Boolean, String, Array. Diferente do Java, em Kotlin não há new para criar objetos, e tipos nullable são explicitamente marcados com ?.
O que é null safety e como Kotlin a implementa?
Null safety é uma proteção embutida contra NullPointerException. Os tipos são divididos em nullable (String?) e non-null (String). Para acesso seguro, use os operadores:
val name: String? = nullprintln(name?.length) // chamada segura -> nullprintln(name?.length ?: 0) // operador elvis -> 0println(name!!.length) // forçamento -> NPE, se nullQual a diferença entre val e var?
val— referência imutável (somente leitura). Análogo afinalem Java.var— referência mutável.
Importante: val não garante a imutabilidade do objeto em si, apenas da referência.
2. Construções avançadas: classes, funções e sealed
Aqui, testam a capacidade de escrever código conciso e seguro.
O que é data class e quais métodos ela gera?
data class é uma classe destinada ao armazenamento de dados. O compilador gera automaticamente: equals(), hashCode(), toString(), copy() e componentN().
data class User(val id: Int, val name: String)val user = User(1, "Alice")val copy = user.copy(name = "Bob")println(user) // User(id=1, name=Alice)O que é sealed class e quando usá-las?
sealed class é uma hierarquia de classes restrita. Todas as subclasses devem ser declaradas no mesmo arquivo. Ideal para representar estados (por exemplo, resultado de carregamento).
sealed class Result { data class Success(val data: String) : Result() data class Error(val message: String) : Result() object Loading : Result()}
fun handle(result: Result) = when (result) { is Result.Success -> println(result.data) is Result.Error -> println(result.message) Result.Loading -> println("Loading...")}Vantagem: o when deve ser exaustivo — o compilador verificará todas as opções.
O que são extension functions e como funcionam?
Extension functions permitem adicionar um novo método a uma classe existente sem herança. Na verdade, são funções estáticas que recebem uma instância da classe como primeiro argumento.
fun String.isEmail(): Boolean = this.contains("@")println("test@mail.ru".isEmail()) // true3. Programação funcional: lambdas, coleções, escopos
Kotlin usa ativamente a abordagem funcional. Esteja preparado para perguntas sobre trabalho com coleções e funções de escopo.
Quais funções de escopo você conhece? Quais as diferenças?
Principais: let, run, with, apply, also. A principal diferença é o contexto (this ou it) e o valor de retorno.