Questões para entrevista de profissionais Front-end
Este repositório contém uma série de perguntas para entrevista de profissionais de front-end que podem ser usadas para avaliar os candidatos. Não é recomendado de maneira alguma usar todas as perguntas aqui no mesmo candidato (que levaria horas). A escolha de alguns itens dessa lista deverá ajudar a identificar as habilidades requeridas do candidato.
O artigo Baseline For Front-End Developers de Rebecca Murphey é também uma ótima fonte para ler antes de entrevistar um candidato.
Note: Tenha em mente que muitas destas questões estão em aberto e poderia levar a discussões interessantes que dizem mais sobre as capacidades do candidato do que a resposta em si.
- Questões Gerais
- Questões de HTML
- Questões de CSS
- Questões de JS
- Questões de Acessibilidade(external link)
- Questões sobre Teste
- Questões de Performance
- Questões de Rede
- Questões de Código
- Questões Divertidas
A maiorida das questões foram retiradas de um _thread_da oksoclap originalmente criada por Paul Irish (@paul_irish) e com a contribuição das seguintes pessoas: @bentruyman @cowboy @ajpiano @SlexAxton @boazsender @miketaylr @vladikoff @gf3 @jon_neal @sambreed @iansym
- O que você aprendeu ontem / esta semana?
- O que te anima ou te interessa em programação?
- Qual foi um desafio tecnico que teve recentemente e como o resolveu?
- Quando construindo um novo site ou mantendo um existente, pode explicar algumas das tecnicas que usou para aumentar a performance?
- Pode descrever algumas melhores práticas ou metodologias de SEO que usou recentemente?
- Pode explicar metodologias comuns ou problemas que resolveu recentemente em termos de seguranca em front-end?
- Que acções tomou pessoalmente em projetos recentes para aumentar a manutenibilidade do código?
- Fale sobre seu ambiente de desenvolvimento preferido.
- Com quais sistemas de controle de versão você é familiar?
- Descreva seu processo quando cria uma página web.
- Se você tivesse 5 diferentes arquivos de folhas de estilo, qual seria a melhor forma de integrá-los no site?
- Descreva a diferença entre progressive enhancement and graceful degradation.
- Como você pode otimizar os recursos de um site?
- Quantos recursos um navegador pode baixar, simultaneamente, de um determinado domínio?
- Descreva 3 formas de diminuir o page load (tempo de carregamento real ou percebido)
- Se você caísse em um projeto que as pessoas usam tabs para indentação e você usa espaços, o que você faria?
- Descreva como criaria uma simples página com um slideshow
- Se você pudesse dominar uma tecnologia este ano, qual seria?
- Explique a importância de normas e órgãos normativos.
- O que é Flash of Unstyled Content? Como você evita FOUC?
- Explique o que são ARIA e leitores de tela, e como fazer um site de web acessivel.
- Explique alguns contras e a favor de usar animações em CSS em vez de Javascript.
- O que significa CORS e qual é o problema que resolve?
- Como resolveria um desentendimento com um patrão ou colega?
- Que recursos usa para aprender sobre as tendencias em desenvolvimento front-end e design?
- Quais so as qualificações necessarias para ser um bom programador de front-end?
- Em que cargo você se vê?
- Explique a diferença entre cookies, session storage e local storage.
- Qual é a função de
doctype? - Como se serve uma página com conteúdo em múltiplos idiomas?
- Que tipo de coisas que você deve tomar cuidado ao desenvolver um website multi-língua?
- Quais são os benefícios em utilizar o atributo
data-? - Considere o HTML5 como uma plataforma web aberta. Quais são os blocos de construção de HTML5?
- Descreva a diferença entre
cookie, sessionStorage e localStorage. - Descreva a diferença entre
<script>, <script async> e <scrypt defer>. - Porque é, geralmente, uma boa ideia colocar os
<link> CSS entre <head></head> e JS <script> diretamente antes de </body>? Conhece exceções? - O que é progressive rendering?
- Porque usaria um atributo
srcset numa tag imagem? Explique o processo que o navegador usa quando avalia o atributo. - Utilisou diferentes linguagens de HTML templating?
- Qual é a diferença entre
canvas e svg? - O que são elementos vazios (elementos nulos) em HTML?
- O que é a especificidade de um seletor CSS e como funciona?
- Qual é a diferenca entre resetting e normalizing em CSS? Qual escolheria e por quê?
- Descreva floats e como funcionam.
- Descreva z-index e como o empilhamento do contexto é formado.
- Descreva BFC (Block Formatting Context) e como funciona.
- Quais são as várias técnicas para clearing e quais delas são apropriadas para que contexto?
- Qual seria a sua abordagem para resolver problemas de estilo relacionados com browsers diferentes?
- Como desenvolve uma página para navegadores com recursos limitados?
- Quais técnicas/processos que usa?
- Quais são as diferentes formas de utilizar conteúdo escondido (e como fazer para deixá-los disponíveis apenas para leitores de tela?)
- Já utilizou algum sistema de grid, se sim, qual você prefere?
- Já utilizou ou implementou media queries ou CSSs específicos para mobile?
- Qual é sua familiaridade com estilos em SVG?
- Consegue dar um exemplo de de uma propriedade
@media que não seja screen? - Quais são algumas técnicas para escrever CSS eficiente?
- Quais são as vantagens/desvantagens de usar pré-processadores CSS?
- Descreva o que você gostou e o que não gostou com de pré-processadores que usou.
- Como você implementaria um website que não utilizaria fontes padrões?
- Explique como um navegador determina quais os elementos que correspondem a um seletor CSS.
- Descreva pseudo-elementos e como são utilizados.
- Explique o que você entende sobre box model e como você poderia dizer para o navegador en CSS para renderizar seu layout em diferentes box models.
- O que
* { box-sizing: border-box; } faz? Quais são as vantagens? - Qual é a função da propriedade
display? Dê alguns exemplos de como pode ser usada. - Qual é a diferença entre
inline e inline-block? - Qual é a diferença entre seletores
nth-of-type() e nth-child()? - Qual é a diferença entre elementos posicionados de forma relativa, fixa, absoluta e estática (
relative, fixed, absolute and static)? - Quais frameworks CSS você tem usado localmente ou em produção?
- Como você mudaria/melhoraria ele(s)?
- Alguma vez usou CSS Grid?
- Explique a diferença entre desenvolver um site para ser responsivo ou usando uma tática Mobile First?
- Você já trabalhou com gráficos retina? Se sim, quando e quais técnicas você usou?
- Qual a razão porque usaria
translate() em vez de absolute positioning, ou vice-versa? Por quê? - O que é a propriedade de CSS
clearfix e como é usada? - Explique a diferença entre px, em e rem relacionados com o tamanho da fonte.
- Pode dar um exemplo de uma pseudo class? Pode dar um exemplo de como é utilizada?
- Qual é a diferença entre elementos block level e elementos inline. Pode dar exemplos de cada tipo de elemento?
- Explique a delegação de eventos (event delegation).
- Explique como
this funciona em JavaScript.- Dê um exemplo de como o uso de
this mudou com ES6.
- Explique como funciona herança prototípica.
- Qual a diferença entre uma variável
null, undefined ou undeclared?- Como verificar esses estados?
- O que é uma closure, e como/por que você usaria uma?
- Que construções da linguagem javascript se usa para iterar por propridades de um objeto ou elementos de um array?
- Descreva a diferença principal entre os metodos
Array.forEach() e Array.map(). Por que usaria um em vez do outro? - Qual o caso de uso típico para funções anônimas?
- Qual a diferença entre objetos herdados e objetos nativos?
- Qual a diferença entre:
function Person(){}, var person = Person(), e var person = new Person()? - Quais são as diferenças do uso de
foo entre function foo() {} e var foo = function() {} - Explique como funciona
Function.call e Function.apply? Qual a diferença mais importante? - Explique
Function.prototype.bind. - Qual a diferença entre feature detection, feature inference, e o uso de UA string?
- Explique o que é hoisting.
- Descreva o que é borbulhar do evento (event bubbling).
- Descreva o que é captura do evento (event capturing).
- Qual a diferença entre um “atributo” e uma “propriedade”?
- Quais são os pros e contras da extensão de objetos nativos em Javascript?
- Qual a diferença entre
== e ===? - Explique a política de same-origin em relação a Javascript.
- Porque é chamado um operador condicional ternário, o que a palavra “ternário” indica?
- O que é o
"use strict";? Quais a vantagens e desvantagens de sua utilização? - Quais as vantagens a desvantages de escrever código Javascript numa linguagem que é compilada para Javascript?
- Que instrumentos e técnicas usa para depurar código Javascript?
- Explique a diferença entre objetos mutáveis e imutáveis.
- Dê um exemplo de um objeto imutável em Javascript
- Quais são os pros e contras da imutabilidade?
- Como consegue desenvolver imutabilidade no seu código?
- Explique a diferença entre funções síncronas e assíncronas.
- O que é o loop de eventos?
- Qual a diferença entre a pilha de chamadas (call stack) e a fila de chamadas (stack queue)?
- Quais as diferenças entre variáveis criadas usando o
let, var ou const? - Quais as diferenças entre uma classe em ES6 e construtores de função em ES5?
- Dê um exemplo do uso para a sintaxe das funções de seta
=>? Como a nova sintaxe difere de outras funções? - Qual a vantagem de usar a sintaxe de seta para o metodo em um construtor?
- Qual é a definição de uma função de ordem superior?
- Dê um exemplo de desestruturação de um objeto ou array.
- Dê um exemplo da geração de uma string usando Template Literals em ES6.
- Dê um exemplo de uma curry function e as vantagens da sintaxe?
- Quais os benificios de usar
spread syntax e quais as diferencas com rest syntax? - Como partilhar código entre ficheiros?
- Qual a razão para criar membros de classe estáticos?
- Qual a diferenca entre loops
while e do-while em JavaScript? - O que é uma promise? Onde, e como usaria uma promise?
Questões de código
duplicate([1,2,3,4,5]);
- Crie um loop for que itere até
100 enquanto retorna fizz em múltiplos de 3, buzz em múltiplos de 5 e fizzbuzz em múltiplos de 3 e 5. - O que será retornado de cada um desses?
console.log("hello" || "world")
+console.log("foo" && "bar")
- Escreva uma função de invocação imediata (IIFE - Immediately Invoked Function Expression)
- Quais são algumas vantagens / desvantagens de testar seu código?
- Que ferramentas usaria para testar a funcionalidade do seu código?
- Qual é a diferença entre um teste de unidade e um teste funcional / de integração?
- Qual é a finalidade de uma ferramenta de linting de estilo de código?
- Quais são algumas das práticas recomendadas para efetuar testes?
- Que ferramentas você usaria para encontrar um bug de performance em seu código?
- Quais são algumas maneiras de melhorar o desempenho de rolagem do seu site?
- Explique a diferença entre layout, pintura e composição.
- Tipicamente, porque é melhor servir os assets do site de multiplos dominios?
- Descreva o processo do momento em que digita o URL de um site até ele ser carregado na tela.
- Quais as diferenças entre Long-Polling, Websockets e Server-Sent Events?
- Explique os seguintes cabeçalhos de solicitação e resposta:
- Diferença entre Expires, Date, Age e If-Modified
- Do Not Track
- Cache-Control
- Transfer-Encoding
- ETag
- X-Frame-Options
- O que são métodos HTTP? Liste e explique os métodos HTTP que conhece.
- O que é pré-busca (prefetching) de domínio e como isso ajuda na performance?
- O que é um CDN e qual é a sua vantagem?
Questão: Qual é o valor de foo?
var foo = 10 + '20';
Questão: Qual o retorno do código abaixo?
console.log(0.1 + 0.2 == 0.3);
Questão: Como você faria isso funcionar?
add(2, 5);
+add(2)(5);
Questão: Qual valor é retornado da seguinte declaração?
"sou uma lasanha".split("").reverse().join("");
Questão: Qual é o valor de window.foo?
( window.foo || ( window.foo = "bar" ) );
Questão: Qual o retorno dos dois alerts abaixo?
var foo = "Hello";
+(function() {
+ var bar = " World";
+ alert(foo + bar);
+})();
+alert(foo + bar);
Questão: Qual o valor de foo.length?
var foo = [];
+foo.push(1);
+foo.push(2);
Questão: Qual o valor d foo.x?
var foo = {n: 1};
+var bar = foo;
+foo.x = foo = {n: 2};
Questão: O que o código abaixo imprime na tela?
console.log('one');
+setTimeout(function() {
+ console.log('two');
+}, 0);
+Promise.resolve().then(function() {
+ console.log('three');
+})
+console.log('four');
Questão: Qual a diferença entra essas quatro promessas?
doSomething().then(function () {
+ return doSomethingElse();
+});
+
+doSomething().then(function () {
+ doSomethingElse();
+});
+
+doSomething().then(doSomethingElse());
+
+doSomething().then(doSomethingElse);
Questão: Qual será a saída do código abaixo para o console e por quê?
(function(){
+ var a = b = 3;
+})();
+
+console.log("a defined? " + (typeof a !== 'undefined'));
+console.log("b defined? " + (typeof b !== 'undefined'));
Questão: Considere as duas funções abaixo. Ambos retornarão a mesma coisa? Por que ou por que não?
function foo1()
+{
+ return {
+ bar: "hello"
+ };
+}
+
+function foo2()
+{
+ return
+ {
+ bar: "hello"
+ };
+}
- Qual a coisa mais legal que você desenvolveu recentement? Qual você ficou mais orgulhoso?
- Quais suas partes favoritas sobre as ferramentas de desenvolvimento que você usa?
- Você teve algum projeto prediletos? Qual tipo?
- Qual sua feature favorita do Internet Explorer?
Lançado sobre a Licença MIT. Veja o arquivo LICENSE para detalhes.