Pergunta de entrevista para Desenvolvedor Frontend

Duas regras miram o mesmo elemento e definem a mesma propriedade. Como o navegador decide qual vence?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

O navegador resolve nesta ordem: origem e importância primeiro, depois cascade layers, depois especificidade, depois ordem no documento. Estilos inline vencem regras normais do autor, e uma declaração important inverte a ordem de origem, então uma regra important do usuário ou do user agent pode vencer uma regra important do autor. Dentro de uma layer, a especificidade conta id, depois classe, atributo e pseudo classe, depois seletores de elemento. Empates vão para a regra que vem por último.

Por que os entrevistadores perguntam isso

Bugs de CSS em escala são bugs de cascata, não de sintaxe. O entrevistador checa se você consegue raciocinar sobre um conflito de especificidade em vez de adicionar mais um important e seguir em frente. Citar cascade layers mostra que você acompanhou como codebases modernos isolam estilos de terceiros e classes utilitárias. Isso também abre a porta para como você estruturaria o CSS para esses conflitos pararem de aparecer.

Como estruturar sua resposta

  • Liste a ordem de resolução antes de falar de números de especificidade.
  • Explique especificidade como três baldes, não como uma pontuação única.
  • Diga onde as cascade layers ficam e por que ajudam.
  • Dê a sua regra para quando important é aceitável.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Penso nisso como uma sequência de critérios de desempate. Primeiro o navegador olha origem e importância, então um estilo inline vence uma regra de folha de estilo e uma declaração important muda a ordenação inteira. Depois cascade layers, que é a parte que as pessoas esquecem: uma regra fora de layer vence qualquer coisa dentro de uma layer, por mais específica que a regra na layer seja, e layers posteriores vencem as anteriores. Só depois disso ele compara especificidade, e são três baldes, ids, depois classes, atributos e pseudo classes, depois seletores de elemento, comparados da esquerda para a direita, então um único id vence qualquer quantidade de classes. Se tudo empatar, vence o último na ordem do documento. Na prática eu uso layers para deixar isso sem graça. Coloco reset numa primeira layer, depois terceiros, depois componentes, e utilitários por último, então uma classe utilitária sempre vence sem precisar de important. O único lugar em que ainda uso important é uma regra genuinamente inegociável, normalmente algo dentro de uma folha de estilo de impressão.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • O que a pseudo classe where faz com a especificidade, e por que isso é útil?
  • Como as cascade layers interagem com declarações important?
  • Como você depuraria uma regra que parece que deveria se aplicar mas não se aplica?

Mais perguntas para Desenvolvedor Frontend

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot