P
prepair.app
Começar entrevista →
EnglishУкраїнськаРусскийDeutsch
🅰️

Perguntas de entrevista Angular

Entrevistas de Angular cobrem dependency injection, RxJS, change detection, e TypeScript — o framework é opinativo, então as perguntas testam se você entende sua maquinaria. Aqui estão as mais comuns com respostas modelo.

Junior · sem experiência / menos de 1 anoMiddle · 2–4 anos de experiênciaSenior · 5+ anos de experiência

O que perguntam

Dependency Injection
RxJS e Observables
Change Detection
Módulos e componentes
Formulários reativos
TypeScript

8 perguntas reais com respostas

Cada pergunta vem com uma resposta modelo para você comparar com a sua.

1

Como funciona Dependency Injection no Angular? O que são providers?

Resposta

O Angular tem uma árvore hierárquica de injectors: uma solicitação de uma dependência sobe do injector do componente até a raiz. Um provider diz ao injector como criar o token — useClass, useValue, useFactory, ou useExisting. Prover um serviço em root dá um singleton para toda a app; prová-lo em um componente cria uma instância nova por instância de componente, o que é como você limita estado a uma feature.

2

Qual é a diferença entre um Observable e uma Promise?

Resposta

Uma Promise é um único valor futuro que começa a executar imediatamente e não pode ser cancelada. Um Observable é um stream de zero ou mais valores, é lazy até ser assinado, pode ser cancelado ao se desinscrever, e pode ser transformado com operadores como debounce, retry, ou switchMap. Para chamadas HTTP o benefício prático é o cancelamento — um typeahead pode descartar o request anterior quando o usuário continua digitando.

3

Explique change detection. Em que OnPush difere de Default?

Resposta

Change detection percorre a árvore de componentes depois de eventos, timers, ou respostas HTTP e re-renderiza qualquer binding que mudou. Default verifica cada componente a cada ciclo. OnPush verifica um componente só quando uma referência de input muda, um evento dispara dentro dele, ou um async pipe emite — por isso OnPush exige dados imutáveis: mutar um objeto in place não muda sua referência e a view não vai atualizar.

4

O que são map, switchMap e mergeMap? Qual é a diferença?

Resposta

map transforma cada valor emitido. switchMap e mergeMap achatam um observable interno: switchMap cancela a assinatura interna anterior quando chega um valor novo, mergeMap roda todas concorrentemente. Use switchMap para busca ou navegação onde só importa o último resultado, mergeMap quando cada request deve completar — e concatMap quando a ordem importa.

5

O que é ngOnInit e em que difere do constructor?

Resposta

O constructor roda quando a classe é instanciada, antes de o Angular ter setado qualquer binding de input, então os inputs ainda são undefined ali. ngOnInit roda depois da primeira passagem de binding, por isso a inicialização que depende de inputs pertence ali. A convenção é que constructors só recebem dependências injetadas e ngOnInit faz o trabalho real de setup.

6

Qual é a diferença entre formulários template-driven e reactive?

Resposta

Formulários template-driven constroem o modelo implicitamente a partir de diretivas no template e servem bem para casos simples. Formulários reactive definem um FormGroup na classe do componente, o que torna validação, controles dinâmicos e testes explícitos e type-safe. Reactive é a recomendação padrão para qualquer coisa além de um login, porque o estado do formulário vive em código onde você pode raciocinar sobre ele.

7

Como você evita vazamentos de memória com Observables?

Resposta

Uma assinatura que nunca é fechada mantém vivo seu callback e escopo capturado depois que o componente é destruído. A solução mais limpa é o async pipe, que assina e desassina automaticamente. Caso contrário, use takeUntilDestroyed, ou colete assinaturas e desinscreva-se em ngOnDestroy — a falha comum é um stream de longa duração como um evento de router ou um websocket.

8

O que é um pipe? Como você cria um personalizado?

Resposta

Um pipe transforma um valor para exibição em um template, mantendo a formatação fora da classe do componente. Você cria um com o decorator @Pipe e um método transform. Pipes são puros por padrão, o que significa que o Angular só os reavalia quando a referência do input muda, o que os mantém baratos — marcar um pipe como impuro faz ele rodar a cada ciclo de change detection e deveria ser o último recurso.

🦎

Só ler as respostas não basta

Numa entrevista de verdade você fala sob pressão. O Cam faz essas mesmas perguntas, avalia cada resposta e mostra exatamente o que melhorar.

Praticar entrevista de Angular Frontend →
Grátis · 3 entrevistas por mês

Vale a pena ler

Todos os artigos →

Outras especializações

🔍QA Manual🤖QA AutomationJava Backend🐍Python Backend🐘PHP Backend🦫Go Backend🟢Node.js Backend💎Ruby on Rails🔷C++🟨JavaScript⚛️React Frontend💚Vue FrontendNext.js🍏iOS (Swift)🟩Android (Kotlin)⚙️DevOps / SRE🗄️Data Engineer📈Business Analyst🎯Product Manager📋Project Manager🎨UI/UX Designer📣Marketing