Update all sections

This commit is contained in:
everblut 2015-10-18 18:37:22 -05:00
parent a6f8e7d605
commit bb43237b41
1 changed files with 148 additions and 72 deletions

View File

@ -1,15 +1,18 @@
#GUIA DE PREGUNTAS PARA ENTREVISTAS DE TRABAJO
# GUIA DE PREGUNTAS PARA ENTREVISTAS DE TRABAJO
Este repositorio contiene preguntas de entrevistas a programadores front-end, que pueden ser usadas para revisar a candidatos potenciales. Bajo ningún concepto se recomienda usar todas las preguntas aquí expuestas con el mismo candidato (eso llevaría horas). Escoger algunos elementos de esta lista debería ayudarle a revisar las habilidades que requiere.
**Nota:** Tenga en mente que muchas de estas preguntas son abiertas y pueden llevar a interesantes discusiones que le pueden decir más sobre las capacidades de la persona que una simple respuesta.
## Índice
## Indice
1. [Preguntas generales](#general)
1. [Preguntas específicas de HTML](#html)
1. [Preguntas específicas de CSS](#css)
1. [Preguntas específicas de JavaScript](#js)
1. [Preguntas sobre pruebas de código](#testing)
1. [Preguntas sobre rendimiento](#performance)
1. [Preguntas sobre conectividad](#network)
1. [Preguntas de código](#codigojs)
1. [Preguntas divertidas](#divertidas)
@ -19,137 +22,193 @@ Este repositorio contiene preguntas de entrevistas a programadores front-end, qu
1. [Cómo contribuir](https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/CONTRIBUTING.md)
1. [Licencia](https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/LICENSE.md)
####<a name='general'>Preguntas generales:</a>
#### <a name='general'>Preguntas generales:</a>
* ¿Qué haz aprendido en esta semana?
* ¿Qué es lo que te interesa de la programación?
* ¿Podría describir algún problema técnico que haya resuelto recientemente?
* ¿Cuales son las consideraciones del área de interfaces, rendimiento, posicionamiento, mantenimiento o seguridad que toma en cuenta al desarrollar sitios o aplicaciones web?
* Hable acerca de su ambiente de desarrollo preferido.
* ¿Qué sistemas de control de versiones ha usado?
* ¿Cuál es su ambiente de desarrollo favorito?
* ¿Puede describir el proceso que sigue cuando crea una página web?
* Si tuviera cinco hojas de estilo distintas, ¿cómo las integraría a su página web?
* ¿Puede describir la diferencia entre "Progressive Enhancement" y "Graceful Degradation"?
* Puntos extra si el entrevistado menciona "detección de capacidades".
* Explique qué significa "HTML Semántico".
* ¿Cuál es el navegador que utiliza principalmente para el desarrollo y qué herramientas de desarrollo usa?
* ¿Cómo optimiza los recursos de una web?
* ¿Por qué es mejor utilizar varios dominios para distribuir los recursos de una página web?
* ¿Cuántos recursos se pueden descargar simultáneamente de un mismo dominio?
* ¿Cómo optimizaría los recursos de un sitio web?
* ¿Cuántos recursos se pueden descargar simultáneamente de un mismo dominio?
* ¿Cuáles son las excepciones?
* Mencione tres formas para disminuir el tiempo de carga de una página (tiempo real o percibido).
* Si se ha unido a un proyecto y los desarrolladores usan tabs y usted usa espacios, ¿qué hace?
* Escriba una página con una galería sencilla.
* ¿Qué herramientas usa para probar el rendimiento de su código?
* Describa como elaboraría una página con una galería sencilla.
* Si pudiera elegir una tecnología para dominar este año, ¿cuál sería?
* Explique la importancia de estándares y los grupos que los definen.
* ¿Sabe que es el FOUC? ¿Cómo lo evita?
* ¿Sabe que es el _Flash Of Unstyled Content_?, ¿cómo lo evita?
* Explique qué son las _Aplicaciones de internet enriquecidas y accesibles_ y los lectores de pantalla, además de como hacer una página web accesible
* Explique las ventajas y desventajas de usar animaciones en CSS contrario a usar animaciones hechas con JavaScript.
* ¿Qué significa _CORS_ y a qué problema está relacionado?
####<a name='html'>Preguntas específicas de HTML:</a>
* ¿Qué función cumple el `doctype` y cuántos puede nombrar?
* ¿Cuál es la diferencia entre el modo convencional y el "quirks mode"?
* ¿Cuáles son las limitaciones al utilizar páginas XHTML?
* ¿Hay algún problema al servir las páginas usando: `application/xhtml+xml`?
* ¿Cómo programaría una página con contenido en varios lenguajes?
* ¿Qué consideraciones se deben tener cuando se diseñan/desarrollan sitios multi-lenguajes?
#### <a name='html'>Preguntas específicas de HTML:</a>
* ¿Qué función cumple el `doctype` y cuántos tipos puede nombrar?
* ¿Cuál es la diferencia entre el modo convencional y el "_quirks mode_"?
* ¿Cuál es la diferencia entre HTML y XHTML?
* ¿Hay algún problema al servir las páginas usando: `application/xhtml+xml`?
* ¿Cómo presentaría una página con contenido en varios lenguajes?
* ¿Qué consideraciones se deben tener cuando se diseñan/desarrollan sitios multi-lenguajes?
* ¿Para qué son buenos los atributos `data-`?
* ¿Puede usar sintaxis de XHTML en HTML5?
* ¿Cómo usa XML en HTML5?
* ¿Para qué son buenos los atributos `data-`?
* ¿Cuáles son los modelos de contenido usados en HTML4? ¿Puede compararlos a los de HTML5?
* Si consideramos HTML5 como una plataforma web abierta, ¿cuáles son las piezas del lego que constituyen HTML5?
* Describa la diferencia entre cookies, sessionStorage y localStorage.
* Si consideramos HTML5 como una plataforma web abierta, ¿cuáles son los componentes que constituyen HTML5?
* Describa la diferencia entre `cookies`, `sessionStorage` y `localStorage`.
* Describa la diferencia entre `<script>`, `<script async>` y `<script defer>`.
* Generalmente, ¿por qué es una buena idea agregar la etiqueta `<link>` dentro de la etiqueta `<head>` y la etiqueta `<script>` justo antes de cerrar la etiqueta `<body>`. ¿Conoces algún caso excepcional?
* ¿Qué es el renderizado progresivo?
* ¿Haz usado algún motor para creado de plantillas HTML?
####<a name='css'>Preguntas específicas de CSS:</a>
* Describa qué es un archivo "reset" y por qué es útil.
#### <a name='css'>Preguntas específicas de CSS:</a>
* ¿Cuál es la diferencia entre clases e identificadores en CSS?
* ¿Cuál es la diferencia entre normalizar y anular el CSS?, ¿cuál usarías y por qué?
* Describa qué son los "floats" y su funcionamiento.
* ¿Cuáles son los métodos para "limpiar" (clear) sus "floats" y cuál es apropiado en el contexto dado?
* Describa el `z-index` y como se decide el contexto de apilado de elementos.
* Describa el contexto de formato de bloques (_BFC_) y como funciona.
* ¿Cuáles son las tecnicas para usar la propiedad `clear` y cuál funciona para cuál contexto?
* Explique ¿qué son los sprites en CSS y cómo los implementarias en una página?
* ¿Cuál es su técnica favorita para reemplazar imágenes y cuando usa cada una?
* ¿"CSS Hacks", archivos incluidos con etiquetas condicionales o algún otro metodo...?
* ¿Cómo intentaría resolver problemas de estilo para navegadores específicos?
* ¿Cuál es su enfoque al desarrollar páginas que dan soporte a navegadores con capacidades limitadas?
* ¿Qué técnicas o procesos usa?
* ¿Qué tecnicas o procesos usas?
* ¿Cuáles son las distintas formas para esconder contenido, pero mantenerlo disponible únicamente para lectores de pantalla?
* ¿Ha usado algún sistema para cuadrículas (grids) y cuál prefiere?
* ¿Ha usado o implementado "media queries" o reglas específicas para dispositivos móviles?
* ¿Está familiarizado con aplicar estilos a SVGs?
* ¿Cómo optimiza sus páginas para la impresión?
* ¿Cuáles son algunas de las "trampas" al escribir CSS eficiente?
* ¿Ha usado algún preprocesador para CSS?
* De ser así, ¿puede mencionar qué le gusta y qué no de los que ha usado?
* ¿Cuáles son algunos de los "trucos" para escribir CSS eficiente?
* Menciona las ventajas y desventajas de usar preprocesadores de CSS
* Menciona lo que te agrada y desagrada de los preprocesadores que usas.
* ¿Cómo implementaría un diseño que usa fuentes que no son web-safe?
* ¿Puede explicar cómo determina un navegador qué elementos coinciden con un selector de CSS?
* Describa los pseudo-elementos y discuta sus usos.
* ¿Puede explicar cómo entiende el `box model` (modelo de cajas) y como podría hacer que un navegador renderize su esquema usando diferentes modelos de cajas?
* ¿Qué sucede al usar `* { box-sizing: border-box; }`. ¿Qué desventajas supone su uso?
* Por favor enliste todos los valores para la propiedad `display` que pueda recordar
* ¿Cuál es la diferencia entre `inline` y `inline-block`?
* ¿Cuál es la diferencia entre las posiciones `relative`, `fixed`, `absolute` y `static` para un elemento dado?
* ¿Qué sabe sobre Css Flexbox y cuales son sus ventajas?
* La *C* en CSS significa _cascading_ (en cascada). ¿Cómo se determina la prioridad al asignar los estilos? ¿Cómo podemos aprovechar ese sistema?
* ¿Cuáles frameworks de CSS has usado en desarrollo y producción? ¿Cómo los mejoraria?
* ¿Qué sabe sobre CSS Flexbox y cuáles son sus ventajas?
* ¿En que difiere el diseño responsivo del diseño adaptativo?
* ¿Haz trabajado con tecnología retina?, ¿qué tecnicas usaste?
* ¿Hay alguna razón por la cuál preferirias usar `translate()` en vez de el posicionamiento absoluto? ¿Algúna razón para hacer lo contrario?
####<a name='js'>Preguntas específicas de JavaScript:</a>
* Explique "event delegation".
#### <a name='js'>Preguntas específicas de JavaScript:</a>
* Explique "_event delegation_".
* Explique cómo funciona `this` en JavaScript.
* Explique cómo funciona la herencia de prototipos (prototypal inheritance) en JavaScript.
* ¿Cómo realiza pruebas en JavaScript?
* AMD vs. CommonJS?
* ¿Qué bibliotecas de JavaScript ha usado?
* ¿Alguna vez ha mirado el código fuente de bibliotecas/frameworks que utiliza?
* ¿Qué es un `hashtable`?
* ¿Cuál es la diferencia entre variables `undefined` y variables `undeclared`?
* ¿Qué es un "closure" y cuando, o por qué usaría uno?
* ¿Cuál es su patrón favorito para crearlos? Cuadriculado (Solo aplica a las IIFEs)
* ¿Qué opina de AMD en comparación con CommonJS?
* Explique por qué `function foo(){ }();` no funciona como un IIFE.
* ¿Qué se necesita cambiar para que funcione como una IIFE?.
* ¿Cuál es la diferencia entre variables `null`, `undefined` y `undeclared`?
* ¿Cómo comprobarias que una variable refiere a algúno de esos valores?
* ¿Qué es un "_closure_" y cuando, o por qué usaría uno?
* ¿Puede hablar de un uso típico para una función anónima?
* ¿Puede explicar el Patrón Módulo en JavaScript y cuándo lo usaría?
* Puntos extra por mencionar un namespace no contaminado.
* ¿Qué pasa si sus módulos no tienen un namespace?
* ¿Cómo organiza su código, patrón módulo, herencia clásica?
* ¿Cuál es la diferencia entre objetos huésped (host objects) y objetos nativos?
* ¿Cuál es la diferencia entre:
` function Person(){} `, `var person = Person()` y `var person = new Person()`?
* ¿Cuál es la diferencia entre: ` function Person(){} `, `var person = Person()` y `var person = new Person()`?
* ¿Cuál es la diferencia entre `.call` y `.apply`?
* ¿Puede explicar el uso de `Function.prototype.bind`?
* ¿Cuándo optimiza su código?
* ¿Puede explicar cómo funciona la herencia en JavaScript?
* ¿Cuándo usarías `document.write()`?
* ¿Cuál es la diferencia entre detección de capacidades, inferencia de capacidades y usar la cadena del user agent.
* ¿Cuál es la diferencia entre detección de capacidades, inferencia de capacidades y usar la cadena del user agent?.
* Explique AJAX con tanto detalle como pueda.
* Explique cómo funciona JSONP (y cómo no es AJAX realmente)
* ¿Ha utilizado alguna vez templates en JavaScript?
* De ser asi, ¿qué bibliotecas ha usado?
* ¿Puede explicar en que consiste el "hoisting"?
* ¿Puede hablar sobre "event bubbling"?
* ¿Cuál es la diferencia entre un "atributo" y una "propiedad"?
* ¿Puede explicar en que consiste el "_hoisting_"?
* ¿Puede hablar sobre "_event bubbling_"?
* ¿Cuál es la diferencia entre un "_atributo_" y una "_propiedad_"?
* ¿Por qué es una mala idea extender objetos nativos de JavaScript?
* ¿Por qué es una buena idea extender objetos nativos de JavaScript?
* ¿Cuál es la diferencia entre el evento "document load" y el evento “document ready"?
* ¿Cuál es la diferencia entre el evento "_document load_" y el evento “_document ready_"?
* ¿Cuál es la diferencia entre `==` y `===`?
* Si tiene que obtener un parametro de la URL, ¿cómo lo harías?
* Explique la política de mismo origen (same-origin policy) y sus repercusiones en JavaScript.
* ¿Puede describir los patrones de herencia en JavaScript?
* Haga que este código funcione:
```javascript
[1,2,3,4,5].duplicator(); // [1,2,3,4,5,1,2,3,4,5]
```
* ¿Puede describir una estrategia para memorización (*memoization*, evitar repetir cálculos) en JavaScript?
* ¿Por qué reciben el nombre de sentencias ternarias? ¿Qué significa la palabra "ternaria"?
* Haga un ciclo `for` de `100` iteraciones que imprima **"fizz"** en los múltiplos de `3`, **"buzz"** en los múltiplos de 5 y **"fizzbuzz"** en los múltiplos de `3` y `5`
* De manera general, ¿por qué es una buena idea no usar el "ámbito" (scope) global de un sitio web?
* ¿Qué es el `arity` de una función?
* ¿Por qué reciben el nombre de sentencias ternarias? ¿Qué significa la palabra "_ternaria_"?
* ¿Qué es `"use strict";`? ¿Cuáles son las ventajas y desventajas de usarlo?
* Haga un ciclo `for` de `100` iteraciones que imprima **"fizz"** en los múltiplos de `3`, **"buzz"** en los múltiplos de `5` y **"fizzbuzz"** en los múltiplos de `3` y `5`
* De manera general, ¿por qué es una buena idea no usar el "ámbito" (scope) global de un sitio web?
* ¿Por qué usaría el evento `load`?, ¿usarlo representa alguna ventaja?, ¿conoce alternativas y el por qué usaría dichas alternativas?
* Explique en qué consiste una aplicación de una sola página y como hacer una que bajo los terminos del posicionamiento en los buscadores.
* ¿Qué tanto sabes acerca de las promesas en javascript? ¿Cónoce alternativas a ellas?
* Mencione las ventajas y desventajas de usar promesas en vez de callbacks.
* Menciona las ventajas y desventajas de escribir Javascript a través de otro lenguaje que compile y su resultado sea Javascript.
* ¿Qué herramientas y tecnias usa para depurar código Javascript?
* ¿Qué código utiliza para iterar sobre propiedades de un objeto y sobre arreglos?
* Explique la diferencia entre objetos mutables y objetos inmutables.
* Mencione un ejemplo de un objeto inmutable en javascript.
* Mencione las ventajas y desventajas de la inmutabilidad.
* ¿Cómo puede usar la inmutabilidad en su código?
* Explique la diferencia entre funciones sincronas y asincronas.
* ¿Qué es el `event loop`?
* ¿Cuál es la diferencia entre la pila de llamadas y la cola de tareas?
####<a name='codigojs'>Preguntas de código:</a>
#### <a name='codigojs'>Preguntas sobre pruebas de código:</a>
Pregunta: ¿Cuál es el resultado de la siguiente sentencia?
* Menciona ventajas y desventajas de realizar pruebas en el código
* ¿Qué herramientas usarías para probar la funcionalidad de tu código?
* ¿Cuál es la diferencia entre una prueba unitaria y una prueba de funcionalidad?
* ¿Cuál es el proposito de usar herramientas para verificar los estilos usados en el código?
#### <a name='performance'>Preguntas sobre rendimiento:</a>
* ¿Qué herramientas usarías para detectar un error en el rendimiento de tu código?
* ¿De qué formas podrías mejorar el rendimiento del scrolling en tu sitio web?
* Menciona las diferencias entre los terminos `layout`, `painting` y `compositing`.
#### <a name='network'>Preguntas sobre conectividad:</a>
* Tradicionalmente, ¿Por qué es mejor servir los recursos estaticos del sitio desde multiples dominios?
* Intenta explicar el proceso desde el momento en el cual ingresas una URL en el navegador hasta que termina de cargar la página en tu pantalla.
* ¿Cuáles son las diferencias entre `Long-polling`, `websockets` y `server-sent events`?
* Explique las siguientes cabeceras de respuesta y envio.
* `Expires`, `Date`, `Age` y `If-Modified-`
* `Do Not Track`
* `Cache-Control`
* `Transfer-Encoding`
* `Etag`
* `X-Frame-Options`
* ¿Qué son las acciones `HTTP`, explique las acciones HTTP que conozca.
#### <a name='codigojs'>Preguntas de código:</a>
_Pregunta: ¿Cuál es el valor de `foo`?_
```javascript
~~3.14
var foo = 10 + '20';
```
Pregunta: ¿Cuál es el resultado de la siguiente sentencia?
_Pregunta: ¿Cómo harías funcionar esto?_
```javascript
add(2, 5); // 7
add(2)(5); // 7
```
_Pregunta: ¿Cuál es el resultado de la siguiente sentencia?_
```javascript
"i'm a lasagna hog".split("").reverse().join("");
```
Pregunta: ¿Cuál es el valor de **window.foo**?
_Pregunta: ¿Cuál es el valor de `window.foo`?_
```javascript
( window.foo || ( window.foo = "bar" ) );
```
Pregunta: ¿Cuál es el resultado de los dos *alerts*?
_Pregunta: ¿Cuál es el resultado de los dos *alerts*?_
```javascript
var foo = "Hello";
(function() {
@ -159,22 +218,39 @@ var foo = "Hello";
alert(foo + bar);
```
Pregunta: ¿Cuál es el valor de **foo.length**?
_Pregunta: ¿Cuál es el valor de `foo.length`?_
```javascript
var foo = [];
foo.push(1);
foo.push(2);
```
####<a name='divertidas'>Preguntas divertidas:</a>
_Pregunta: ¿Cuál es el valor de `foo.x`?_
```javascript
var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};
```
_Pregunta: ¿Qué imprime el siguiente código?_
```javascript
console.log('one');
setTimeout(function() {
console.log('two');
}, 0);
console.log('three');
```
#### <a name='divertidas'>Preguntas divertidas:</a>
* ¿Qué es lo más genial que ha programado y qué es lo que más le enorgullece de ello?
* ¿Cuáles son sus partes favoritas de las herramientas de desarrollo que usa?
* ¿Tiene algún proyecto personal? ¿De qué tipo?
* ¿Cuál es su funcionalidad favorita de Internet Explorer?
* ¿Cómo te gusta tu café?
####<a name='contribuyentes'>Contribuyentes</a>
#### <a name='contribuyentes'>Contribuyentes</a>
Este documento se creó en 2009 como una colaboración de [@paul_irish](http://twitter.com/paul_irish) [@bentruyman](http://twitter.com/bentruyman) [@cowboy](http://twitter.com/cowboy) [@ajpiano](http://twitter.com/ajpiano) [@SlexAxton](http://twitter.com/slexaxton) [@boazsender](http://twitter.com/boazsender) [@miketaylr](http://twitter.com/miketaylr) [@vladikoff](http://twitter.com/vladikoff) [@gf3](http://twitter.com/gf3) [@jon_neal](http://twitter.com/jon_neal) [@sambreed](http://twitter.com/sambreed) y [@iansym](http://twitter.com/iansym).