25 perguntas · iOS
Perguntas de entrevista para Desenvolvedor iOS
Perguntas para entrevistar desenvolvedores iOS: Swift, ARC e retain cycles, ciclo de vida do view controller, SwiftUI e concorrência moderna. Para separar quem monta uma tela de quem publica na App Store apps estáveis e sem vazamento de memória.
Entrevistar bem um desenvolvedor iOS é ir além de "sabe montar uma tela" e chegar a "entende o runtime, o modelo de memória e os paradigmas de UI da Apple". O tema mais revelador é gerenciamento de memória. O iOS usa contagem automática de referências (ARC), não garbage collector, então a pessoa precisa entender de verdade referências strong, weak e unowned e explicar como um retain cycle se forma. Um view controller que guarda uma closure que captura self de forma forte é o vazamento clássico, e quem não o enxerga vai publicar apps que incham de memória.
Além do ARC, você quer fluência em Swift: optionals e desempacotamento seguro, semântica de valor versus referência com structs e classes, protocolos e design orientado a protocolos, e generics. A história de UI está em transição, então bons candidatos trabalham tanto no UIKit, com o ciclo de vida do view controller e o padrão delegate, quanto no modelo declarativo e orientado a estado do SwiftUI, e explicam os trade-offs.
A concorrência também se modernizou: async/await e actors substituíram em grande parte o malabarismo manual com GCD, e você quer ouvir que o candidato tira o trabalho da main thread sem criar data races. As perguntas abaixo vão dos fundamentos de Swift à memória e ao ciclo de vida, e depois à UI, concorrência e arquitetura. Combine duas perguntas de Swift com uma conversa sobre retain cycle e um cenário de "o app está lento ou vazando memória", e você vai saber rápido se a pessoa já publicou e manteve um app iOS de verdade.
Fundamentos de Swift7 perguntas
O que é um optional e quais são as formas seguras de desempacotá-lo?
O que observar: if let, guard let, optional chaining e ??, e a noção de que o desempacotamento forçado é um crash à espera de acontecer.
Qual a diferença entre struct e class, e quando você usa cada uma?
O que observar: Tipo por valor versus por referência, herança só em classes, e struct como escolha padrão em Swift.
Explique semântica de valor versus semântica de referência com um exemplo concreto.
O que observar: Exemplo de cópia independente versus duas variáveis apontando para o mesmo objeto, e noção de copy-on-write.
O que é programação orientada a protocolos e em que ela difere da herança clássica?
O que observar: Composição por protocolos com extensões e implementações padrão, funcionando também com structs.
Qual a diferença entre let e var, e o que significa mutating num método de struct?
O que observar: Constante versus variável, e mutating permitindo ao método alterar a própria struct.
Como funcionam os generics em Swift e quando você os usou?
O que observar: Código reutilizável com segurança de tipos, restrições com protocolos e um exemplo real.
Qual a diferença entre map, compactMap e flatMap?
O que observar: Transformar, transformar descartando nils, e achatar coleções aninhadas.
Memória e ARC6 perguntas
Como funciona a contagem automática de referências e em que ela difere de garbage collection?
O que observar: Contagem de referências fortes com liberação determinística, sem coletor rodando, e por isso ciclos não são resolvidos sozinhos.
Explique referências strong, weak e unowned e quando usar cada uma.
O que observar: Strong mantém vivo, weak é opcional e vira nil, unowned assume que o objeto vive mais e quebra se não viver.
Mostre como um retain cycle se forma com uma closure que captura self e como você o quebra.
O que observar: Objeto guarda a closure, a closure captura self de forma forte, e a solução com [weak self] na capture list.
O que é uma capture list e por que é tão comum escrever [weak self] numa closure?
O que observar: Controle de como valores são capturados, e a noção de que nem toda closure precisa de weak self, por exemplo as que não escapam.
Como você encontraria um vazamento de memória num app iOS em execução?
O que observar: Instruments (Leaks, Allocations), Memory Graph Debugger do Xcode e checar se o deinit é chamado.
Quando você usaria unowned em vez de weak, e qual é o risco?
O que observar: Quando o outro objeto certamente vive pelo menos o mesmo tempo, com risco de crash se essa premissa falhar.
UIKit, SwiftUI e ciclo de vida6 perguntas
Explique o ciclo de vida do view controller: viewDidLoad, viewWillAppear e os demais.
O que observar: Ordem correta e o que fazer em cada um: configuração única no viewDidLoad, atualizações a cada exibição no viewWillAppear.
O que é o padrão delegate e por que ele é tão comum no UIKit?
O que observar: Um objeto delega decisões ou eventos a outro via protocolo, com a referência ao delegate declarada weak.
O que muda no seu modelo mental ao passar do UIKit para o SwiftUI?
O que observar: De manipular views de forma imperativa para descrever a UI em função do estado.
O que são @State, @Binding e @ObservedObject no SwiftUI e quando você usa cada um?
O que observar: Estado local, referência ao estado de outra view e objeto externo observável, com noção de @StateObject para quem cria o objeto.
Como funciona o Auto Layout e como você depura uma constraint quebrada?
O que observar: Constraints que definem posição e tamanho, leitura do log de conflitos e o View Debugger do Xcode.
Como você reutiliza células numa table view ou collection view sem bugs de exibição?
O que observar: dequeueReusableCell, resetar o estado no prepareForReuse e cuidado com imagens carregadas de forma assíncrona.
Concorrência, arquitetura e performance6 perguntas
O que async/await e actors oferecem em relação ao trabalho manual com GCD e DispatchQueue?
O que observar: Código assíncrono legível e actors isolando estado mutável, com o compilador ajudando a evitar data races.
Por que as atualizações de UI precisam acontecer na main thread e como você volta para ela?
O que observar: UIKit não é thread-safe; uso de @MainActor ou DispatchQueue.main.
O que é uma data race e como a concorrência do Swift ajuda a evitá-la?
O que observar: Acesso simultâneo com escrita sem sincronização, e actors e checagem de Sendable como proteção.
Explique MVVM no iOS e como ele melhora a testabilidade em relação a view controllers gigantes.
O que observar: Lógica de apresentação no ViewModel, testável sem UI, e o view controller só ligando dados à view.
Como você persiste dados? Quando usaria UserDefaults, Core Data ou um arquivo?
O que observar: UserDefaults para preferências pequenas, Core Data ou SwiftData para dados estruturados e consultas, arquivos para blobs, e Keychain para segredos.
Um app parece lento na abertura e na rolagem. Como você diagnostica e corrige?
O que observar: Medir com Instruments (Time Profiler), adiar trabalho da abertura, tirar processamento da main thread e otimizar imagens e células.
Dicas para a entrevista de Desenvolvedor iOS
- Conduza a conversa para gerenciamento de memória. ARC e retain cycles separam desenvolvedores iOS reais de seguidores de tutorial mais rápido do que qualquer outro tema.
- Valorize quem usa [weak self] e explica exatamente por quê, e não só por reflexo.
- Confira se a pessoa tira o trabalho da main thread e entende por que a UI precisa rodar nela.
- Pergunte sobre UIKit e SwiftUI. A maioria das bases de código reais mistura os dois, e a consciência dos trade-offs importa.
- Peça um problema real de performance ou crash que a pessoa corrigiu num aparelho, não uma história sobre um app de exemplo.
- Não dê peso demais à API mais nova do SwiftUI. Fundamentos de Swift e de memória importam muito mais.
FAQ
Perguntas frequentes
Quais habilidades um desenvolvedor iOS precisa ter?
Swift sólido, incluindo optionals e semântica de valor, domínio real de ARC e retain cycles, conforto com o ciclo de vida do view controller e com UIKit e SwiftUI, concorrência moderna com async/await e uma arquitetura como MVVM que mantenha os view controllers enxutos e testáveis.
Como as perguntas mudam entre iOS júnior e sênior?
O júnior constrói uma tela que funciona. O sênior aponta onde um retain cycle se forma, tira o trabalho da main thread, raciocina sobre estado no SwiftUI e cita problemas de memória ou performance que corrigiu num app publicado.
Devo testar UIKit ou SwiftUI?
Os dois. O SwiftUI é o caminho, mas a maioria dos apps em produção ainda tem UIKit. Um bom candidato trabalha com ambos e explica os trade-offs; dê mais peso ao que o seu app de fato usa.
Vale aplicar um desafio técnico para iOS?
Sim. Uma funcionalidade pequena com uma chamada de rede assíncrona e cuidado com memória, ou a correção de um vazamento num app de exemplo, revela os hábitos reais. Combine o desafio com estas perguntas para avaliar o julgamento de arquitetura.
Como triar candidatos a desenvolvedor iOS antes da entrevista?
Use perguntas de triagem na candidatura ou um teste curto de habilidades para filtrar quem entende de verdade Swift e gerenciamento de memória antes de gastar tempo de entrevista. Na Hireaan, as perguntas de triagem, os testes de habilidades e o ranking com IA ajudam a ver primeiro os candidatos mais fortes.
Mais bancos de perguntas de entrevista
- Java júniorPerguntas para Desenvolvedor Java júniorSaiba mais
- Java sêniorPerguntas para Desenvolvedor Java sêniorSaiba mais
- JavaScriptPerguntas para Desenvolvedor JavaScriptSaiba mais
- Node.jsPerguntas para Desenvolvedor Node.jsSaiba mais
- PHP / LaravelPerguntas para Desenvolvedor PHP / LaravelSaiba mais
- Python júniorPerguntas para Desenvolvedor Python júniorSaiba mais
Abriu a vaga de Desenvolvedor iOS? Rode o processo na Hireaan.
A IA ranqueia os candidatos, você agenda as entrevistas, aplica testes de habilidades e envia a proposta, com um preço fixo para o time inteiro.
- 14 dias grátis
- Sem cartão de crédito
- Cancele quando quiser
- Conforme a LGPD
