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

Milad Bonakdar
Autor
Domine os fundamentos do desenvolvimento iOS com perguntas essenciais para entrevistas, abrangendo Swift, UIKit, SwiftUI, persistência de dados e arquitetura de aplicativos iOS para desenvolvedores juniores.
Introdução
O desenvolvimento para iOS se tornou uma das habilidades mais procuradas no desenvolvimento de aplicativos móveis. Com Swift como linguagem principal e frameworks poderosos como UIKit e SwiftUI, os desenvolvedores iOS criam experiências para milhões de usuários em todo o mundo.
Este guia cobre perguntas essenciais para entrevistas de Desenvolvedores iOS Juniores. Exploramos os fundamentos do Swift, desenvolvimento de UI, persistência de dados, networking e as melhores práticas de iOS para ajudá-lo a se preparar para sua primeira função como desenvolvedor iOS.
Fundamentos de Swift (6 Perguntas)
1. Qual é a diferença entre var e let em Swift?
Resposta:
var: Declara uma variável mutável. Seu valor pode ser alterado após a inicialização.let: Declara uma constante imutável. Uma vez definido, seu valor não pode ser alterado.- Melhor Prática: Use
letpor padrão para segurança e clareza. Usevarsomente quando souber que o valor será alterado.
Raridade: Muito Comum Dificuldade: Fácil
2. Explique Optionals em Swift. O que é Optional Binding?
Resposta:
Optionals representam um valor que pode ser nil (ausência de um valor).
- Declaração: Use
?após o tipo:var name: String? - Métodos de Unwrapping:
- Force Unwrapping:
name!(perigoso, causa crash se for nil) - Optional Binding: Desembrulha com segurança usando
if letouguard let - Nil Coalescing:
name ?? "Default" - Optional Chaining:
user?.address?.city
- Force Unwrapping:
Raridade: Muito Comum Dificuldade: Fácil
3. Qual é a diferença entre uma class e uma struct em Swift?
Resposta:
- Class: Tipo de referência (armazenado no heap). Suporta herança. Passado por referência.
- Struct: Tipo de valor (armazenado na stack). Sem herança. Passado por cópia.
- Quando usar:
- Struct: Para modelos de dados simples, quando você deseja semântica de valor (cópias independentes)
- Class: Quando você precisa de herança, semântica de referência ou deinitializers
Raridade: Muito Comum Dificuldade: Média
4. O que são Closures em Swift?
Resposta: Closures são blocos de funcionalidade autocontidos que podem ser passados e usados em seu código. Eles são semelhantes a lambdas ou funções anônimas em outras linguagens.
- Sintaxe:
{ (parâmetros) -> ReturnType in statements } - Capturando Valores: Closures podem capturar e armazenar referências a variáveis de seu contexto circundante.
- Uso Comum: Completion handlers, callbacks, operações de array.
Raridade: Muito Comum Dificuldade: Média
5. Explique a diferença entre referências weak e unowned.
Resposta: Ambos são usados para evitar ciclos de retenção (vazamentos de memória) em tipos de referência.
weak: Referência opcional que automaticamente se tornanilquando o objeto referenciado é desalocado. Use quando a referência pode sobreviver ao objeto.unowned: Referência não opcional que assume que o objeto sempre existirá. Causa crash se acessado após a desalocação. Use quando tiver certeza de que a referência não sobreviverá ao objeto.
Raridade: Comum Dificuldade: Média
6. O que são Protocols em Swift?
Resposta: Protocols definem um blueprint de métodos, propriedades e outros requisitos que se adequam a uma determinada tarefa ou funcionalidade. Classes, structs e enums podem adotar protocols.
- Semelhante a: Interfaces em outras linguagens
- Protocol Extensions: Podem fornecer implementações padrão
- Programação Orientada a Protocolos: Paradigma preferido do Swift
Raridade: Muito Comum Dificuldade: Fácil
Fundamentos de UIKit (5 Perguntas)
7. Qual é a diferença entre UIView e UIViewController?
Resposta:
UIView: Representa uma área retangular na tela. Lida com desenho e tratamento de eventos. Exemplos:UILabel,UIButton,UIImageView.UIViewController: Gerencia uma hierarquia de visualizações. Lida com o ciclo de vida da visualização, interações do usuário e navegação. Contém uma view raiz e gerencia suas subviews.- Relacionamento: Um view controller gerencia views. Um view controller pode ter muitas views.
Raridade: Muito Comum Dificuldade: Fácil
8. Explique os métodos do ciclo de vida do View Controller.
Resposta: Os view controllers têm métodos de ciclo de vida específicos chamados em ordem:
viewDidLoad(): Chamado uma vez quando a view é carregada na memória. Configuração que precisa acontecer uma vez.viewWillAppear(_:): Chamado antes da view aparecer na tela. Pode ser chamado várias vezes.viewDidAppear(_:): Chamado depois que a view aparece na tela. Inicie animações aqui.viewWillDisappear(_:): Chamado antes da view desaparecer.viewDidDisappear(_:): Chamado depois que a view desaparece. Limpe os recursos.
Raridade: Muito Comum Dificuldade: Fácil
9. O que é Auto Layout e como você usa constraints?
Resposta: Auto Layout é um sistema de layout baseado em constraints que permite criar UIs adaptáveis que funcionam em diferentes tamanhos e orientações de tela.
- Constraints: Definem relacionamentos entre views (largura, altura, espaçamento, alinhamento)
- Métodos:
- Interface Builder: Editor visual no Xcode
- Programático: API NSLayoutConstraint ou NSLayoutAnchor
- Visual Format Language: Baseado em string (menos comum agora)
Raridade: Muito Comum Dificuldade: Média
10. Qual é a diferença entre frame e bounds?
Resposta:
frame: A localização e o tamanho da view no sistema de coordenadas de sua superview. Usado para posicionar a view.bounds: A localização e o tamanho da view em seu próprio sistema de coordenadas. A origem é geralmente (0, 0). Usado para desenhar conteúdo dentro da view.- Diferença Principal:
frameé relativo ao pai,boundsé relativo a si mesmo.
Raridade: Comum Dificuldade: Média
11. Como você lida com a entrada do usuário de um UITextField?
Resposta: Existem várias abordagens:
- Target-Action: Adicione target para o evento
.editingChanged - Delegate: Esteja em conformidade com o protocolo
UITextFieldDelegate - Combine: Use publishers (abordagem moderna)
Raridade: Muito Comum Dificuldade: Fácil
Fundamentos de SwiftUI (4 Perguntas)
12. O que é SwiftUI e como é diferente do UIKit?
Resposta: SwiftUI é o framework de UI declarativo da Apple introduzido no iOS 13.
- UIKit: Imperativo (você diz ao sistema como construir a UI passo a passo). Maduro, amplamente utilizado.
- SwiftUI: Declarativo (você descreve como a UI deve ser). Moderno, menos código, atualizações automáticas.
- Características Principais:
- Visualização ao vivo no Xcode
- Multiplataforma (iOS, macOS, watchOS, tvOS)
- Atualizações de UI orientadas ao estado
- Animações integradas
Raridade: Muito Comum Dificuldade: Fácil
13. Explique @State, @Binding e @ObservedObject em SwiftUI.
Resposta: Estes são property wrappers para gerenciar o estado no SwiftUI:
@State: Estado privado pertencente à view. Quando ele muda, a view é renderizada novamente.@Binding: Cria uma conexão bidirecional com uma propriedade@Statepertencente a uma view pai.@ObservedObject: Referencia um objeto externo (classe em conformidade comObservableObject). A view é atualizada quando as propriedades@Publisheddo objeto são alteradas.
Raridade: Comum Dificuldade: Média
14. Como você cria uma lista em SwiftUI?
Resposta:
Use a view List para exibir coleções de dados roláveis.
Raridade: Comum Dificuldade: Fácil
15. O que são View Modifiers em SwiftUI?
Resposta: View modifiers são métodos que criam uma nova view com propriedades modificadas. Eles são encadeáveis.
- Modificadores Comuns:
.padding(),.background(),.foregroundColor(),.font(),.frame() - Ordem Importa: Os modificadores são aplicados em sequência
Raridade: Comum Dificuldade: Fácil
Dados e Networking (5 Perguntas)
16. Como você faz uma solicitação de rede no iOS?
Resposta:
Use URLSession para tarefas de networking.
Raridade: Muito Comum Dificuldade: Média
17. O que é Codable em Swift?
Resposta:
Codable é um alias de tipo para os protocolos Encodable & Decodable. Ele permite a conversão fácil entre tipos Swift e representações externas como JSON.
- Síntese Automática: Swift gera automaticamente o código de codificação/decodificação se todas as propriedades forem Codable.
- Chaves Personalizadas: Use o enum
CodingKeyspara mapear diferentes nomes de propriedades.
Raridade: Muito Comum Dificuldade: Fácil
18. Como você persiste dados localmente no iOS?
Resposta: Várias opções para persistência de dados local:
- UserDefaults: Armazenamento simples de chave-valor para pequenas quantidades de dados (configurações, preferências)
- File System: Salve arquivos no diretório Documents ou Cache
- Core Data: O framework da Apple para gerenciamento e persistência de gráficos de objetos
- SQLite: Banco de dados relacional
- Keychain: Armazenamento seguro para dados confidenciais (senhas, tokens)
Raridade: Muito Comum Dificuldade: Fácil
19. Qual é a diferença entre operações síncronas e assíncronas?
Resposta:
- Síncrono: Bloqueia a thread atual até que a operação seja concluída. Pode congelar a UI se executado na thread principal.
- Assíncrono: Não bloqueia a thread. A operação é executada em segundo plano e um completion handler é chamado quando concluído.
- Main Thread: As atualizações da UI devem acontecer na thread principal. Use
DispatchQueue.main.asyncpara mudar para a thread principal.
Raridade: Comum Dificuldade: Fácil
20. O que é Grand Central Dispatch (GCD)?
Resposta: GCD é a API de baixo nível da Apple para gerenciar operações simultâneas.
- Dispatch Queues: Filas FIFO que executam tarefas serialmente ou simultaneamente
- Main Queue: Fila serial para atualizações da UI
- Global Queues: Filas simultâneas com diferentes prioridades (background, utility, userInitiated)
Raridade: Comum Dificuldade: Média


