Perguntas para Entrevista de Desenvolvedor Mobile Júnior (Android): Guia Completo

Milad Bonakdar
Autor
Domine os fundamentos do desenvolvimento Android com perguntas essenciais para entrevistas, abrangendo Kotlin, Activities, Fragments, Jetpack Compose, persistência de dados e as melhores práticas do Android para desenvolvedores juniores.
Introdução
O desenvolvimento Android alimenta bilhões de dispositivos em todo o mundo, tornando-o uma das plataformas móveis mais importantes. Com Kotlin como linguagem preferida e ferramentas modernas como Jetpack Compose, os desenvolvedores Android criam aplicativos ricos e de alto desempenho para diversos usuários.
Este guia aborda as principais perguntas de entrevistas para Desenvolvedores Android Júnior. Exploramos os fundamentos do Kotlin, componentes Android, desenvolvimento de UI, persistência de dados, rede e melhores práticas para ajudá-lo a se preparar para sua primeira função como desenvolvedor Android.
Fundamentos do Kotlin (6 Perguntas)
1. Qual é a diferença entre val e var em Kotlin?
Resposta:
val: Declara uma variável imutável (somente leitura). Uma vez atribuída, seu valor não pode ser alterado.var: Declara uma variável mutável. Seu valor pode ser alterado após a inicialização.- Melhor Prática: Use
valpor padrão para segurança. Usevarsomente quando precisar reatribuir o valor.
Raridade: Muito Comum Dificuldade: Fácil
2. Explique os tipos Nullable e o operador Safe Call em Kotlin.
Resposta: O sistema de tipos do Kotlin distingue entre tipos nullable e não nullable para evitar exceções de ponteiro nulo.
- Tipo Nullable: Adicione
?após o tipo:String? - Safe Call (
?.): Chama um método somente se o objeto não for nulo - Elvis Operator (
?:): Fornece um valor padrão se for nulo - Not-null Assertion (
!!): Lança exceção se for nulo (use com moderação)
Raridade: Muito Comum Dificuldade: Fácil
3. Qual é a diferença entre uma class e uma data class em Kotlin?
Resposta:
- Classe Regular: Definição de classe padrão
- Data Class: Gera automaticamente métodos úteis para armazenar dados
equals()ehashCode()toString()- Função
copy() - Funções
componentN()para desestruturação
Raridade: Muito Comum Dificuldade: Fácil
4. O que são expressões Lambda e funções Higher-order em Kotlin?
Resposta:
- Lambda: Função anônima que pode ser passada como um valor
- Função Higher-order: Função que recebe funções como parâmetros ou retorna uma função
Raridade: Muito Comum Dificuldade: Médio
5. Explique as Extension Functions em Kotlin.
Resposta: As extension functions permitem adicionar novas funções às classes existentes sem modificar seu código-fonte.
Raridade: Comum Dificuldade: Fácil
6. Qual é a diferença entre == e === em Kotlin?
Resposta:
==: Igualdade estrutural (compara valores usandoequals())===: Igualdade referencial (compara referências de memória)
Raridade: Comum Dificuldade: Fácil
Componentes Android (5 Perguntas)
7. O que é uma Activity e explique seu ciclo de vida.
Resposta: Uma Activity representa uma única tela com uma interface de usuário. Possui um ciclo de vida bem definido:
onCreate(): A Activity é criada. Inicialize a UI, defina o content view.onStart(): A Activity se torna visível.onResume(): A Activity está em primeiro plano e interativa.onPause(): A Activity está perdendo o foco (outra activity vindo para o primeiro plano).onStop(): A Activity não está mais visível.onDestroy(): A Activity é destruída.
Raridade: Muito Comum Dificuldade: Fácil
8. Qual é a diferença entre uma Activity e um Fragment?
Resposta:
- Activity: Representa uma tela inteira. Ponto de entrada para a interação do usuário. Tem seu próprio ciclo de vida.
- Fragment: Porção reutilizável da UI dentro de uma Activity. Vários fragments podem existir em uma activity. Tem seu próprio ciclo de vida vinculado à activity hospedeira.
- Benefícios dos Fragments:
- Reutilização entre activities
- Componentes de UI modulares
- Suporte para tablets (layouts multi-pane)
- Integração do componente de navegação
Raridade: Muito Comum Dificuldade: Fácil
9. O que é uma Intent e quais são seus tipos?
Resposta: Intent é um objeto de mensagem usado para solicitar uma ação de outro componente do aplicativo.
- Intent Explícita: Especifica o componente exato para iniciar (pelo nome da classe)
- Intent Implícita: Declara uma ação geral e o sistema encontra o componente apropriado
Raridade: Muito Comum Dificuldade: Fácil
10. O que é um Service no Android?
Resposta: Um Service é um componente que é executado em segundo plano para executar operações de longa duração sem uma interface de usuário.
- Tipos:
- Foreground Service: Executa operações perceptíveis (tocador de música). Mostra notificação.
- Background Service: Executa operações não percebidas diretamente pelo usuário.
- Bound Service: Permite que os componentes se liguem a ele e interajam.
Raridade: Comum Dificuldade: Médio
11. O que é um BroadcastReceiver?
Resposta: BroadcastReceiver é um componente que responde a anúncios de broadcast em todo o sistema.
- Casos de Uso: Bateria fraca, mudanças na conectividade de rede, SMS recebido, inicialização concluída
- Registro:
- Estático: No AndroidManifest.xml (limitado em versões mais recentes do Android)
- Dinâmico: No código (preferido)
Raridade: Comum Dificuldade: Fácil
Desenvolvimento de UI (4 Perguntas)
12. Qual é a diferença entre LinearLayout, RelativeLayout e ConstraintLayout?
Resposta:
- LinearLayout: Organiza os filhos em uma única linha ou coluna. Simples, mas pode levar a layouts aninhados.
- RelativeLayout: Posiciona os filhos em relação uns aos outros ou ao pai. Mais flexível, mas complexo.
- ConstraintLayout: Layout moderno e flexível. Hierarquia de visualização plana. Recomendado para UIs complexas.
Raridade: Muito Comum Dificuldade: Fácil
13. O que é RecyclerView e como funciona?
Resposta: RecyclerView é um widget eficiente para exibir grandes listas reciclando visualizações.
- Componentes:
- Adapter: Vincula dados às visualizações
- ViewHolder: Mantém referências às visualizações (evita chamadas
findViewById) - LayoutManager: Posiciona os itens (Linear, Grid, Staggered)
Raridade: Muito Comum Dificuldade: Médio
14. O que é Jetpack Compose?
Resposta: Jetpack Compose é o moderno kit de ferramentas de UI declarativo do Android.
- Declarativo: Descreva como a UI deve ser, não como construí-la
- Benefícios: Menos código, intuitivo, poderoso, acelera o desenvolvimento
- Funções Composable: Blocos de construção da UI do Compose
Raridade: Muito Comum Dificuldade: Fácil
15. Qual é a diferença entre match_parent e wrap_content?
Resposta: Esses são parâmetros de layout que definem as dimensões da visualização:
match_parent: A visualização se expande para preencher o tamanho do paiwrap_content: A visualização se dimensiona para ajustar seu conteúdo- Tamanho Fixo: Valor dp específico (por exemplo,
100dp)
Raridade: Muito Comum Dificuldade: Fácil
Dados e Rede (5 Perguntas)
16. Como você faz uma solicitação de rede no Android?
Resposta:
Use bibliotecas como Retrofit ou OkHttp para rede. Evite usar HttpURLConnection diretamente.
Raridade: Muito Comum Dificuldade: Médio
17. O que é Room e como você o usa?
Resposta: Room é uma camada de abstração sobre o SQLite para facilitar o acesso ao banco de dados.
- Componentes:
- Entity: Representa uma tabela
- DAO (Data Access Object): Define operações de banco de dados
- Database: Contêiner do banco de dados
Raridade: Muito Comum Dificuldade: Médio
18. O que é SharedPreferences?
Resposta: SharedPreferences armazena pequenas quantidades de dados primitivos como pares de chave-valor.
- Casos de Uso: Configurações do usuário, preferências, flags simples
- Não para: Grandes dados, objetos complexos (use Room em vez disso)
Raridade: Muito Comum Dificuldade: Fácil
19. Qual é a diferença entre apply() e commit() em SharedPreferences?
Resposta: Ambos salvam as alterações no SharedPreferences, mas diferem no comportamento:
apply(): Assíncrono. Retorna imediatamente. Alterações gravadas no disco em segundo plano. Sem valor de retorno.commit(): Síncrono. Bloqueia até que as alterações sejam gravadas. Retorna booleano (sucesso/falha).- Melhor Prática: Use
apply()a menos que precise do valor de retorno.
Raridade: Comum Dificuldade: Fácil
20. O que são Coroutines em Kotlin?
Resposta: As Coroutines fornecem uma maneira de escrever código assíncrono sequencialmente, tornando-o mais fácil de ler e manter.
- Benefícios: Leve, concorrência estruturada, tratamento de exceções
- Conceitos Chave:
suspend: Função que pode ser pausada e retomadalaunch: Inicia uma coroutine (disparar e esquecer)async: Inicia uma coroutine e retorna um resultado- Dispatchers: Controla em qual thread a coroutine é executada
Raridade: Muito Comum Dificuldade: Médio


